在學(xué)習(xí)決策樹(shù)的時(shí)候,我們知道,其一大特點(diǎn)是:尋找最佳的決策樹(shù)是NP完成問(wèn)題。什么是NP完全問(wèn)題,決策樹(shù)的這一特點(diǎn)又是什么意思?
什么是NP完全問(wèn)題
這里的NP其實(shí)是Non-deterministic Polynomial
的縮寫(xiě),即多項(xiàng)式復(fù)雜程度的非確定性問(wèn)題,NP完全問(wèn)題有時(shí)也會(huì)簡(jiǎn)稱(chēng)為NP-C問(wèn)題。與此概念相關(guān)的還有P類(lèi)問(wèn)題、NP類(lèi)問(wèn)題等。要理解什么是NP完全問(wèn)題,首先得從P類(lèi)問(wèn)題開(kāi)始理解。
所有可以在多項(xiàng)式時(shí)間內(nèi)求解的判定問(wèn)題構(gòu)成P類(lèi)問(wèn)題
判定問(wèn)題是指回答結(jié)果輸出為Yes
或No
的問(wèn)題,比如:3233是否可以寫(xiě)成兩個(gè)大于1的數(shù)字的乘積?是否存在一條路線(xiàn)有且僅有一次的走過(guò)七橋問(wèn)題的每一座橋?
在設(shè)計(jì)程序時(shí),我們經(jīng)常需要評(píng)估這個(gè)程序的時(shí)間復(fù)雜度,即衡量當(dāng)問(wèn)題規(guī)模變大后,程序執(zhí)行所需的時(shí)間增長(zhǎng)會(huì)有多快。如O(1)表示常數(shù)級(jí)別,即不管問(wèn)題的規(guī)模變大多少倍,所耗的時(shí)間不會(huì)改變;O(N^2) 表示平方級(jí)別,即當(dāng)問(wèn)題規(guī)模增大至2倍時(shí),所花費(fèi)的時(shí)間則放大至4倍;O(2^N) 表示指數(shù)級(jí)別,即當(dāng)問(wèn)題規(guī)模倍數(shù)擴(kuò)大時(shí),所用時(shí)間會(huì)呈指數(shù)放大。
多項(xiàng)式時(shí)間則是指O(1)、O(logN)、O(N^2) 等這類(lèi)可用多項(xiàng)式表示的時(shí)間復(fù)雜度,通常我們認(rèn)為計(jì)算機(jī)可解決的問(wèn)題只限于多項(xiàng)式時(shí)間內(nèi)。而O(2^N)、O(N!)這類(lèi)非多項(xiàng)式級(jí)別的問(wèn)題,其復(fù)雜度往往已經(jīng)到了計(jì)算機(jī)都接受不了的程度。
所有非確定性多項(xiàng)式時(shí)間內(nèi)可解的判定問(wèn)題構(gòu)成NP類(lèi)問(wèn)題
NP類(lèi)問(wèn)題將問(wèn)題分為求解和驗(yàn)證兩個(gè)階段,問(wèn)題的求解是非確定性的,無(wú)法在多項(xiàng)式時(shí)間內(nèi)得到答案,而問(wèn)題的驗(yàn)證卻是確定的,能夠在多項(xiàng)式時(shí)間里確定結(jié)果。
比如:是否存在一個(gè)公式可以計(jì)算下一個(gè)質(zhì)數(shù)是多少?這個(gè)問(wèn)題的答案目前是無(wú)法直接計(jì)算出來(lái)的,但是如果某人給出了一個(gè)公式,我們卻可以在多項(xiàng)式時(shí)間里對(duì)這個(gè)公式進(jìn)行驗(yàn)證。
NP中的一類(lèi)比較特殊的問(wèn)題,這類(lèi)問(wèn)題中每個(gè)問(wèn)題的復(fù)雜度與整個(gè)類(lèi)的復(fù)雜度有關(guān)聯(lián)性,假如其中任意一個(gè)問(wèn)題在多項(xiàng)式時(shí)間內(nèi)可解的,則這一類(lèi)問(wèn)題都是多項(xiàng)式時(shí)間可解。這些問(wèn)題被稱(chēng)為NP完全問(wèn)題。
可以說(shuō)NP完全問(wèn)題是NP類(lèi)問(wèn)題的一種特殊情況,總結(jié)這幾類(lèi)問(wèn)題的特點(diǎn),可參考如下這個(gè)表格:
問(wèn)題類(lèi)型 | 是否能在多項(xiàng)式時(shí)間內(nèi)求解 | 是否能在多項(xiàng)式時(shí)間內(nèi)驗(yàn)證 |
---|---|---|
P | 是 | 是 |
NP | 是 or 否 | 是 |
NP-C | 未知 | 是 |
注:表格中的問(wèn)題類(lèi)型的困難程度依次遞增
由表可知,NP類(lèi)問(wèn)題是否能在多項(xiàng)式時(shí)間內(nèi)求解,其答案并不明確,如果回答為「是」,豈不是跟P類(lèi)問(wèn)題一樣了?值得一題的是,P=NP?是千禧七大難題的首個(gè)難題,是一個(gè)價(jià)值百萬(wàn)美元的問(wèn)題,這個(gè)問(wèn)題本質(zhì)是求證:能用多項(xiàng)式時(shí)間驗(yàn)證解的問(wèn)題是否內(nèi)在多項(xiàng)式時(shí)間內(nèi)找出解。
決策樹(shù)的NP完全問(wèn)題
在決策樹(shù)算法中,尋找最優(yōu)決策樹(shù)是一個(gè)NP完全問(wèn)題。決策樹(shù)的這一特點(diǎn),說(shuō)明我們無(wú)法利用計(jì)算機(jī)在多項(xiàng)式時(shí)間內(nèi),找出全局最優(yōu)的解。
也正因?yàn)槿绱耍蠖鄶?shù)決策樹(shù)算法都采用啟發(fā)式的算法,如貪心算法,來(lái)指導(dǎo)對(duì)假設(shè)空間的搜索。可以說(shuō),決策樹(shù)最后的結(jié)果,是在每一步、每一個(gè)節(jié)點(diǎn)上做的局部最優(yōu)選擇。決策樹(shù)得到的結(jié)果,是沒(méi)法保證為全局最優(yōu)的。
(全文完)
參考文章:
1、什么是P問(wèn)題、NP問(wèn)題和NPC問(wèn)題
2、what are the differences between np, np-complete and np-hard