社区
数据结构与算法
帖子详情
树同构
lzy18lzy
2009-08-04 01:50:58
有两棵树,一大一小,怎判断能否把大的树,修剪成小的那棵树,也可以叫做同构!!!
求方法,简单快速就最好!!!
...全文
539
17
打赏
收藏
树同构
有两棵树,一大一小,怎判断能否把大的树,修剪成小的那棵树,也可以叫做同构!!! 求方法,简单快速就最好!!!
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lzy18lzy
2009-09-10
打赏
举报
回复
继续顶下
lzy18lzy
2009-08-13
打赏
举报
回复
[Quote=引用 12 楼 fancymouse 的回复:]
dp[i,j]表示大树以i为根节点的子树修剪以后是否可以匹配小树以j为根节点的子树,以这个状态进行树型dp,每次转移需要做最大匹配,dp[i,j]=true当且仅当最大匹配数等于j的孩子树。复杂度应该4次。如果节点无序的话小树还需要枚举根节点。
[/Quote]
这个DP方法不错;
枚举可以这样剪枝:(枚举大树)
取一个小树最大分枝节点,作为小树根.然后枚举大树节点,
以当前大树的节点根的分枝数>小树当前根节点数&& 以当前大树的节点为根时的树最大深度>=小树当前深度
就可以用当前的大树节点为根,与小树比较
FancyMouse
2009-08-13
打赏
举报
回复
说什么hash啦最小表示法啦的看清lz题意。大树可以修剪,i.e.这是子树同构问题不是树同构。光用hash/最小表示乃们想枚举所有子树?
liao05050075
2009-08-13
打赏
举报
回复
树的同构判断可以使用Hash
http://hi.baidu.com/clumsydragon/blog/item/8695b203bc7a98713812bb60.html
FancyMouse
2009-08-13
打赏
举报
回复
1c1
< dp[i,j]=true当且仅当最大匹配数等于j的孩子树
---
> dp[i,j]=true当且仅当最大匹配数等于j的孩子数
FancyMouse
2009-08-13
打赏
举报
回复
dp[i,j]表示大树以i为根节点的子树修剪以后是否可以匹配小树以j为根节点的子树,以这个状态进行树型dp,每次转移需要做最大匹配,dp[i,j]=true当且仅当最大匹配数等于j的孩子树。复杂度应该4次。如果节点无序的话小树还需要枚举根节点。
dl551djs
2009-08-12
打赏
举报
回复
顶
lzy18lzy
2009-08-11
打赏
举报
回复
顶下
黄舒颖 咸丫蛋
2009-08-07
打赏
举报
回复
楼主下面解释了一下什么叫同构。
我的意思是有没有可能有一些数学上的统计数字,或一个简单的式子
比如对于某个节点,到其它节点距离,刚好和子树的距离刚好一一相等,则相等(很可能不正确噢)
能够代表同构,而不需要去全局搜。
[Quote=引用 5 楼 superspring 的回复:]
引用 4 楼 vshuang 的回复:
这种方法肯定可以的。
不过,复杂度比较高。而且左子树和右子树还可以换位。
还有更好又更简单的方法么?
帮顶
引用 3 楼 superspring 的回复:
你搞错了吧,同构的话首先两棵树大小应该一样吧,可能你所说的同构跟一般定义不一样。
回归你的问题,要把大树修改成小,必须对两颗树从根开始进行递归,
以二叉树为例,对于每个对应节点,如果
大树有左右子树,小树可以有左右子…
[/Quote]
lzy18lzy
2009-08-07
打赏
举报
回复
[Quote=引用 2 楼 ToBeTough 的回复:]
是不俩棵数的接点数目一样且不完全相同就是同构?是的话,就简单拉。
[/Quote]
所谓同构,就是可以通过旋转,得出来的图形,是一模一样...
lzy18lzy
2009-08-07
打赏
举报
回复
这是两棵多叉树来的100个节点以内,除了树深度剪枝+树分枝数剪枝,还有什么加速搜索方法
lzy18lzy
2009-08-07
打赏
举报
回复
请看这个题目:
http://acm.nuaa.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=1295
黄舒颖 咸丫蛋
2009-08-05
打赏
举报
回复
这种方法肯定可以的。
不过,复杂度比较高。而且左子树和右子树还可以换位。
还有更好又更简单的方法么?
帮顶
[Quote=引用 3 楼 superspring 的回复:]
你搞错了吧,同构的话首先两棵树大小应该一样吧,可能你所说的同构跟一般定义不一样。
回归你的问题,要把大树修改成小,必须对两颗树从根开始进行递归,
以二叉树为例,对于每个对应节点,如果
大树有左右子树,小树可以有左右子树,也可以有右子树,也可以没有子树,
大树有左子树,小树可以有左子树,可以没有子树,
大树有右子树,小树可以有右子树,可以没有子树,
大树没有子树,小树可以不可以有子树
递归进…
[/Quote]
superspring
2009-08-05
打赏
举报
回复
[Quote=引用 4 楼 vshuang 的回复:]
这种方法肯定可以的。
不过,复杂度比较高。而且左子树和右子树还可以换位。
还有更好又更简单的方法么?
帮顶
引用 3 楼 superspring 的回复:
你搞错了吧,同构的话首先两棵树大小应该一样吧,可能你所说的同构跟一般定义不一样。
回归你的问题,要把大树修改成小,必须对两颗树从根开始进行递归,
以二叉树为例,对于每个对应节点,如果
大树有左右子树,小树可以有左右子树,也可以有右子树,也可以没有子树,…
[/Quote]
而且左子树和右子树还可以换位。?不明白
这个复杂度不高啊,要做的就是访问小树的所有节点,没办法访问更少了,只能说递归可能不够快
superspring
2009-08-04
打赏
举报
回复
你搞错了吧,同构的话首先两棵树大小应该一样吧,可能你所说的同构跟一般定义不一样。
回归你的问题,要把大树修改成小,必须对两颗树从根开始进行递归,
以二叉树为例,对于每个对应节点,如果
大树有左右子树,小树可以有左右子树,也可以有右子树,也可以没有子树,
大树有左子树,小树可以有左子树,可以没有子树,
大树有右子树,小树可以有右子树,可以没有子树,
大树没有子树,小树可以不可以有子树
递归进行判断,只要有一个几点不满足上面条件就返回 false
否则递归下去直到遍历小树的每个点
ToBeTough
2009-08-04
打赏
举报
回复
是不俩棵数的接点数目一样且不完全相同就是同构?是的话,就简单拉。
LeonTown
2009-08-04
打赏
举报
回复
先mark
树
同构
简述
引入
树
是一种常见的数据结构。 我们把NNN个点,N−1N-1N−1条边的联通无向图称为
树
。 对于两棵
树
T1和T2T_1和T_2T1和T2,如果能够把
树
T1T_1T1的所有点重新标号,使得
树
T1和T2T_1和T_2T1和T2完全相同,那么称这两棵
树
是
同构
的。也就是说,它们具有相同的形态。 下面介绍如何判断
树
同构
。 解决
树
同构
问题我们一般使用
树
哈希.哈希方式很简单,根据下面这个式子来算: Fi=1+∑v∈{son[x]}f[v]∗prime[siz[v]]F_i=1+\sum_{v\in\{son[
树
同构
判定算法
树
同构
判定
树
同构
判定 图
同构
与
树
同构
同的
同构
问题还没有有效算法。
树
的
同构
本质上寻找不同
树
之间的双射关系。 通过对
树
编码,将
树
的
同构
问题转化为编码比较问题。 有根
树
的
同构
严格强于图
同构
关系。 如上,图
同构
的两张图转化成
树
,如果选取的根不同,则
树
不
同构
。 如何选取根? 概念定义: dis(v1, v2)表示v1到v2点的距离 ex(v), 偏心率, ex(v)保存
树
中距离v最远的点的距...
树
同构
(Tree Isomorphism)
是图论中的一个经典问题,主要研究两棵
树
在结构上是否“相同”或“等价”,即是否存在一种节点的一一对应关系,使得两棵
树
的结构完全一致(不考虑节点的具体标签或位置)。
树
同构
-
树
哈希
树
同构
-
树
哈希 题目描述 题解 对于无根
树
,由于数据范围较小,可以直接以每个点为根dfs一次,维护其
树
哈希的值,然后用并查集维护 (若数据范围大一些,可以以
树
的重心跑dfs) 代码实现 #include<bits/stdc++.h>//
树
哈希 #define M 100009 #define LL unsigned long long using namespace std; i...
洛谷 P5043 【模板】
树
同构
([BJOI2015]
树
的
同构
)题解
树
哈希
树
的重心
树
哈希
树
的重心 异或哈希 洛谷题解 C++代码 附注释
数据结构与算法
33,026
社区成员
35,334
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章