在最小权重生成树算法后选择头节点

时间:2012-02-27 22:16:14

标签: algorithm graph-algorithm

我已经实现了Prim's algorithm来查找图表的最小权重生成树,并且工作正常。

现在我想在生成树中选择“最佳”头部。 “最好”是指更多平衡头,我应该在treeView UI中显示树。我确信有很多算法,但我不知道如何命名问题!

3 个答案:

答案 0 :(得分:4)

您可以使用的一个标准是从节点到所有其他节点的平均距离。选择平均距离最小的节点。您也可以尝试平均距离等。

答案 1 :(得分:0)

嗯,splay treesAVL Trees可以满足您的要求,但每个节点最多只能有2个孩子。 您可以尝试修改它们。问题可能是Form a tree which is as wide as possible

答案 2 :(得分:0)

您可以使用“最里面”节点,最大化叶子的最小距离。为了计算它,我认为以下算法可能有效(我没有验证它):

S = set of all leaves of the tree
foreach node in S: mark(node)
repeat:
  # at each iteration, S is the set of all nodes at
  # a given min distance to a leave
  # initially this distance is 0, then 1, etc.
  S' = empty set
  foreach node in S:
    parent = parent(node)
    if !marked(parent): S' += parent; mark(parent)
  if S' is empty then S contains all innermost nodes, we are done
  S = S' and continue