图表未加权且无向。
给定两个顶点s和t,以及步幅k,我想找到它们之间的最短路径:
可被k整除的长度
每个k"步骤"在路径中,从第一个算起,是一条简单的路径。
含义,最短的非简单路径,只能"跳跃"每一步(正好是k)的k个顶点,以及每一个"跳跃"必须是一个简单的子路径。
我认为这个问题等于构建第二个图G'其中(u,v)是G'中的边缘。如果在G中存在长度为k的路径,因为BFS扫描会给出所需的路径 - 但我还没能在合理的时间内构建这样的图形(显然它是一个NP问题) 。有替代算法吗?
答案 0 :(得分:2)
你所描述的问题总体上是NP难的,因为你可以减少汉密尔顿路径问题。具体来说,给定一个n节点图和一对节点s和t,你可以通过检查从s到t的最短(n-1) - 跨越路径的长度是否正好来确定是否存在从s到t的哈密顿路径。 -1,因为在那种情况下,从s到t的简单路径只通过一个节点一次。因此,如果允许k相对于n较大,则不应期望有一种特别有效的算法来解决此问题。
如果它有帮助,有一些快速算法可以在图中找到长的简单路径,这些路径可能对于合理的k值非常有效。特别是查看color-coding technique作为示例。