漫画:什么是旅行商问题?

简介: 和小灰所遇到的问题类似,旅行商问题所描述的是这样一个场景:有一个商品推销员,要去若干个城市推销商品。该推销员从一个城市出发,需要经过所有城市后,回到出发地。每个城市之间都有道路连通,且距离各不相同,推销员应该如何选择路线,使得总行程最短呢?


640.jpg640.jpg640.jpg640.jpg

需要规划出怎样的路线呢?举个例子:

有一个快递员,要分别给三家顾客送快递,他自己到达每个顾客家的路程各不相同,每个顾客之间的路程也各不相同。


640.png

那么,想要把快递依次送达这三家,并最终回到起点,哪一条路线所走的总距离是最短的呢?

640.png640.jpg640.jpg640.jpg640.jpg640.jpg640.jpg



旅行商问题



和小灰所遇到的问题类似,旅行商问题所描述的是这样一个场景:

有一个商品推销员,要去若干个城市推销商品。该推销员从一个城市出发,需要经过所有城市后,回到出发地。每个城市之间都有道路连通,且距离各不相同,推销员应该如何选择路线,使得总行程最短呢?


640.png


这个问题看起来很简单,却很难找到一个真正高效的求解算法。其中最容易想到的,是使用穷举法:

把所有可能的路线穷举出来,计算出每一条路线的总行程:


A-B-C-D-E-F-G-H-I  

A-B-C-D-E-F-G-I-H  

A-B-C-D-E-F-H-G-I  

A-B-C-D-E-F-H-I-G  

A-B-C-D-E-F-I-H-G  

A-B-C-D-E-F-I-G-H

......

......


像上面这样排列组合,从所有路线中找出总行程最短的路线。显然,这个方法的时间复杂度是O(n!),随着城市数量的增长,花费的运算时间简直不可想象!

后来,人们想出了许多相对优化的解决方案,比如动态规划法、分枝定界法(这个算法很有意思,以后会专门写一篇漫画来详细介绍)......但是,这些算法的时间复杂度仍然是指数级的,并没有让性能问题得到根本的解决。

image.gif640.jpg640.jpg


image.gif



P和NP



NP到底是什么意思呢?

我们曾经学习过许许多多的算法,这些算法的时间复杂度都可以用多项式来表示,比如:

归并排序的时间复杂度是O(nlogn)

冒泡排序的时间复杂度是O(n^2)

Floyd算法的时间复杂度是O(n^3)

尽管这些算法的运行时间有数量级上的差别,但是它们的时间复杂度都可以用O(n^k)来表示,k是一个常数。

因此,这些算法都是多项式时间算法,能用多项式时间算法解决的问题被称为P问题( Polynomial)。

人们常说,能用钱解决的问题都不是问题,在计算机科学家眼中,能用多项式时间解决的问题都不是问题。

然而,世间还存在许多变态的问题,是无法(至少是暂时无法)在多项式时间内解决的,比如一些算法的时间复杂度是O(2^n),甚至O(n!)。

随着问题规模n的增长,计算量的增长速度是非常恐怖的。这类问题被称为NP问题(Non-deterministic Polynomial),即非确定多项式问题。

有些科学家认为,所有的NP问题终究都可以在多项式时间内解决,只是我们暂时还没有找到方法;也有些科学家认为,某些NP问题永远无法在多项式时间内解决。

这个业界争论可以用一个公式来表达:

NP = P?

image.gif640.jpg640.jpg640.jpg



归约和NPC




这里所说的NPC问题可不是游戏当中的NPC,它究竟是什么意思呢?要想理解NPC问题,我们需要先了解归约的概念。

归约,可以简单理解成问题之间的转化。例如问题Q是一个一元一次方程的求解问题:3x+6 = 12,这个问题可以转化成一个一元二次问题Q':0x^2+3x+6 = 12。

显然,问题Q并不比问题Q'更难解决,只要有办法解决Q',就一定能够解决Q。对于这种情况,我们可以说问题Q归约于问题Q'。

同时,这种归约可以逐级传递,比如问题A归约于问题B,问题B归约于问题C,问题C归约于问题D,那么我们可以说问题A归约于问题D。

