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

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

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


一、国际机票单程

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
分享
相关文章
|
11月前
|
【错题集-编程题】城市群数量
【错题集-编程题】城市群数量
五一假期畅游指南:Python技术构建的热门景点分析系统解读
五一假期畅游指南:Python技术构建的热门景点分析系统解读
【美赛】2023年MCM问题Y:理解二手帆船价格(代码&思路)
【美赛】2023年MCM问题Y:理解二手帆船价格(代码&思路)
173 0
还在担心期末挂科吗? 期末必备复习资料-----“树“的概念
还在担心期末挂科吗? 期末必备复习资料-----“树“的概念
154 0
 哈希竞猜游戏源码版丨哈希竞猜游戏系统开发(逻辑及详情)丨哈希竞猜游戏开发稳定版
哈希函数的运算结果是哈希值竞猜,如果两个哈希值相同的话,那这两个输入值的微盘结果极大可能会是多国语言相同的,也有一部分可能是大富不同的,这一部分的情况就叫做幸运哈希竞猜碰撞。反之如果两个哈希值是不相同的,那么这两个散列值的原始输入一定是不相同的。
哈希竞猜游戏开发稳定版/哈希竞猜游戏系统开发案例详细/哈希竞猜游戏系统源码逻辑及分析
在区块链中,每个新区块都包含上一个区块经过科学方法算出来的数据指纹——哈希值。这个值让一个个区块之间形成了有着严格顺序关系的链条结构,一旦某个区块中的任何数据被篡改,该区块在下一个区块头部的数据指纹——哈希值就会变动,之后就无法衔接上来,也就不会被任何人认可。
哈希竞猜游戏源码版丨哈希竞猜游戏系统开发(逻辑及详情)丨哈希竞猜游戏开发稳定版
其实现原理是通过哈希函数(也叫散列函数)将元素的键名映射为数组下标(转化后的值叫做哈希值或散列值),然后在对应下标位置存储记录值。当我们按照键名查询元素时,可以使用同样的哈希函数,将键名转化为数组下标,从对应的数组下标位置读取数据
什么是区块哈希竞猜游戏系统开发?哈希竞猜游戏系统开发(案例成熟)
01.Hash函数 单向散列函数,又称单向Hash函数、杂凑函数,就是把任意长度的输入消息串变化成固定长的输出串且由输出串难以得到输入串的一种函数。这个输出串称为该消息的散列值。一般用于产生消息摘要,密钥加密等。 哈希算法广泛应用于很多场景,例如安全加密和数据结构中哈希表的查找,布隆过滤器和负载均衡(一致性哈希)等等。 02.常见的Hash函数 常见Hash函数有MD系列、SHA系列、MAC和CRC等。 MD系列 MD全称Message Digest,按照规范版本分为MD2、MD4、MD5三种算法,目前最常用的是MD5版本算法。 MD4算法
今日份【推荐解决方案四部曲】请查收——第一部:基于协同过滤算法推荐
数据挖掘的一个经典案例就是尿布与啤酒的例子。尿布与啤酒看似毫不相关的两种产品,但是当超市将两种产品放到相邻货架销售的时候,会大大提高两者销量。
894 0

热门文章

最新文章