作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
给定一个没有父节点、叶节点和子节点概念的通用图结构 G=(V,E)
是否有算法(或算法序列)可以找到节点但只有邻居关系:
1) 如果 G
是否是树(检查 |V| = |E|+1
是否足够?)
2) 如果图实际上是一棵树,它的叶子和中心呢? (即最小化树深度的图的节点)
谢谢
最佳答案
如果树的“中心”定义为“使树深度最小的图的节点”,找到它比找到直径更容易。
d[] = degrees of all nodes
que = { leaves, i.e i that d[i]==1}
while len(que) > 1:
i=que.pop_front
d[i]--
for j in neighbors[i]:
if d[j] > 0:
d[j]--
if d[j] == 1 :
que.push_back(j)
队列中剩下的最后一个是中心。
您可以通过考虑直径路径来证明这一点。为了简化,我们假设直径路径的长度是奇数,因此路径的中间节点是唯一的,我们称该节点为 M,
我们可以看到:
关于algorithm - 如何查找图是否是树及其中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13113430/
我是一名优秀的程序员,十分优秀!