在NP问题之间,也可以存在归约关系。我们把众多的NP问题层层归约,必定会得到一个或多个“终极问题”,这些归约的终点就是所谓的NPC问题(NP-complete),也可以翻译成NP完全问题。上面所讲的旅行商问题,被科学家证明属于NPC问题。


image.gif640.png


就数量上而言,NP问题远比P问题要多,而NP之中的NPC问题也仅占极少数,所以P、NP、NPC之间的关系可以用下图来表示:

640.png

image.gif

俗话说擒贼先擒王,只要有朝一日,我们能够找到NPC问题的多项式时间算法,就能够解决掉所有的NP问题!但遗憾的是,至今还没有人能够找到可行的方法,很多人认为这些问题是无解的。

640.jpg640.jpg640.jpg640.jpg640.jpg640.jpg640.jpg

相关文章
|
3月前
研学旅行的概念和特点
【8月更文挑战第4天】研学旅行的概念和特点
113 2
|
3月前
|
搜索推荐 API 定位技术
解锁携程美食与景点数据接口:打造个性化旅行体验的秘密武器
携程API助您探索旅游信息,虽无专门“美食列表”接口,但可通过景点详情接口获取周边美食推荐。结合地图或餐饮API,丰富美食数据一手掌握。景点列表接口帮助搜索景点详情,包括名称、位置等。使用流程包括注册账号、获取密钥、构造请求及解析响应数据。记得查阅最新文档,确保合规使用。体验API:[链接]。
|
3月前
|
安全 vr&ar
研学旅行的市场前景
【8月更文挑战第4天】研学旅行的市场前景
53 0
|
定位技术
好客租房171-地图找房renderOverlays
好客租房171-地图找房renderOverlays
140 0
好客租房171-地图找房renderOverlays
|
定位技术
好客租房172-地图找房createOverlays
好客租房172-地图找房createOverlays
104 0
|
程序员
支付宝这些程序员要逆天,滑板、画漫画、写科幻小说、航拍,玩得太溜
他们是四位来自蚂蚁金服的普通程序员,代码有千万种可能,人生有万千种姿态,看起来高冷的 IT 男,背地里也可能是热血青年!
4687 0
支付宝这些程序员要逆天,滑板、画漫画、写科幻小说、航拍,玩得太溜
|
人工智能 安全 机器人
央视新闻入驻B站;果冻有家:租房场景中的共享社交融合
央视新闻入驻B站;果冻有家:租房场景中的共享社交融合
665 0
|
黑灰产治理 安全
6秒售空168套房?房产生活号新玩法
生活号服务商“筑家易”,借助生活号平台及支付宝能力,开启“云选房”时代:实现新房小区线上开盘、线上预约、线上交付! 7月28日“北岸江山”开盘 首次采用“生活号+筑家易云选房” 开盘6秒瞬间售房168套! 支付宝缴纳保证金192万元,房产总成交近2亿元! 9月19日晚“北岸江山”二期开盘 23 秒售完 115套房源 平均每秒成交5套,最终成交额破2亿元 这样的案例还有很多…… 01.生活号+支付宝实名认证、蚁盾   在线售房,交易更安全    整个“云选房”系统依托于支付宝系统:每个参与开盘用户都经过支付宝实名认证;“蚁盾”风险评分可有效识别存在机器注册、恶意刷单、黄牛抢购等问题的手机号等。
692 0
|
大数据 UED
小程序助力博物馆餐厅,用“艾”打造品牌
壳儿-爱的博物馆坐落于798艺术区,是中国首家以“爱”为核心的博物馆,它打破界限,将艺术、餐吧、酒吧融为一体,打造中国第一家可以在室内就餐的博物馆,选择使用艾锑无限提供的餐饮小程序后,客流量产生了翻天覆地的变化......
不一样的厦门,不一样的旅行!
厦门旅行的最后一天,位于酒店旁边的麦当劳,我又忍不住开始用文字记录短暂的厦门之行。 厦门之行,不一样的厦门之行,没有满屏的美食照片,没有满屏的风景照片,有的只是零星的个人足迹。
1107 0
下一篇
无影云桌面