我有一个有循环的有向图。 所有边都是加权的,权重可以是负数。 可能存在负循环。
我想找到一条从s到t的路径,它可以最小化路径上的总重量。 当然,当负循环存在时,它可以转为负无穷大。 但是,如果我不允许路径中的循环(不在原始图形中),该怎么办? 也就是说,一旦路径离开节点,它就不能再次进入节点。
这肯定避免了负面的无限问题, 但令人惊讶的是,谷歌搜索没有发现任何已知的算法。 最接近的是Floyd-Warshall算法,但它不允许负循环。
提前多多感谢。
编辑:我可能已经过多地概括了我原来的问题。实际上,我给出了具有非负边权重的循环有向图。但此外,每个节点也有积极的回报。我想找到一条最小化的路径(路径上的边缘权重之和) - (路径覆盖的节点奖励总和)。这肯定会转换为我发布的问题,但有些结构会丢失。从子模块分析中得到的一些暗示表明,这种激励问题并非NP难。非常感谢
答案 0 :(得分:2)
我将从this question复制我在CS理论Stackexchange上的答案:
没有重复顶点的路径称为simple-paths,因此您正在寻找具有负循环的图中最短的简单路径。
这可以从longest-path problem减少。如果你的问题有一个快速求解器,那么给定一个只有正边权重的图表,否定所有边权重并运行你的求解器将给出原始图中最长的路径。
因此你的问题是NP-Hard。