我经常面临通过强力检查给定大小的树木(图形)的某些属性的问题。这有什么好的伎俩吗?理想情况下,我只想检查每个同构类一次(但毕竟速度是最重要的)。
由于n通常小于32,所以非常欢迎有点狡猾的技巧:)我要求比“循环所有(n-1)-edge子集”更精确的算法,并检查n个节点上的树是否形成树。
答案 0 :(得分:3)
这是Knuth关于组合算法的计算机编程艺术卷。如果我没记错的话,那就是练习。既然他有这样的解决方案,我就指点你。
答案 1 :(得分:0)
一些谷歌搜索出现了以下算法描述:http://www.cs.auckland.ac.nz/compsci720s1c/lectures/mjd/treenotes.pdf。他们采用一种算法来枚举有根树,以枚举无根树。
显然,其他人已经证明这只需要每棵树的摊销常数时间,并且PDF显示了一些表现出来的性能测量结果。