找到具有多个偶数绿色边缘的最小距离

Find a minimum distance with a number of even green edges

大家好,我是一名计算机科学专业的学生,​​大二。在学习期间,我被一个我无法解决的问题卡住了,一个我为了扩展我的知识而接触的问题。 问题:有一个无向图,具有正权重的边,我必须找到我之间的最小距离,此外该图有两种类型的边 - 蓝色和绿色。我需要找到最小距离并且它在树中的绿色边缘的数量是偶数。

我在想一个基于Dijkstra算法的算法。 让我们从 s 开始 每次我们以最少的人数去船头。 如果我们必须去一个绿色顶点 - 在那之后我们尝试去 - 另一个绿色顶点。

我试着画出我的想法,但它没有正常工作。

为什么我的想法不能正常工作?我错过了什么?感谢您的帮助。

我会构建一个新图。

对于原图中的每个顶点i,构造新图中的两个顶点,编号为2i和2i+1。

对于每条蓝色边i到j,构造边2i到2j和2i+1到2j+1。 对于每个绿色边 i 到 j,构造边 2i 到 2j+1 和 2i+1 到 2j。

然后Dijkstra算法在从2i到2j的新图上会告诉你从顶点i到j的最短距离,绿色边数是偶数。 (2i 到 2j+1 将告诉最短距离与奇数个绿色边缘。)

我们的想法是,每当我们遍历绿色边缘时,我们就从偶数图切换到奇数图。

你的想法听起来好像只考虑了有两条连续绿色边的路径。这可能适用于某些图表,但并非全部,因为在某些情况下最佳路线可能不包括连续的绿色边缘。

更新

对于您评论中的图表:

新图表如下所示: