多項式時間演算法

2021-06-17 23:53:28 字數 766 閱讀 6349

定義:若存在乙個常數c,使得對於所有n>=0,都有|f(n)| <= c*|g(n)|,則稱函式f(n)是o(g(n))。時間複雜度是o(p(n))的演算法稱為多項式時間演算法,這裡p(n)是關於n的多項式。不能夠這樣限制時間複雜度的演算法被稱為指數時間演算法。

例如:時間複雜度為o(nlog(n))、o(n^3)的演算法都是多項式時間演算法,時間複雜度為o(n^log(n))、o(n!)、o(2^n)的演算法是指時間演算法。

乙個優化問題如果已經找到了多項式時間演算法,則稱該問題為多項式時間可解問題,並將這類問題的集合記為p,因此多項式時間可解問題就稱為p類問題。

乙個問題如果沒有找到多項式時間演算法,那麼直覺上它是「難解」的,但又往往無法證明多項式時間演算法的不存在性。由於在尋找有效演算法上的失敗未必一定意味著這樣的演算法不存在,這就給理論工作者帶來了乙個難題:一方面證明乙個問題不存在多項式時間演算法是困難的,至今尚未給出;另一方面有越來越多的問題無法給出多項式時間演算法。同時,理論工作者又渴望解決此難題。為此,在20世紀70年代提供了乙個漂亮的理論,它把這種失敗歸結為乙個深刻的資料猜想,這個理論就是np-完全性理論。

定義:給定乙個判定問題,如果存在乙個演算法,對任何乙個答案為「是」的例項i。該演算法首先給出乙個猜想,該猜想規模不超過i的輸入長度的某個多項式函式,且驗證猜想的正確性僅需多項式時間,則稱該問題屬於np類。

定義:如果np類中所有問題都可以多項式時間歸約到np類中某個問題x,則稱x是np-完全問題。

定義:如果某優化問題x的判定問題是np-完全的,則稱問題x是np-難的;如果x的判定問題是強np-完全的,則稱x是強np-難的。

多項式時間演算法

時間複雜度並不是表示乙個程式解決問題需要花多少時間,而是當問題規模擴大後,程式需要的時間隨規模增長得有多快。也就是說,對於高速處理資料的計算機來說,處理某乙個特定資料的效率不能衡量乙個程式的好壞。當這個資料的規模變大到數百倍後,程式執行時間是否相差不大,或者也跟著慢了數百倍,或者變慢了數萬倍。1 不...

多項式演算法

一般地,一元n次多項式的求值需要經過 n 1 n 2次乘法和n次加法 double f1 int n,double a,double x 時間複雜度為o n 2n 2 n2 秦九韶演算法是中國南宋時期的數學家秦九韶提出的一種多項式簡化演算法。秦九韶演算法計算多項式時只需要n次乘法和n次加法。即每次將...

多項式時間 Polynomial time

什麼是時間複雜度?時間複雜度並不是表示乙個程式解決問題需要花多少時間,而是當程式所處理的問題規模擴大後,程式需要的時間長度對應增長得有多快。也就是說,對於某乙個程式,其處理某乙個特定資料的效率不能衡量該程式的好壞,而應該看當這個資料的規模變大到數百倍後,程式執行時間是否還是一樣,或者也跟著慢了數百倍...