航班票价的 TSP

TSP for a flights fares

我正在尝试用机票解决旅行商问题,所以主要思想是从一个机场开始,只访问所有机场一次,return 到起点。

例如: 从洛杉矶国际机场出发 访问 LV、CA、NY 结束洛杉矶国际机场。

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

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

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

所以我知道我可以在边上放置额外的属性,但问题是算法将如何区分如何遍历图,例如不选择过去已经存在的权重最小的边。

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

也可以看成三维图,第三维是用户出行的日期。所以主要问题是如何处理这些日期?

希望我说到点子上了,任何建议表示赞赏

提前致谢。

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

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

在夏季,您仍然按照从最便宜到最昂贵的顺序查找所有可能的路径,然后选择第一个与您的截止日期不矛盾的路径。