我想生成所有带有n个顶点的DAG,直到同构 - 也就是说,没有重复的未标记DAG。是的,我知道这些很多,但我主要关注的是小数字(例如,n小于10),其中的东西仍然易于处理。
明显的方法,例如添加所有可能的边缘组合有两个主要缺点:
n
增长时。 答案 0 :(得分:0)
您可以从simple complete graph Kn开始,其中n是图表的顺序,然后枚举其所有spanning trees。 The algorithm是一个经过修改的DFS,它使用回溯并避免bridges(以保持生成连接的树),同时探索所有可能的不同组合。
根据Cayley's formula,有n^(n-2)
(其中^
表示提升权力)跨越Kn上的树,因此您最糟糕的情况可能看起来像9^7=4782969
并包括重复。
这也让人联想到一个"子问题"在Motif Detection中,some algorithms(或this one)的目标是生成all simple connected graphs (not limited to trees) of order n (motifs),然后将图形分解为n个图案。所以,这些文献也可能对你有用。
希望这有帮助。