国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

NP-Hard?大白話學(xué)習(xí)P問題、NP問題、NP完全問題和NP難問題

這篇具有很好參考價(jià)值的文章主要介紹了NP-Hard?大白話學(xué)習(xí)P問題、NP問題、NP完全問題和NP難問題。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

## 該筆記自用為主,記錄一些日常學(xué)習(xí)過程中看到的不熟悉的知識(shí)和從未接觸過的知識(shí),用于回看和記錄。其中有一些個(gè)人理解,如有錯(cuò)誤請(qǐng)討論指正。

前言

在討論這一串問題之前,我們需要復(fù)習(xí)兩個(gè)概念。

1.多項(xiàng)式和非多項(xiàng)式

多項(xiàng)式:NP-Hard?大白話學(xué)習(xí)P問題、NP問題、NP完全問題和NP難問題

非多項(xiàng)式:或者

2.時(shí)間復(fù)雜度

在計(jì)算機(jī)算法求解問題當(dāng)中,經(jīng)常用時(shí)間復(fù)雜度和空間復(fù)雜度來表示一個(gè)算法的運(yùn)行效率??臻g復(fù)雜度表示一個(gè)算法在計(jì)算過程當(dāng)中要占用的內(nèi)存空間大小。時(shí)間復(fù)雜度則表示這個(gè)算法運(yùn)行得到想要的解所需的計(jì)算工作量。這里探討的是當(dāng)輸入值(也就是問題數(shù)目N,或者是待求解的問題)接近無窮時(shí),算法所需工作量的變化快慢程度。

舉例:冒泡排序。

在計(jì)算機(jī)當(dāng)中,排序問題是最基礎(chǔ)的,將輸入按照大小或其他規(guī)則排好序,有利于后期運(yùn)用數(shù)據(jù)進(jìn)行其他運(yùn)算。冒泡排序就是其中的一種排序算法。假設(shè)手上現(xiàn)在有n個(gè)無序的數(shù)(N個(gè)待排序的問題),利用冒泡排序?qū)ζ溥M(jìn)行排序,

①首先比較第1個(gè)數(shù)和第2個(gè)數(shù),如果后者>前者,就對(duì)調(diào)他們的位置,否則不變

②接著比較第2個(gè)數(shù)和第3個(gè)數(shù),如果后者>前者,就對(duì)調(diào)他們的位置,否則不變

③一直向下比較直到第n-1和第n個(gè)數(shù)比較完,第一輪結(jié)束。(這時(shí)候最大的數(shù)移動(dòng)到了第n個(gè)數(shù)的位置)

④重復(fù)前三步,但是只比較到第n-1個(gè)數(shù)(將第二大的數(shù)移動(dòng)到第n-1個(gè)數(shù)位置)

⑤持續(xù)每次對(duì)越來越少的元素重復(fù)上面的步驟,直到?jīng)]有任何一對(duì)數(shù)字需要比較。

舉個(gè)實(shí)例:5,4,3,2,1,對(duì)其進(jìn)行排序,先是比較5跟4變成4,5,3,2,1,第一輪結(jié)束后變成43215,可以計(jì)算,當(dāng)對(duì)其排序完正好要經(jīng)過4+3+2+1=10次比較,當(dāng)然這是最復(fù)雜的情況,即完全反序??梢灾缹?duì)于n個(gè)數(shù),至多要經(jīng)過1+2+...+n-1即(n^2-n)/2次比較才能排好序。這個(gè)式子里n的最高次階是2,可知道當(dāng)n→∞時(shí),一次性對(duì)其比較次數(shù)影響很小,所以我們把這個(gè)算法的時(shí)間復(fù)雜度比作:。取其最高次,可以看出,這是一個(gè)時(shí)間復(fù)雜度為多項(xiàng)式的表示方式。

另外一些窮舉類的算法,所需時(shí)間長(zhǎng)度成幾何階數(shù)上漲,這就是的指數(shù)級(jí)復(fù)雜度,甚至的階乘級(jí)復(fù)雜度。它是非多項(xiàng)式級(jí)的,其復(fù)雜度計(jì)算機(jī)往往不能承受。

