找到具有多个偶数绿色边缘的最小距离
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 将告诉最短距离与奇数个绿色边缘。)
我们的想法是,每当我们遍历绿色边缘时,我们就从偶数图切换到奇数图。
你的想法听起来好像只考虑了有两条连续绿色边的路径。这可能适用于某些图表,但并非全部,因为在某些情况下最佳路线可能不包括连续的绿色边缘。
更新
对于您评论中的图表:
新图表如下所示:
大家好,我是一名计算机科学专业的学生,大二。在学习期间,我被一个我无法解决的问题卡住了,一个我为了扩展我的知识而接触的问题。 问题:有一个无向图,具有正权重的边,我必须找到我之间的最小距离,此外该图有两种类型的边 - 蓝色和绿色。我需要找到最小距离并且它在树中的绿色边缘的数量是偶数。
我在想一个基于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 将告诉最短距离与奇数个绿色边缘。)
我们的想法是,每当我们遍历绿色边缘时,我们就从偶数图切换到奇数图。
你的想法听起来好像只考虑了有两条连续绿色边的路径。这可能适用于某些图表,但并非全部,因为在某些情况下最佳路线可能不包括连续的绿色边缘。
更新
对于您评论中的图表:
新图表如下所示: