机票分享第三篇 机票计算过程及时间复杂度(国际篇)

简介: 延续上篇国内机票计算的话题,依然聚焦机票计算层,扩大范畴到国际。国际机票的区别在于会做更多的拼接,若所有数据全部参与计算则耗时过长,需要挑选一部分,还要保证挑选的部分恰好对应最低的价格。国际机票的有趣之处在于决定怎么挑。

延续上篇国内机票计算的话题,依然聚焦机票计算层,扩大范畴到国际。国际机票的区别在于会做更多的拼接,若所有数据全部参与计算则耗时过长,需要挑选一部分,还要保证挑选的部分恰好对应最低的价格。国际机票的有趣之处在于决定怎么挑。


一、国际机票单程

1、由于多数情形需要中转,不再适用运价*座位*规则的笛卡尔积

座位对应的航班组合比较多,如果沿用笛卡尔积,则花费时间的放大倍数与平均航班组合数相当

24b09bfdcda08e80b5983038f19dbd292a5b22cd

示例:两段的中转

2、挑选部分规则来降低匹配次数

(1)、将运价与航班组合按运价分组

3e53cb620172c377f3070bcc4a8348afbcadd009

(2)、用运价与规则匹配并计算价格,从而对规则排序

3918270061e5cbf8bc6cc3309fe311ac2510feff

(3)、将运价与航班组合,从排序后的规则里挑选部分,来生成票价

0ac0046fecf8af318610ff2a37d6c3084338ee5b

注:stop条件并非实际场景,eg.算出一个便stop;一个商家只算一个价格


二、国际机票往返

1、与国内不同,两个运价拼接往返运价的模式为常态

c6b0ac76e0d1e94476bb8bb4dc50893f84bc3e0a

国内的往返运价通常是已经组合好的,而国际的场景是设置一个运价是否适用于去程/回程,并动态去组合的。

2、拼接将时间复杂度放大到n2

国内往返运价、规则是拼好的,仅航班需要拼接,延用笛卡尔积方式还能接受

国际运价、航班、规则都需要拼接,都放大为n2,很可怕

3、挑选部分运价、航班、规则来降低匹配次数

(1)、对运价的挑选:只保留低于同航司运价组合价格的混航司运价组合;对航班的初筛:至少与一个去程运价匹配的航班才放入去程航班集合,至少与一个返程运价匹配的航班才放入返程航班集合

(2)、从排序后的运价、排序后的航班里挑选一些匹配生成运价与航班组合

e91b35fb8d069f703ae1d2c4749d67764a958076

注:图例的stop条件为算出一个航班便停止,实际模型更复杂一些

(3)、挑选部分规则与运价航班组合匹配(和国际单程类似,不再赘述)


三、国际机票多程

1、两程采用和往返同样的计算方式

2、大于两程,则采取多次查询两程的计算结果,并拼接


四、解决时间复杂度放大问题的思路

1、预筛选,来降低数量

2、分组,用匹配分组取代匹配单个元素,从而降维

3、排序,便于后面的挑选

4、按顺序做匹配,达到一定条件就stop


詹姆
+关注
目录
打赏
0
1
0
0
19
分享
相关文章
机票分享第二篇 机票计算过程及时间复杂度(国内篇)
机票搜索过程:按照请求的条件,取得对应的运价、规则、座位,三者匹配并计算出票价,排序选择优先价格并展示。主要代价花在其中的匹配步骤,也是本篇介绍的重点。匹配和计算都位于计算层。 一、国内机票单程 1、三层循环做运价*规则*座位的笛卡尔积来实现匹配,并计算代理商机票销售价 2、时间复杂度 选取B.
2163 0
基于50W携程出行攻略构建事件图谱(含码源):交通工具子图谱、订酒店吃饭事件图谱等
基于50W携程出行攻略构建事件图谱(含码源):交通工具子图谱、订酒店吃饭事件图谱等
基于50W携程出行攻略构建事件图谱(含码源):交通工具子图谱、订酒店吃饭事件图谱等
机票分享第六篇 机票搜索系统演进的经验
机票业务非常复杂,我们不得不应对这些复杂,也不断的想出一些招数演进系统。我回顾所做的事,再次思考并归纳核心思路,完成了本篇。 一、最大化统一,最小化变化 业务复杂,更不能随意新增接口、流程,思考如何将不同场景的流程融合在一起。
2604 0
高德拉特难题:悬赏5000美金的一道作业排序问题
高德拉特难题:悬赏5000美金的一道作业排序问题 高德拉特曾经悬赏5000美金的一道作业排序问题,如何使产出最大化?你能做出的最多产品是多少? 该产品工艺流程如图,成品由4个零部件组成,每个零部件都需要经过一定的加工流程,具体需要使用的设备和时间在图中有标注,其中1-10,1-20表示第一个零件的第1和第2道工序,A、B和C表示三台加工设备,即资源。
902 0
火车票订票系统的几点优化思考
今天刚和选哥讨论这个铁道部新搞的什么网上售票系统,非常之难登陆,昨天我登了一上午才挤上去买了一张票,和在火车站排队有什么区别~,无奈中国人口之多,在哪都要排队,网上也逃厄运,于是我开始抱怨铁道部设计的购票系统,偶然发现...
1318 0
今日份【推荐解决方案四部曲】请查收——第一部:基于协同过滤算法推荐
数据挖掘的一个经典案例就是尿布与啤酒的例子。尿布与啤酒看似毫不相关的两种产品,但是当超市将两种产品放到相邻货架销售的时候,会大大提高两者销量。
895 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等