找到属于图的两个不相交子集的任何两个节点之间的最短路径

ani*_*udh 5 algorithm graph shortest-path graph-algorithm

有一个无向图,其中每个节点都分配了一些颜色.我必须找到从任何蓝色节点到任何红色节点的最短路径.(其他颜色也可能存在于图表中,虽然它无关紧要,但不知道有多少颜色.)我怎样才能在多项式时间内完成?

tem*_*def 7

作为提示,向图中添加两个新节点 - 将它们称为s和t.将s连接到每个蓝色节点,边缘为cost 0,每个红色节点为t,边缘为cost 0.然后找到从s到t的最短路径.

希望这可以帮助!

  • @lbp在多项式时间内有很多简单的方法可以解决它,你可以做Floyd-Warshall并找到最小距离的对(蓝色,红色).你可以做Dijkstra |红色|*|蓝色| 时间,非常低效,仍然是多项式的.但这个答案提供了一种有效的方法,而不仅仅是多项式. (2认同)