遍历给定大小的所有树

时间:2011-02-13 18:21:17

标签: algorithm math graph brute-force

我经常面临通过强力检查给定大小的树木(图形)的某些属性的问题。这有什么好的伎俩吗?理想情况下,我只想检查每个同构类一次(但毕竟速度是最重要的)。

由于n通常小于32,所以非常欢迎有点狡猾的技巧:)

我要求比“循环所有(n-1)-edge子集”更精确的算法,并检查n个节点上的树是否形成树。

2 个答案:

答案 0 :(得分:3)

这是Knuth关于组合算法的计算机编程艺术卷。如果我没记错的话,那就是练习。既然他有这样的解决方案,我就指点你。

答案 1 :(得分:0)

一些谷歌搜索出现了以下算法描述:http://www.cs.auckland.ac.nz/compsci720s1c/lectures/mjd/treenotes.pdf。他们采用一种算法来枚举有根树,以枚举无根树。

显然,其他人已经证明这只需要每棵树的摊销常数时间,并且PDF显示了一些表现出来的性能测量结果。