![](/img/trans.png)
[英]How can I find strongly-connected components within larger strongly-connected components?
[英]Given a set of vertices, how do you generate a strongly-connected directed graph with a near-minimal amount of edges?
我正在嘗試對我的圖類的dijkstras算法進行測試。 為此,我生成一個包含幾千個頂點的圖形,然后通過隨機添加數千條邊來連接圖形,直到連接圖形為止。 然后,我可以反復在任意兩個隨機頂點之間進行搜索,並確保它們之間存在路徑。 問題是,我經常最終得到一個幾乎密集的圖形,因為我使用鄰接列表表示,導致我的搜索算法非常慢。
問題 :給定一組頂點V,如何生成一個強連通的有向圖,其邊緣明顯少於相同頂點上的密集圖?
我在考慮簡單地做以下事情:
vertex 1 <--> vertex 2, vertex 2 <--> vertex 3, ..., vertex n-1 <--> vertex n
然后在整個圖形中隨機添加類似n / 10的邊緣,但這似乎不是提出隨機圖形結構來測試我的搜索算法的最佳方式。
一種方法是維護一組強連接組件(從|V|
單頂點組件開始),並在每次迭代中,通過將每個組件的隨機頂點連接到一個連接組件,將它們的一些隨機子集合並為一個連接組件下一個隨機頂點,形成一個循環。
這將產生非常稀疏的圖形,因此根據您的使用情況,您可能還想要拋出一些額外的隨機邊緣。
編輯:直覺我認為你在決定在一次迭代中合並多少組件時,你想要使用指數分布。 不過,我對此沒有任何真正的支持。
我不知道是否有更好的方法,但至少這似乎有效:
我認為這可能有用,雖然拓撲結構不是真正隨機的,但它會像一個由連接在一起的較小圖形組成的大循環一樣循環。 但根據您需要測試的算法,這可能會派上用場。
編輯:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.