知识:树同构判断
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出一棵树
对于上面那道题知道了这个,就很简单了
感悟:学无止境,应该不断增长自己的姿势
对于HDU5732 subway来说 http://acm.hdu.edu.cn/showproblem.php?pid=5732 (2016多校第一场的题)
10w个点如何判断同构??
题解如下:
这个题是一个树的同构判断,想办法用一个和节点顺序无关的哈希函数将树表示出来即可。 这里提供一种方法:首先求解树的中点(重心即可),
然后将中点作为根。只有一个结点的子树哈希值为 1。选一个比较大的质数P和一个特别大的质数Q。对于每一颗树,把它的所有子树的哈希
值排序。然后hash=sum(P^i∗hash[i])%Q,就能算出来总体的哈希值。有两个中点的树两个 中点都试一下。为了保险可以检查下哈希值有没有重的。
这样就可以递归hash出一棵树
对于上面那道题知道了这个,就很简单了
感悟:学无止境,应该不断增长自己的姿势
相关文章推荐
- Windows的免費hMailServer搭配SpamAssassin過濾垃圾郵件:安裝與設定
- [工具] Firemonkey Style 调色工具(可另存 Style 文件)
- 语音合成与语音识别小例子
- activity生命周期
- HDU 1083 COURSES 【二分图最大匹配】
- Date和Calendar类的一些使用
- 中兴盒子第三方软件通用教程安装教程
- 第一章+第二章阅读笔记
- Linux中的信号(2)
- 自动对焦的原理
- Java Map集合的详解
- Java中的数组
- 原生js,JQuery查找元素,修改类名
- UVALive 3635 Pie 【二分】
- 2017百度实习生招聘算法题
- mysql的四种类型时间
- coderforces 348A Mafia(二分)
- 线索二叉树
- ubuntu14.04+cuda-7.5(deb)+cuDNN+openCV+caffe 安装(安装笔记一)
- qsort和sort