當(dāng)我們?cè)诮鉀Q一個(gè)問題時(shí),我們選擇的算法通常都需要是多項(xiàng)式級(jí)的復(fù)雜度,非多項(xiàng)式級(jí)的復(fù)雜度需要的時(shí)間太多,往往會(huì)超時(shí),除非是數(shù)據(jù)規(guī)模非常小。

正文

1、P問題
P問題:能夠在多項(xiàng)式時(shí)間內(nèi)被解決的問題。

比如說,給10個(gè)、20個(gè)、30個(gè)… 元素(問題)排序,復(fù)雜度是

2、NP問題
NP問題:能夠在多項(xiàng)式時(shí)間內(nèi)使用非確定性算法(non-deterministic)被解決的問題。

NP問題也可以指在多項(xiàng)式的時(shí)間里驗(yàn)證一個(gè)解的問題。另一個(gè)定義是,可以在多項(xiàng)式的時(shí)間里猜出一個(gè)解的問題。

簡(jiǎn)單來說就是,必須以非常規(guī)方法才能在多項(xiàng)式時(shí)間內(nèi)解決的問題,就叫做NP問題。

舉個(gè)例子:

我人品很好,在程序中需要枚舉時(shí),我可以一猜一個(gè)準(zhǔn)。

現(xiàn)在某人拿到了一個(gè)求最短路徑的問題,問從起點(diǎn)到終點(diǎn)是否有一條小于100個(gè)單位長(zhǎng)度的路線。它根據(jù)數(shù)據(jù)畫好了圖,但怎么也算不出來,于是來問我:你看怎么選條路走得最少?

我說,我人品很好,肯定能隨便給你指條很短的路出來。然后我就胡亂畫了幾條線,說就這條吧。那人按我指的這條把權(quán)值加起來一看,嘿,神了,路徑長(zhǎng)度98,比100小。

于是答案出來了,存在比100小的路徑。別人會(huì)問他這題怎么做出來的,他就可以說,因?yàn)槲艺业搅艘粋€(gè)比100 小的解。在這個(gè)題中,找一個(gè)解很困難,但驗(yàn)證一個(gè)解很容易。

驗(yàn)證一個(gè)解只需要O(n)的時(shí)間復(fù)雜度,也就是說我可以花O(n)的時(shí)間把我猜的路徑的長(zhǎng)度加出來。那么,只要我運(yùn)氣好,猜得準(zhǔn),我一定能在多項(xiàng)式的時(shí)間里解決這個(gè)問題。這就是NP問題。

3、NP-complete問題(即:NP完全問題)

NP-Complete 滿足兩個(gè)條件:

  • 首先它是一個(gè)NP問題
  • 所有的NP問題都可以約化(Reducible)到它,NPC問題目前沒有多項(xiàng)式的有效算法,只能用指數(shù)級(jí)甚至階乘級(jí)復(fù)雜度的搜索

約化:例如,求解一個(gè)一元一次方程 A AA 和求解一個(gè)一元二次方程 B BB,你若會(huì)求解 B BB ,你一定會(huì)求解 A AA。那么我們說,A 可以約化為 B。B BB 的時(shí)間復(fù)雜度高于或者等于 A AA的時(shí)間復(fù)雜度。

NP問題中最困難的問題稱之為NP完全問題(NP-complete)。根據(jù)庫(kù)克定理,任意一個(gè)NP完全問題如果能夠在多項(xiàng)式時(shí)間內(nèi)解決,則所有的NP問題都能在多項(xiàng)式時(shí)間內(nèi)解決。

一般來說,非常規(guī)方法既可以解決P問題,也可以解決NP問題,所以,只有用非常規(guī)方法才能解決的問題,才能叫做NP完全問題。

示例:旅行商問題。就是一個(gè)NP完全問題,因?yàn)槠溟_銷不能在多項(xiàng)式時(shí)間內(nèi)解決,而是一個(gè)非多項(xiàng)式時(shí)間復(fù)雜度的問題。

