通过节点子集中至少一个节点的最短路径



我想实现一个python函数,该函数在有向加权图中生成从源节点到目标节点的最短路径。它必须包括图中节点子集中的至少一个节点,并且路径必须是该子集中尽可能短的路径。如何在O(ElogV(时间内实现这一点,其中E和V是边和节点的数量?

从源节点运行Djikstra。然后,反转图形中的所有边。在这个新图形上,从目标节点运行Djikstra。距离源节点(在原始图中(和距离目标节点(在反向图中(的距离之和最小的节点是最短路径经过的节点。一旦识别出该节点,就可以读取最短路径中的实际节点。

Djikstra需要O(E log V)时间,我们运行两次。找到和最小的节点需要O(V)时间,读出答案需要O(E)时间。因此,该算法的运行时间为O(E log V)


根据这些建议,这个答案是故意不完整的。如果几天后你仍然被困,请发表评论,我可以提供进一步的建议

最新更新