我想与Ñ顶点,其中每个顶点有ķ直接后继者和ķ直接前任创建该组的所有有向图的。 Ñ和ķ不会那么大,而围绕Ñ = 8和ķ = 3该集包括环状和无环图。每个图形将作为抽样大量加权图形的模板。枚举图
我的兴趣是在拓扑图案的作用,所以我不想品尝任何两个图是相互对称,重量在那里对称意味着没有顶点的排列在它变换一个图形存在进入另一个。
甲幼稚的解决方案是考虑2 ^(Ñ *(Ñ - 1))邻接矩阵和消除所有那些(大部分),用于其中直接后继者或前导者限制被违反。对于ñ = 8,这仍然有足够的位来表示,并简单地枚举每个矩阵在uint64_t
内舒适。
跟踪行数和列数将是另一个改进,但真正的瓶颈是将图添加到结果集中,此时我们需要测试集合中已存在的每个其他图的对称性。对于n = 8每个插入操作已经超过40,000个排列。
任何人都可以引用我的算法,我可以阅读,可以以更聪明的方式做到这一切?是否有C,C++,Java或Python的图库,已经实现了这样一个全面的图形生成器?是否有一个存储库,其中某人已经“合理”列出所有图表n和k?
这听起来像是“计算机程序设计艺术”第4卷中的内容。 – templatetypedef