4、NP-Hard問題(即:NP難問題)
NP-Hard問題:和NP問題一樣困難,或者更加困難的問題。

NP hard 滿足 NPC 的第二條件,但不一定是 NP 問題。
因?yàn)樗灰欢ㄊ荖P問題。即使 NPC 問題發(fā)現(xiàn)了多項(xiàng)式級(jí)的算法,NP-Hard 問題有可能仍然無法得到多項(xiàng)式級(jí)的算法。事實(shí)上,由于 NP-Hard 放寬了限定條件,它將有可能比所有的 NPC 問題的時(shí)間復(fù)雜度更高從而更難以解決。

anyway,感覺對(duì)于NP-C和NP-Hard還是有一點(diǎn)點(diǎn)混淆,等下次再遇見了再來理解并修改它。

其實(shí)還有點(diǎn)想糾結(jié)一下NPC的邏輯,但是,下次再說吧

以上四個(gè)問題他們之間的關(guān)系可以用下圖來表示:?

參考鏈接:

到底什么是NP問題,NP hard問題,NP完全問題?

P問題、NP問題、NP完全問題和NP難問題

【釋義】NP complete概念淺析(涵蓋:P問題,NP問題,NP完全問題,NP難問題)文章來源地址http://www.zghlxwxcb.cn/news/detail-484307.html

