NP完全问题
*什么是NP完全问题
在了解贪心算法之前我们先了解下这个算法可以处理的问题,即世界七大数学难题之一的NP完全问题
NP完全问题的简单定义是,以难解著称的问题,如旅行商问题和集合覆盖问题,很多非常聪明的人都认为,根本不可能编写出可快速解决这些问题的算法。(摘自算法图解)
那既然这类问题没有快速算法,那我们就要学习近似算法(贪心算法就是近似算法之一),使它们可以快速找到NP完全问题的近似解。
*如何识别NP完全问题
既然到目前为止,NP完全问题没有快速算法,如果我们在一开始遇到问题时能够识别出来,欸,这是NP完全问题,那我们就不用浪费时间去寻找一个根本不可能存在的快速算法了。但很可惜的是,并没有一个很确切的指标来判断这个题目是否是NP完全问题。
NP完全问题无处不在!如果能够判断出要解决的问题属于NP完全问题就好了,这样就不用去寻找完美的解决方案,而是使用近似算法即可。但要判断问题是不是NP完全问题很难,易于解决的问题和NP完全问题的差别通常很小。
但如果要找出经由指定几个点的最短路径,就是旅行商问题——NP完全问题。简言之,没办法判断问题是不是NP完全问题,但还是有一些蛛丝马迹可循的