P、NP、NPC
概念
> P问题:能够在多项式时间内解决的决策问题。
—举例: 图搜索问题、最短路径问题、最小生成树问题······
> NP问题:不能在多项式时间内解决或不确定能不能在多项式时间内解决,但能在多项式时间验证的问题。
—验证:给定一个问题的实例、证书(类似于证据),需要验证这个证书是这个问题的正确答案。
— 举例:汉密尔顿路径,实例为G=(V,E),证书为顶点序列 {v0,v1,v2,v3,….,vk},我们的目的是要验证这个证书就是这个问题的答案,验证方法为:先遍历一遍这个点序列,看看是不是每个点只出现一次,然后对于(vi,vi+1)是否为G的边,这样就能够验证这个点序列是不是汉密尔顿路径,很显然这个验证过程是多项式时间的,所以汉密尔顿路径是NP问题。
> NPC问题:目前不能用多项式时间解决的问题,但是我们还不能证明这个问题不能用多项式时间解决,我们这次的目标是研究这个问题。
—满足的两个条件:是一个NP问题 + 所有的NP问题可以在多项式时间内规约到它
—举例:3SAT、顶点覆盖、团、三维匹配、汉密尔顿回路、划分问题·······
> NP难