Joh*_*ohn 10 algorithm tree graph-theory
我有一个问题,这是我的计划的一部分.
对于树T =(V,E),我们需要在树中找到节点v,其最小化从v到任何其他节点的最长路径的长度.
那么我们如何找到树的中心?是否只能有一个中心或更多?
如果有人能为我提供良好的算法,那么我就可以了解如何融入我的计划.
考虑一个有两个节点的树?哪个是中心?任何一个都足够了,一棵树可以有一个以上的中心.
现在,想想成为中心意味着什么.如果所有分支都是相同的高度,则中心是根(所有路径都通过根).如果分支具有不同的高度,那么中心必须是根或在具有最大高度的分支中,否则最大路径大于最高分支的高度,并且根将是更好的选择.现在,我们需要看最高的分支到底有多远?最高分支(从根部)到下一个最高分支之间的高度差异的一半(如果差异最多为1根则足够).为什么,因为当我们沿着最高的分支向下移动一级时,我们将通向下一个最高分支的最深节点的路径延长一个,并将到当前分支中最深节点的距离减少一个.最终,当你穿过深度差异的一半时,它们将是平等的.现在,当我们走下最高的分支时,我们只需要在每个级别选择最高的子分支.如果多个具有相同的高度,我们只需任意选择一个.
基本上,您正在做的是找到图中最长的路径,即树的最高分支与下一个最高分支之间的距离,然后在该分支上找到中间节点.因为可能存在与最长路径长度相同的多条路径,并且最长路径的长度可能是均匀的,所以您有多个可能的中心.
| 归档时间: |
|
| 查看次数: |
9257 次 |
| 最近记录: |