TSP为航班票价

时间:2018-02-05 14:53:46

标签: algorithm traveling-salesman hamiltonian-cycle

我正在尝试用机票解决旅行商问题,所以主要的想法是从一个机场开始,只访问所有机场一次并返回原点。

所以例如: 从LAX开始 访问LV,CA,NY 结束LAX。

这是一个经典的图形问题,我们可以将机场表示为节点,将路线表示为边缘,并将价格作为边缘权重。 enter image description here

所以这是最简单的部分,让我感到困惑的是用户希望旅行的日期。例如,我想让用户选择他/她希望旅行的日期,比如从01开始到15结束。所以我想找到一种最便宜的方法。例如,输出将是这样的:

01 - LAX - LV; 04 - LV - CA; 08 - CA - NY; 15 - NY - LAX

所以我理解我可以在边缘上添加额外的属性,但问题是算法如何区分如何遍历图形,例如不选择已经过去的权重最小的边缘。 enter image description here

所以你可以看到我有一个从CA出来的两个边缘(注意边缘格式是DD - 价格,01 - 20表示日期的第一个和成本20),以及如何在多个时候处理这​​种情况存在于同一节点的边缘。

它也可以被视为三维图,其中第三维是用户旅行的日期。所以主要问题是如何处理这些日期?

希望我明白了,赞赏任何建议

先谢谢。

1 个答案:

答案 0 :(得分:1)

我理解你的问题的方式,你需要在特定时间之前到达的最便宜的路径。如果是这种情况,一个可能的答案可能是你仍然只根据航班的价格解决它,同时对于队列中的每个可能的答案(我假设 像Dijkstra这样的方法你保留了多少时间(用于与截止日期比较)。

每当你想要添加可能答案的邻居时,你可以检查它是否在截止日期之前,如果不是,你就会忽略该实例。

总之,你仍然会找到从最便宜到最便宜的所有路径,你选择第一个与你的截止日期不矛盾的路径。