Algorithm 找到最佳的往返机票组合 问题
用户希望在灵活的时间窗口之间找到最便宜的向外和向内航班组合 我有给定的用户变量:Algorithm 找到最佳的往返机票组合 问题,algorithm,sorting,optimization,linear-programming,Algorithm,Sorting,Optimization,Linear Programming,用户希望在灵活的时间窗口之间找到最便宜的向外和向内航班组合 我有给定的用户变量: Dd=开始行程的最早出发日 Rd=结束行程的最晚可能返程日 Min=出发和返回之间的最小天数 Max=出发和返回之间的最大天数 对于入境和出境,我每天都有单独的行程列表(从Dd到Rd)。每一天的清单都包含该特定日期的所有合适和可能的行程 结果应显示为按价格排序的列表 我的方法 我只能想到一种非常简单的方法,将每天的列表解析为当天最便宜的旅程(因为时间不相关),然后构建两个二叉树(向内和向外),以日期为节点,以价
=开始行程的最早出发日Dd
=结束行程的最晚可能返程日Rd
=出发和返回之间的最小天数Min
=出发和返回之间的最大天数Max
Dd
到Rd
)。每一天的清单都包含该特定日期的所有合适和可能的行程
结果应显示为按价格排序的列表
我的方法
我只能想到一种非常简单的方法,将每天的列表解析为当天最便宜的旅程(因为时间不相关),然后构建两个二叉树(向内和向外),以日期为节点,以价格为值。然后遍历外向树并查找内向行程(以Min
到Max
作为偏移量),并将每个组合放入排序列表中
如何优化?
我很确定我的解决方案为优化提供了空间。我做了一些研究,使我对线性规划,但我有问题,制定这个问题。。。也许还有其他算法或方法适合这个问题?您可以找到符合条件的所有旅程,并在类似以下伪python的内容中按成本进行排序:
for out in (all departures between Dd and Rd):
for ret in (all returns betweem out and Rd):
possibles.add((out, ret))
time_pruned = [journey for journey in possibles
if stay_between(Min, Max, journey)]
order_by_cost = sorted(time_pruned, key=cost_function)