我需要在有向加权循环图上找到节点a
和b
之间最便宜的路径,最便宜的定义为从给定的任意costfunc
中引出最小的返回值。通常情况下,Djikstra将是我认为的最佳选择,除了costfunc
采用整个路径 - 添加单个节点的效果未知(我想我可以只需运行带有和不带给定节点的costfunc
并使用差异......)。
我怎么能这样做?
答案 0 :(得分:4)
如果没有costfunc
的某些限制,那么您可以比尝试每条可能的路径做得更好。假设
costfunc = 1 / (sum of edge weights)
然后你的问题(在循环图上)是NP难Longest Path Problem。
而
costfunc =
sum of edge weights if path length = N
infinity otherwise
你知道NP完整Travelling salesman problem