TCS:NP-hard
好久没有写我的理论计算机初步系列了,其实复杂性这一块,虽然平时经常遇到,但由于问题都过于本质和困难,想这方面问题的时间反而不多。Ko教授就跟我说也许NP verse P这个题并不难,只不过大家认为它很难,结果就没有多少人去做了,大家一遇到这个问题都远远得绕开。话虽如此,我还是不敢去碰的。
很多人一看到NP-hard,就从字面上理解成为比NP还难的问题。但如果这里的“更难”指得是解决问题所花费时间更长的话,这个论断是不正确的。从算法角度来看,NP-hard问题的确比NP难,但比NP还难(指花费时间更多)的问题却不见得是NP-hard的。
仔细检查NP-hard的定义:一个问题(语言)L是NP-Hard的,当且仅当3SAT问题可以在多项式时间规约到L,即存在一个可多项式时间计算函数f,使得
当且仅当
。
注意NP-hard的概念只有在NP!=P的时候才有意义,因为在NP=P的时候,除了空集和全集语言外,所有问题都是NP-hard的。
但在NP!=P的时候,NP-hard问题的分布呈什么状态呢?
定理1:所有unary语言都不可能是NP-hard的(除非NP=P)。语言L是unary的,指L里的任一元素都是1n的形式。
根据此定理,如果我们能找到一个NP-hard的unary的undecidable问题,就证明NP=P了
。
定理2:Turing机停机问题是NP-hard(by Dr. Sun)。
这个定理有点出人意料,但仔细想想也不难证明。而且这个问题不难转成unary的形式,可惜这个转化过程不是多项式时间的,所以转化过后就不一定是NP-hard的了。
思考1:NEXP里有问题不是NP-Hard吗?
思考2:为什么NP-complete用多项式时间规约,PSPACE-complete也用多项式时间归约,而不是多项式空间规约?
我混乱了 图灵同学的停机问题不是不可判定的么 怎么成了 NP 的了, 能不能给个paper 链接?
NP-hard不需要在NP里面。如果还在NP里面的话,那么它就是NP-complete了,这是NP-hard与NP-complete的唯一区别。
停机问题是NP-hard这个证明不难,你仔细想想就出来了
问题二是,如果用多项式空间规约,那么这个规约太弱了,反映不了问题的本质