原創翻譯加學習筆記,方便國人學習算法知識!
原文鏈接http://www.geeksforgeeks.org/pseudo-polynomial-in-algorithms/
什么是偽多項式?
當一個算法的最壞時間復雜度是依據輸入的數量級的時候,我們就稱算法的時間復雜偶是偽多項式時間(給一個wiki上的解釋可能更好理解 若一個數值算法的時間復雜度可以表示為輸入數值規模N的多項式,但其運行時間與輸入數值規模N的二進制位數呈指數增長關系,則稱其時間復雜度為偽多項式時間。這是由於,N的值是N的位數的冪,故該算法的時間復雜度實際上應視為輸入數值N的位數的冪from wiki )
例如:統計一個數組中所有正數的出現頻率。算法是先找到最大的數max,然后從1到max遍歷沒一個數,找到這個數在數組中的出現頻率。這個算法需要的時間是取決於這個數組中最大的數的大小,所以說這個算法是偽多項式時間。換句話說,一個算法的時間復雜度只是根據輸入元素的多少的話,我們認為這個算法是多項式時間算法。
偽多項式和NP完全問題
有一些NP問題是有偽多項式時間的解法的,例如:0-1背包問題的動態規划解法,子集和的問題(找出數組里子集的和等於某個值的問題), 切分問題。這都是偽多項式時間。如果一個NP完全問題有偽多項式時間的解法,那么我們稱這種問題叫弱NP完全問題。