我有一组节点。从一个节点到连接节点的旅行成本始终为1,但并非所有节点都直接连接。也就是说,从节点A到C的旅行可能需要通过节点B,总的旅行费用为2。
然后我有一组有序的对航点。每个航路点对包含一个原始节点和目标节点,必须按顺序访问它们。
有序对本身不必以任何特定顺序访问,也不必在原始节点之后立即访问目标节点。
如果要优化整个路线,可以访问节点两次。它永远不需要访问三次。
如何命令我的节点实现最低的旅行成本并确保访问航点中包含的所有节点,并遵守上面的有序对规则?
我正用这个把头撞到墙上。
答案 0 :(得分:0)
不幸的是,这是一个NP-Hard问题,因为它从(公制)旅行商问题中减少了。
这意味着在一般情况下,它不能在多项式时间内完成。你可以采取几种方法
或者您可以使用多种方法。例如,使用精确算法快速解决常见病例,并在病理情况下回归近似算法。
答案 1 :(得分:0)
不是一个完整的答案,只是大声思考,一种贪婪的方法:
如果您遇到一对以相反顺序出现在路线中的航路点,则需要提出一种“有效”的方式来反向遍历该路线。
另一个想法:
找到图的最小生成树,并从左到右遍历它。