当图的节点具有权重时,计算有向无环图的关键路径的最佳方法(关于性能)是什么?
例如,如果我具有以下结构:
Node A (weight 3) / \ Node B (weight 4) Node D (weight 7) / \ Node E (weight 2) Node F (weight 3)
关键路径应为A-> B-> F(总重量:10)
我对“关键路径”一无所知,但是我想你是这个意思。
只有遍历整棵树然后比较长度,才有可能在具有权重的非循环图中找到最长的路径,因为您从未真正知道其余树的加权方式。您可以在Wikipedia上找到有关树遍历的更多信息。我建议您进行预遍历,因为它很容易实现。
如果您要经常查询,您可能还希望通过插入时有关其子树权重的信息来增加节点之间的边缘。这是相对便宜的,而重复遍历可能会非常昂贵。
但是,如果您不这样做,没有什么能真正使您摆脱完整遍历的。顺序并不重要,只要您进行 遍历 并且永远不会两次走相同的路径即可。