N、NP、NPC问题分析

什么是多项式?

O(1), O(logn),O(nlogn),O(n),O(n2)或者o(nk)等为多项式 :axn-bx(n-1)+c

什么是P?

Polynomial(多项式复杂度问题)

什么是NP?(Non Deterministic Polynomial)

对于一个问题,假如现在某个解,如果能在多项式时间内验证这个解是否为正确解,那么这个问题就是NP问题。
例子:
假设有一个没有重复元素的数组arr = […],现在我们希望找到它的中位数median

  • 排序(O(nlogn))
  • arr[n/2](O(1))

什么是NP Complete?

NP complete问题是NP问题的一个子集。

假如一个问题是NP问题,也就是说能在多项式时间内进行判断,但是暂时没办法在P时间内解决,那么这个问题就是NP complete问题。

前希难题 P=NP

N、NP、NPC问题分析

NP Complete问题的特性

本质相同,问题可以互相转换(多项式时间内)

一个是P,其它都是P
例子:
Clique(两点之间互相连接ei)
N、NP、NPC问题分析
Clique Problem 和 3-SAT
N、NP、NPC问题分析clique problem:在图中找全连接

SAT 转化为NPC问题

N、NP、NPC问题分析
N、NP、NPC问题分析

经典的NP Complete问题

每个点不相连
N、NP、NPC问题分析
点覆盖所有的线条
N、NP、NPC问题分析
线条包含所有的点
N、NP、NPC问题分析

NP Complete 问题处理策略

对问题施加限制
改进指数时间算法(2^n -> 1.5^n)
启发示方法

  • 回溯法(是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为“回溯法”,而满足回溯条件的某个状态的点称为“回溯点”)
  • 局部搜索(局部搜索算法从一个初始解开始,通过邻域动作,产生其邻居解,判断邻居解的质量,根据某种策略,来选择邻居解,重复上述过程,至到达终止条件,容易陷入局部最优)
    • 随机游动
    • 模拟退火(为了防止陷入局部最优,模拟退火算法以一定概率接受比当前解差的解,接受差解的概率随着迭代次数的增加而下降,或者说是随着温度T的下降而下降)
      遗传算法( 模拟物竞天择的生物进化过程,通过维护一个潜在解的群体执行了多方向的搜索,并支持这些方向上的信息构成和交换)

总结

  • P Problem: 对于任意的输入规模n,问题都可以在n的多项式时间内得到解决

  • NP(Non-deterministic Polynomial) Problem: 可以在多项式的时间里验证一个解的问题

  • NPC(Non-deterministic Polynomial Complete) Problem: 满足两个条件 (1)是一个NP问题 (2)所有的NP问题都可以约化到它

  • NP-Hard Problem: 满足NPC问题的第二条,但不一定要满足第一条

参考资料

https://people.orie.cornell.edu/dpw/orie6300/Lectures/lec25.pdf

http://www.doc88.com/p-2778214890655.html

https://wenku.baidu.com/view/8a88fa54e418964bcf84b9d528ea81c758f52ed5.html?rec_flag=default&sxts=1563369616572

https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-design-and-analysis-of-algorithms-spring-2012/lecture-notes/MIT6_046JS12_lec17.pdf

主要参考贪心科技高阶机器学习班级

上一篇:redhat 关闭防火墙


下一篇:算法笔记 Problem F: A+B和C (15)