具体图和一些关于最短路径的声明?
我陷入了一个具有挑战性的问题,我在笔记上读到。
我们知道在这个图中, 任意两个顶点之间的最短路径位于Minimum Spanning Tree
(MST)上。图G
(无negative
权和所有权重distinct
)给出,我们知道在这个图中任何两个顶点之间的最短路径是Minimum Spanning Tree
(MST)。 (对于任何一对顶点和它们之间的任何最短路径,它都位于MST上)。 以下哪项是True
?
1)图G是一棵树。
2)每个{u,v}边的权重至少与从u到v的最短路径中的最重边相等(相同)。
3)任意两个顶点之间的最短路径u , v是唯一的。
4)假设从顶点s
,Prime(用于计算MST)和Dijkstra(用于计算最短路径)开始,按照相同的顺序处理和添加顶点到它们的树中。 (两个算法在处理和添加节点时以相同的顺序工作)
如何验证我这些选项? 这是一个充满挑战的问题。
例如: V = {1, 2, 3}
, E = {(1, 2, 1), (2, 3, 2), (1, 3, 4)}
(每个边被编码为一个元组(一个顶点,另一个顶点,权重))。 它不是一棵树,但所有最短路径都在最小生成树上。
是。 如果此边的重量小于最短路径中最重边的重量,则该边比最短路径短(因为没有负重的边)。 因此,最短路径不是最短的。 这是一个矛盾。
没有*。 假设我们有一个包含两个顶点{1, 2}
和一个边的图,其权重为零。 第一个和第二个顶点之间有无限多的最短路径( [1, 2], [1, 2, 1, 2], ...
)
*但是,任何两个顶点之间都有一个唯一的简单最短路径,因为树中任意两个顶点之间只有一条简单路径,由于问题陈述的存在,任何不完全位于最小生成树中的路径都会更长。在具有不同边权重的图中只有一个最小生成树。
不考虑这棵树: V = {1, 2, 3, 4}
, E = {(1, 2, 3), (2, 3, 2), (1, 4, 4)}
。 假设开始顶点是1
。 Prim算法将采用第一个顶点,而不是第二个顶点,而第三个顶点只在第四个顶点之后。 但是Dijkstra算法将在第三个顶点之前占据第四个顶点。 发生这种情况的原因是第三个顶点在处理前两个顶点后更靠近树,但距起始节点的总距离较大。
我不想给出完整的答案,但这里是你如何处理它:
你能否将边缘添加到树中,使它不再是树,并且该树还包含所有最短路径?
如果边缘比最重的边缘短,会发生什么?
这是令人困惑的,因为问题显示“任何两个顶点之间的最短路径在MST上”,但没有解决可能存在多条最短路径的事实。 所以你可以假设“树上至少有一条最短路径”。 在这种情况下,只需通过MST连接两个顶点与重量等于成本的边,就可以得到答案。
同样,你应该从顶点没有以相同顺序添加的情况开始