伪多项式时间

来自testwiki
跳转到导航 跳转到搜索

Template:Unreferenced Template:NoteTA计算理论领域中,若一个数值算法时间复杂度可以表示为输入数值N的多项式,则称其时间复杂度为伪多项式时间。这是由于,N的值是N的位数的幂,故该算法的时间复杂度实际上应视为输入数值N的位数的

一个具有伪多项式时间复杂度的NP完全问题称之为Template:Le,而在P!=NP的情况下,若一个NP完全问题被证明没有伪多项式时间复杂度的解,则称之为Template:Le

例子

-{zh-hant:質數測試;zh-hans:素性测试}-中,使用较小的整数逐个对被测试数进行试除的算法被认为是一个伪多项式时间算法。对于给定的整数N,使用从最小的-{zh-hant:質數;zh-hans:素数}-2开始,到N为止的整数依次对N进行试除,如果均无法整除N,则N是素数,这个过程需要进行至多约N次整数除法,即其时间复杂度为O(N),为N的多项式。令D为N的二进制表示的位数,那么N可以表示为以2为底D的,因此素性测试问题的时间复杂度用D表示应为O(2D/2)。因此,上述算法是一个伪多项式时间算法。

其它被证明只具有伪多项式时间算法解的问题有背包问题子集合加总问题