在包含最多两个红色边的图中找到最短路径

时间:2015-11-26 22:50:34

标签: algorithm graph-theory dijkstra

问题是: enter image description here

我知道我们应该将图形复制到G1和G2中,并且可能使用Dijstra的算法。我不确定我应该如何连接G1和G2,以便我能为这个问题找到正确的解决方案。

1 个答案:

答案 0 :(得分:4)

你几乎得到答案:

  1. 再创建两个图表副本,因此您有G,G1和G2。
  2. 从G2中删除红色边缘,将G1中的每个红色边缘更改为指向G2中相应的顶点而不是G1,并将G中的每个红色边缘更改为指向G1中的相应顶点。
  3. 现在,每个有2条红色边的路径都以G2结尾,而所有有2条红色边的路径最终都以G2结尾。类似地,所有具有1个红色边缘的路径在G1中结束。使用Dijkstra算法找到从G中的s到G,G1和G2中所有顶点的最短路径。
  4. 对于G中的每个顶点,查看G,G1和G2中相应顶点的路径,取最短的路径,然后将其转换回原始图形。 (因为红色边缘少于2的路径也可以接受)