到了這里,關(guān)于NP-Hard?大白話學(xué)習(xí)P問題、NP問題、NP完全問題和NP難問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 設(shè)計(jì)模式大白話——命令模式

    設(shè)計(jì)模式大白話——命令模式

    ? 顧名思義,命令模式其實(shí)和現(xiàn)實(shí)生活中直接下 命令 的動(dòng)作類似,怎么理解這個(gè) 命令 是理解命令模式的關(guān)鍵?。?!直接說結(jié)論是很不負(fù)責(zé)的行為,因此我將會(huì)結(jié)合之后的例子來向你介紹它,來幫助你更好的理解,而不是僅僅死記硬背它。這樣你會(huì)在以后需要的時(shí)候想起它

    2024年02月11日
    瀏覽(29)
  • 大白話解析LevelDB: VersionSet

    在 LevelDB 中, VersionSet 類是一個(gè)關(guān)鍵的內(nèi)部組件,負(fù)責(zé)管理數(shù)據(jù)庫(kù)的不同版本。這個(gè)類跟蹤了所有的 SSTables(排序字符串表)和它們?cè)跀?shù)據(jù)庫(kù)中的布局。每次對(duì)數(shù)據(jù)庫(kù)進(jìn)行修改時(shí)(如添加、刪除數(shù)據(jù)),LevelDB 會(huì)創(chuàng)建一個(gè)新的 Version 對(duì)象,這個(gè)對(duì)象由 VersionSet 管理。 VersionSe

    2024年01月19日
    瀏覽(21)
  • 用大白話舉例子講明白云計(jì)算

    前幾天王堅(jiān)院士在2023云棲大會(huì)上發(fā)表了關(guān)于云計(jì)算的演講,聽得我是熱血沸騰,王院士稱AI和云計(jì)算的結(jié)合是“云計(jì)算的第三次浪潮”,對(duì)此我深表認(rèn)同。但是身邊的很多朋友還不知道云計(jì)算是什么意思,有些人還認(rèn)為百度云和百度云盤是一個(gè)東西,下面我用大白話舉例說明

    2024年02月04日
    瀏覽(25)
  • 設(shè)計(jì)模式大白話——適配器模式

    設(shè)計(jì)模式大白話——適配器模式

    ? 適配器其實(shí)非常好理解,放到生活中來,我們身邊處處都有這樣的例子,最常見的是用的比較多的各種轉(zhuǎn)接線(如:USB 轉(zhuǎn) Type-C),有了這個(gè)“適配器”,我們就能夠?qū)㈦娔X和手機(jī)等設(shè)備相進(jìn)行連接,而不需要改動(dòng)電腦/手機(jī)的原有接口。 ? 回到編程的世界中,假設(shè)我們的

    2024年02月10日
    瀏覽(26)
  • 用大白話舉例子講明白區(qū)塊鏈

    什么是區(qū)塊鏈?網(wǎng)上這么說: 區(qū)塊鏈?zhǔn)且环N分布式數(shù)據(jù)庫(kù)技術(shù),它以塊的形式記錄和存儲(chǔ)交易數(shù)據(jù),并使用密碼學(xué)算法保證數(shù)據(jù)的安全性和不可篡改性。每個(gè)塊都包含了前一個(gè)塊的哈希值和自身的交易數(shù)據(jù),形成了一個(gè)不斷增長(zhǎng)的鏈條。 區(qū)塊鏈的特點(diǎn)包括: 分布式:區(qū)塊鏈

    2024年02月04日
    瀏覽(25)
  • 大白話理解-微信小程序獲取授權(quán)

    大白話理解-微信小程序獲取授權(quán)

    微信用戶授權(quán),才可以操作微信官方的某些接口。 簡(jiǎn)單來說就是:微信定義了很多接口,然后他們認(rèn)為有一部分是涉及到用戶使用安全的,所以把這一部分劃分了出來,然后這一部分按照功能來拆開各種范圍。于是有了scope列表的東西,scope翻譯為中文是范圍的意思。(定位屬于

    2024年02月02日
    瀏覽(29)
  • React底層原理分析(簡(jiǎn)單大白話版本)

    react包 react-dom包 react-reconciler包 scheduler包 Fiber對(duì)象 diff算法 深度優(yōu)先遍歷? 堆排序 鏈表,棧操作 react合成事件

    2024年01月20日
    瀏覽(26)
  • Lighting Network(閃電網(wǎng)絡(luò))大白話解析

    Lighting Network(閃電網(wǎng)絡(luò))大白話解析

    通道(Channel),通過在主網(wǎng)宣布通道建立,而后交易雙方轉(zhuǎn)至鏈下交易,把多次交易在鏈下完成,不占用主網(wǎng)資源,交易完成后在主網(wǎng)廣播最終交易結(jié)果,無需更改主網(wǎng)機(jī)制即可實(shí)現(xiàn)吞吐量的提高。 “通道”是一個(gè)邏輯上的概念,實(shí)際使用過程中并沒有“通道”,即使在數(shù)據(jù)傳

    2024年02月04日
    瀏覽(26)
  • 大白話說說Docker容器默認(rèn)網(wǎng)絡(luò)模型工作原理

    大白話說說Docker容器默認(rèn)網(wǎng)絡(luò)模型工作原理

    Docker的默認(rèn)網(wǎng)絡(luò)模型 —— 橋接模式(Bridge) 當(dāng)你不做任何特殊設(shè)置時(shí),Docker會(huì)使用一種叫做“橋接模式”的網(wǎng)絡(luò)設(shè)置。這就像是給你的容器小房子安裝了一個(gè)虛擬的橋接網(wǎng)絡(luò)。這座橋連接著容器和你的電腦(宿主機(jī)),還能與外界通信。 虛擬網(wǎng)絡(luò)橋 :想象一下,在你的電

    2024年02月21日
    瀏覽(17)
  • 用大白話來講講多線程的知識(shí)架構(gòu)

    用大白話來講講多線程的知識(shí)架構(gòu)

    感覺多線程的知識(shí)又多又雜,自從接觸java,就在一遍一遍捋脈絡(luò)和深入學(xué)習(xí)。現(xiàn)在將這次的學(xué)習(xí)成果展示如下。 什么是多線程? 操作系統(tǒng)運(yùn)行一個(gè)程序,就是一個(gè)線程。同時(shí)運(yùn)行多個(gè)程序,就是多線程。即在同一時(shí)間,并行做多件事。 “并行”是相對(duì)于我們這些用戶來說的

    2024年02月11日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包