日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【伪多项式时间】

發(fā)布時間:2024/1/1 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【伪多项式时间】 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Stack Overflow 上有人關(guān)于這個概念(Pseudo-polynomial time)進行過詳細(xì)解釋。
原答案:
algorithm - What is pseudopolynomial time? How does it differ from polynomial time?

我大概翻譯一下:
想要理解“偽多項式時間”,我們需要先給出“多項式時間”的一個清楚的定義。

對于“多項式時間”,我們的直觀概念是時間復(fù)雜度,其中是一常數(shù)。比如,選擇排序的時間復(fù)雜度是,是多項式時間;暴力解決TSP問題的時間復(fù)雜度是,不是多項式時間。我們稱這種時間復(fù)雜度為“傳統(tǒng)時間復(fù)雜度”。

我們通常認(rèn)為傳統(tǒng)時間復(fù)雜度中的變量表示數(shù)據(jù)的輸入規(guī)模。比如,選擇排序中,指待排序數(shù)組中元素的個數(shù);TSP問題中表示圖中節(jié)點的數(shù)量。但是,這些所謂的輸入規(guī)模,僅僅是直觀的定義,并不足夠嚴(yán)謹(jǐn)。為了標(biāo)準(zhǔn)化這些,在計算標(biāo)準(zhǔn)時間復(fù)雜度時,我們給出了輸入規(guī)模的標(biāo)準(zhǔn)定義:
一個問題的輸入規(guī)模是保存輸入數(shù)據(jù)所需要的bit位數(shù)。

比如,如果排序算法的輸入是一個32-bit整數(shù) 數(shù)組,那么輸入規(guī)模就是,是指數(shù)組中元素的個數(shù)。對于一個帶有個節(jié)點、條邊的圖,需要的bit位數(shù)就是。

了解了輸入規(guī)模的定義,我們來看“多項式時間”的標(biāo)準(zhǔn)定義:
對于一個問題,在輸入規(guī)模為x的情況下,如果一個算法能夠在O()時間內(nèi)解決此問題,則我們稱此算法是多項式時間的,其中為一常數(shù)。

當(dāng)我們處理一些圖論、鏈表、數(shù)組、樹等問題時,這個標(biāo)準(zhǔn)定義下的多項式時間和我們傳統(tǒng)的多項式時間相差無幾。比如,用選擇排序?qū)υ貍€數(shù)為的數(shù)組進行排序時,傳統(tǒng)時間復(fù)雜度為。輸入規(guī)模,因此,得到的標(biāo)準(zhǔn)時間復(fù)雜度是,仍然是多項式時間。

類似的,假設(shè)在帶有個節(jié)點、條邊的圖中做DFS(深度優(yōu)先搜索),傳統(tǒng)時間復(fù)雜度為。數(shù)據(jù)規(guī)模,因此,標(biāo)準(zhǔn)時間復(fù)雜度是,仍是多項式時間的。

然而,當(dāng)我們處理一些與數(shù)論有關(guān)的問題時,事情就不太樂觀了?,F(xiàn)在我們來討論判斷一個整數(shù)是否為素數(shù)的算法,下面是一個簡單的算法:
function isPrime(n):for i from 2 to n - 1:if (n mod i) = 0, return falsereturn true 顯然,這個算法在傳統(tǒng)時間復(fù)雜度計算方法中是多項式時間的。我們不妨認(rèn)為它的傳統(tǒng)時間復(fù)雜度是。然后我們再來分析這個問題的輸入規(guī)模,可能有的同學(xué)會說,對于32-bit整數(shù),這個輸入規(guī)模不就是32嗎?這話雖然沒錯,但是因為在這個問題中,輸入規(guī)模完全依賴于的大小,所以的范圍不再限制在32-bit整數(shù)的范圍內(nèi),而是要探討當(dāng)更大時對數(shù)據(jù)規(guī)模的影響。我們知道,保存一個整數(shù)所需要的bit位數(shù),因此,在標(biāo)準(zhǔn)的時間復(fù)雜度中,此算法的復(fù)雜度變?yōu)榱?這已經(jīng)不再是多項式時間,而是一個指數(shù)時間。

我們可以從下面這個例子中直觀感受一下這種指數(shù)時間的增長速度:
對于一個二進制串:
10001010101011
我們記指數(shù)時間復(fù)雜度算法運行時間為T。
然后,我們在二進制串后面僅僅增加一位
100010101010111
這時,算法運行時間會變?yōu)?T(至少)!因此,我們僅僅增加幾個bit 就會使得算法運行時間成倍成倍的增長。

... ...

最后我們來說偽多項式時間的定義:
如果一個算法的傳統(tǒng)時間復(fù)雜度是多項式時間的,而標(biāo)準(zhǔn)時間復(fù)雜度不是多項式時間的,則我們稱這個算法是偽多項式時間的。
除此之外,原回答者還提到了偽多項式時間算法在加密中的應(yīng)用,多項式時間的素數(shù)判斷算法等,有興趣的同學(xué)請移步原答案。

總結(jié)

以上是生活随笔為你收集整理的【伪多项式时间】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。