在处理项目时,我偶然发现了图算法问题 一直无法解决。问题如下:
你有一个定向加权图,想要找到一个最短的路径 访问指定节点时启动节点和结束节点(非常类似 Find the shortest path in a graph which visits certain nodes)。 但是,除了节点和边,该图还具有“项”的概念, 它们驻留在节点上,当您进入该节点时,您将“拾取”它们。现在有一个额外的约束,边缘只能是 如果您已获得必要的项目 I ,则会遍历该特定边缘。 把它想象成一扇门的钥匙;你需要在能够之前获得一把钥匙 穿过门。
我只能想到以指数方式爆炸的蛮力方法。任何人都可以想到更好的事情或指向一个解决这个问题的地方吗?或者也许说服我这是“硬”(从计算上说)?谢谢你的帮助!
答案 0 :(得分:2)
这个问题是NP-HARD以最佳方式解决。哈密尔顿路径问题有一个简单的减少:
在原始图表的每个顶点上放置唯一的项目。构造仅连接到目标顶点的接收器顶点。让这两个顶点之间的边需要所有项。
答案 1 :(得分:1)
您可以尝试修改版本的保存算法。这是解决车辆路径问题的启发式方法。也许你可以反转它并为所需的键创建一个拾取功能。它用于交付和最短路径问题。