我有一个代表城市的图表。我知道感兴趣的地方的位置(节点,具有重要性值),我住的酒店的位置,节点的连接方式,它们之间的遍历时间以及经纬度。没有问题从时间转换为距离,反之亦然。
目标是游览城市,最大化每天的重要性,但限制一天的旅行时间为10小时。一天从酒店开始和结束。我有一个工作的A *算法选择最低值,但没有启发式,我想现在让它成为BB。考虑到这一点:
现在假设一个节点的重要性在1-4之间。为了将其考虑在内,一个想法可能是g(邻居)= g(当前)+(edge_cost / Importance ^ 2)。假设这是有效的(如果没有,为什么?):
最后:
顺便说一下,这里的目的首先是寻路,第二是优化。
答案 0 :(得分:1)
这实际上看起来像旅行商问题(TSP)和背包问题(KP)的组合。它在这方面的KP:背包容量为10(一天可用的总小时数),位置是项目。项目值等于位置值。物品重量等于前往该地点所需的时间(加上返回酒店的旅行地点)。挑战源于这样一个事实:物品的重量是未知的,直到您通过所选位置解决最佳游览 - 进入TSP和寻路。
一种方法可能是使用路径寻找算法(例如A *,Bellman-Ford或Dijkstra算法)主要用于计算每个节点之间的距离矩阵。然后可以在解决问题的TSP部分时利用距离矩阵:找到通过位置的游览并使用总时间作为权重。
下一步取决于你。如果您正在寻找近似解决方案,则TSP和KP都有许多启发式方法:请参阅Christofides TSP Heuristic上的Minimum TSP或Maximum Knapsack和Compendium of NP Optimization problems条目。
另一方面,如果您寻求最佳解决方案,您可能会失败。我仍然建议您找到图论的副本。 Nicos Christofides的算法方法(ISBN-13:978-0121743505)。它为深度优先搜索中的早期回溯提供了启发式方法,可以加快搜索几个NP-Complete问题的最佳解决方案。