Algorithm 具有遍历边约束的最短路径

Algorithm 具有遍历边约束的最短路径,algorithm,graph,shortest-path,Algorithm,Graph,Shortest Path,在一个项目中,我偶然发现了一个图形算法问题 还没能解决。问题如下: 您有一个有向加权图,并希望找到两个图之间的最短路径 访问指定节点时的开始节点和结束节点(非常类似于 ). 但是,除了节点和边之外,该图还具有“项”的概念, 它们驻留在节点上,当您进入该节点时,您将“拾取”。现在有一个额外的约束,即边只能是 如果您已获得该特定边的必要项I,则将遍历。 把它想象成门的钥匙;您需要先获得密钥,然后才能 穿过门 我只能想到以指数方式爆炸的暴力方法。有谁能想出更好的办法或者给我指一个解决这个问题的地方吗?

在一个项目中,我偶然发现了一个图形算法问题 还没能解决。问题如下:

您有一个有向加权图,并希望找到两个图之间的最短路径 访问指定节点时的开始节点和结束节点(非常类似于 ). 但是,除了节点和边之外,该图还具有“项”的概念, 它们驻留在节点上,当您进入该节点时,您将“拾取”。现在有一个额外的约束,即边只能是 如果您已获得该特定边的必要项I,则将遍历。 把它想象成门的钥匙;您需要先获得密钥,然后才能 穿过门


我只能想到以指数方式爆炸的暴力方法。有谁能想出更好的办法或者给我指一个解决这个问题的地方吗?或者让我相信这很难(从计算角度来说)?谢谢你的帮助

您可以尝试保存算法的修改版本。这是解决车辆路径问题的一种启发式方法。也许你可以反转它,为想要的钥匙创建一个拾取功能。它用于交货和最短路径问题。

这个问题是NP-难优化问题。哈密顿路径问题有一个简单的简化:


在原始图形的每个顶点上放置唯一项。构造仅连接到目标顶点的汇顶点。让这两个顶点之间的边需要所有的项目。

有多少不同的项目?只是有点取决于游戏(你可能已经猜到这是为了穿越一个视频游戏),但我想说的顺序是30-40。项目上有什么好的顺序吗?也就是说,这些项目是否大致遵循线性级数?理想情况下,它们会遵循线性级数(在大多数游戏中经常如此),但这不能保证。tskuzzy正在构建一个图形,在该图形中,您必须访问每个顶点才能从开始到结束。假设每条边具有相同的权重。如果一个图有一个哈密顿圈,那么这个圈就是最优解。如果最优解不是哈密顿圈,那么图就没有哈密顿圈。所以,如果你给我你的算法,我可以用它来解决任何图的HC。