码迷,mamicode.com
首页 > 编程语言 > 详细

算法——如何识别NP问题

时间:2020-05-04 00:50:58      阅读:61      评论:0      收藏:0      [点我收藏+]

标签:com   快递   路径   必须   旅行   最短路径   通过   解决方案   height   

解决集合覆盖问题,必须计算每个可能的集合

比如求到五个不同城市所经最短路径,就可能需要计算每条可能的路径。

问题一:前往五个城市,有几条可能的路径呢?如果只有两个城市,那么就往返两条路径。两条路径也是不同的其实,可能去的路上有很多单行线等等。

问题二:有时候不能确定从哪个城市出发,快递将包裹从芝加哥发往湾区,包裹将通过航运发送到联邦快递在湾区的50个集散点之一,再装上经过不同配送点的卡车。该通过航运发送到哪个集散点呢?起点未知,需要通过计算找出起点和最佳路线。

当三个城市时:技术图片

 

 而四个城市时:技术图片

 

 四个城市,选好一个城市,剩下三个城市就有六种选择,所以总共4 * 6 种

技术图片

 

 

近似求解:随便找一个城市,选择下一个城市都选择最近的还没去的城市。这就是一个近似求解。

 

如何识别NP问题?

比如说为橄榄球队挑选队员。列了一张清单,要满足多项要求。Jonah需要组建一个满足所有这些要求,这就是一个集合覆盖问题。

①找出符合最多要求的球员 ②不断重复,知道球队满足要求(或球队名额已满)

 

NP问题无处不在,找出NP问题这样就不用苛求完美的解决方案,但判别很难,易于解决的问题和NP完全问题差别很小。

之前有找出A到B最短路径,但要找出经由指定几个点的最短路径就是NP完全问题了

 

NP完全问题的一些蛛丝马迹:

①元素较少时算法的运行速度非常快,但随着元素数量的增加,速度骤减。

②涉及“所有组合”的问题通常是NP完全问题

③不能把问题分成小问题,必须考虑各种可能的情况,这就是NP完全问题

④如果问题涉及集合(比如广播台集合)并且难以解决时,也可能是

⑤如果问题可以转换为集合覆盖问题或旅行商问题,肯定是NP完全问题

算法——如何识别NP问题

标签:com   快递   路径   必须   旅行   最短路径   通过   解决方案   height   

原文地址:https://www.cnblogs.com/zhangshengchao/p/12824730.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!