我想與Ñ頂點,其中每個頂點有ķ直接後繼者和ķ直接前任創建該組的所有有向圖的。 Ñ和ķ不會那麼大,而圍繞Ñ = 8和ķ = 3該集包括環狀和無環圖。每個圖形將作爲抽樣大量加權圖形的模板。枚舉圖
我的興趣是在拓撲圖案的作用,所以我不想品嚐任何兩個圖是相互對稱,重量在那裏對稱意味着沒有頂點的排列在它變換一個圖形存在進入另一個。
甲幼稚的解決方案是考慮2 ^(Ñ *(Ñ - 1))鄰接矩陣和消除所有那些(大部分),用於其中直接後繼者或前導者限制被違反。對於ñ = 8,這仍然有足夠的位來表示,並簡單地枚舉每個矩陣在uint64_t
內舒適。
跟蹤行數和列數將是另一個改進,但真正的瓶頸是將圖添加到結果集中,此時我們需要測試集合中已存在的每個其他圖的對稱性。對於n = 8每個插入操作已經超過40,000個排列。
任何人都可以引用我的算法,我可以閱讀,可以以更聰明的方式做到這一切?是否有C,C++,Java或Python的圖庫,已經實現了這樣一個全面的圖形生成器?是否有一個存儲庫,其中某人已經「合理」列出所有圖表n和k?
這聽起來像是「計算機程序設計藝術」第4卷中的內容。 – templatetypedef