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

简介: 机票搜索过程:按照请求的条件,取得对应的运价、规则、座位,三者匹配并计算出票价,排序选择优先价格并展示。主要代价花在其中的匹配步骤,也是本篇介绍的重点。匹配和计算都位于计算层。 一、国内机票单程 1、三层循环做运价*规则*座位的笛卡尔积来实现匹配,并计算代理商机票销售价 2、时间复杂度 选取B.

机票搜索过程:按照请求的条件,取得对应的运价、规则、座位,三者匹配并计算出票价,排序选择优先价格并展示。主要代价花在其中的匹配步骤,也是本篇介绍的重点。匹配和计算都位于计算层。


一、国内机票单程

1、三层循环做运价*规则*座位的笛卡尔积来实现匹配,并计算代理商机票销售价

cafd92ca1455879dc05ad0062e0e1aec6dd188ac

2、时间复杂度

选取B2C运价(此外还有渠道运价、B2B运价)的计算节点为例

93ebb91f1412c691523b13e252d2a7643eeaac39

指定出发、到达下的计算次数 运价数*规则数*座位数

运价数 代理商总数

规则放大的倍数 规则基于机场、航班的细分(不同返点、留钱)程度

座位放大的倍数 航班数


二、国内机票往返

1、基于两个单程结果拼接

ac227011482b274bb2685347f6c255bce91da4d3

时间复杂度:拼接步骤所消耗时间占比可忽略不计(由于合并后的结果数量级远低于合并前),等于单程。

2、基于往返打包运价计算

往返打包运价*往返规则*去程航班*返程航班的笛卡尔积来实现匹配,并计算代理商机票销售价

1c0549e1869c23716771723c004dea6b8117ba1c

时间复杂度:当打包运价数远低于单程运价数时,时间占比可忽略;否则为单程复杂度*单个航司下的平均航班数。

3、两类结果合并后为最终结果

两类结果可以并行计算,合并消耗时间占比很小

总时间复杂度:与单程相当,或大一个数量级。


目录
相关文章
|
资源调度 算法 计算机视觉
数字图像处理实验(六)|图像分割{阈值分割、直方图法、OTUS最大类间方差法(edge、im2dw、imfilter、imresize)、迭代阈值法、点检测}(附matlab实验代码和截图)
数字图像处理实验(六)|图像分割{阈值分割、直方图法、OTUS最大类间方差法(edge、im2dw、imfilter、imresize)、迭代阈值法、点检测}(附matlab实验代码和截图)
2052 0
数字图像处理实验(六)|图像分割{阈值分割、直方图法、OTUS最大类间方差法(edge、im2dw、imfilter、imresize)、迭代阈值法、点检测}(附matlab实验代码和截图)
|
10月前
|
缓存 前端开发 应用服务中间件
Web端实时通信技术SSE在携程机票业务中的实践应用
本文介绍了携程机票前端基于Server-Sent Events(SSE)实现服务端推送的企业级全链路通用技术解决方案。文章深入探讨了 SSE 技术在应用过程中包括方案对比、技术选型、链路层优化以及实际效果等多维度的技术细节,为类似使用场景提供普适性参考和借鉴。
396 7
|
人工智能 安全 网络虚拟化
指南:Grok官网是什么?国内如何使用grok 3 官网AI
Grok AI 是一款非常强大的人工智能助手,不仅能够在社交媒体管理、语音助手等方面为用户提供便利,还可以极大提升工作效率。
8328 5
|
机器学习/深度学习 人工智能 Cloud Native
福利「Flink Forward Asia 2023 」视频合集!
2023 年 12 月 9 日,Flink Forward Asia 2023 在北京圆满结束。本届大会共有 70+ 演讲议题、30+ 一线大厂技术与实践分享。现所有专场回放视频已经出炉,并在开发者社区上线。
6652 2
福利「Flink Forward Asia 2023 」视频合集!
|
Android开发 开发者
 一键在线获取APP公钥、包名、签名及备案信息方法介绍
本文介绍了一款在线APP解析工具,可以一键获取APP的公钥、包名、签名等基础信息,同时提供了详细的操作步骤和使用示例,帮助开发者更便捷地进行APP备案信息的获取。
|
人工智能 算法 自动驾驶
人工智能的伦理困境与未来展望
本文探讨了人工智能技术发展中遇到的伦理挑战,并对其未来发展趋势进行了预测。文章首先介绍了AI技术的基本原理和应用,然后分析了伴随其发展而来的隐私、就业和决策透明度等问题。最后,提出了对AI未来发展的几点展望,包括技术进步、伦理规范建立和人机合作模式。
690 1
|
存储 Web App开发 Java
《手把手教你》系列基础篇(九十五)-java+ selenium自动化测试-框架之设计篇-java实现自定义日志输出(详解教程)
【7月更文挑战第13天】这篇文章介绍了如何在Java中创建一个简单的自定义日志系统,以替代Log4j或logback。
545 5
|
监控 测试技术 项目管理
一文聊聊我理解的技术PM
作为技术同学,不仅要写好自己的代码,做好功能交付,往往还需要担任复杂项目的技术PM,但有些同学缺少项目管理经验,不知道怎么才能做好技术PM,本文结合作者自身的一些经验,分享一些心得。
|
算法 程序员
【算法训练-链表 七】【链表排序】:链表排序、链表的奇偶重排、重排链表
【算法训练-链表 七】【链表排序】:链表排序、链表的奇偶重排、重排链表
372 1
|
小程序 前端开发
实现微信小程序picker 省市区 自定义数据 支持三级联动
实现微信小程序picker 省市区 自定义数据 支持三级联动
581 0