您的位置:首页 > 其它

知识:树同构判断

2016-07-27 21:45 197 查看
如何判断两个无根树是同构的??同样的我们想办法把每棵树hash成一个数字,通过数字判断是否相同就行

对于HDU5732 subway来说 http://acm.hdu.edu.cn/showproblem.php?pid=5732 (2016多校第一场的题)

10w个点如何判断同构??

题解如下:

这个题是一个树的同构判断,想办法用一个和节点顺序无关的哈希函数将树表示出来即可。 这里提供一种方法:首先求解树的中点(重心即可),

然后将中点作为根。只有一个结点的子树哈希值为 1。选一个比较大的质数P和一个特别大的质数Q。对于每一颗树,把它的所有子树的哈希

值排序。然后hash=sum(P^i∗hash[i])%Q,就能算出来总体的哈希值。有两个中点的树两个 中点都试一下。为了保险可以检查下哈希值有没有重的。

这样就可以递归hash出一棵树

对于上面那道题知道了这个,就很简单了

感悟:学无止境,应该不断增长自己的姿势
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: