Posted on 2010-08-17 13:59
Brian 閱讀(700)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
概念和技術(shù)
1. 計(jì)算復(fù)雜性 O
這是描述一種算法需要多少 Running time 的度量。(也有空間復(fù)雜性,但因?yàn)樗鼈兡芟嗷マD(zhuǎn)換,所以通常我們就說時(shí)間復(fù)雜性。對(duì)于大小為 n 的輸入,我們用含 n 的簡(jiǎn)化式子來表達(dá)。(所謂簡(jiǎn)化式子,就是忽略系數(shù)、常數(shù),僅保留最“大”的那部分)。
比如找出 n 個(gè)數(shù)中最大的一個(gè),很簡(jiǎn)單,就是把第一個(gè)數(shù)和第二個(gè)比,其中大的那個(gè)再和第三個(gè)比,依次類推,總共要比 n-1 次,我們記作 O(n) (對(duì)于 n 可以是很大很大的情況下,-1可以忽略不計(jì)了)。
再比如從小到大排好的 n 個(gè)數(shù),從中找出等于 x 的那個(gè)。一種方法是按著順序從頭到尾一個(gè)個(gè)找,最好情況是第一個(gè)就是 x,最壞情況是比較了 n 次直最后一個(gè),因此最壞情況下的計(jì)算復(fù)雜度也是 O(n)。還有一種方法:先取中間那個(gè)數(shù)和 x 比較,如偏大則在前一半數(shù)中找,如偏小則在后一半數(shù)中找,每次都是取中間的那個(gè)數(shù)進(jìn)行比較,則最壞情況是 lg(n)/lg2。忽略系數(shù)lg2,算法復(fù)雜度是O(lgn)。
2. 計(jì)算復(fù)雜性的排序
根據(jù)含 n 的表達(dá)式隨 n 增大的增長(zhǎng)速度,可以將它們排序:1 < lg(n) < n < nlg(n) < n^2 < ... < n^k (k是常數(shù))< ... < 2^n (不用死記,想象它們的函數(shù)曲線,一看便明)。最后這個(gè) 2 的n 次方就是級(jí)數(shù)增長(zhǎng)了,讀過棋盤上放麥粒故事的人都知道這個(gè)增長(zhǎng)速度有多快。而之前的那些都是 n 的多項(xiàng)式時(shí)間的復(fù)雜度。為什么我們?cè)谶@里忽略所有的系數(shù)、常數(shù),例如 2*n^3+9*n^2 可以被簡(jiǎn)化為 n^3?老師上課也沒有說原因,所以我也不知道。但是如果對(duì)對(duì) (2*n^3+9*n^2)/(n^3) 求導(dǎo),結(jié)果是0,仔細(xì)想想,我也沒有想出所以然來。
3. P 問題
對(duì)一個(gè)問題,凡是能找到計(jì)算復(fù)雜度可以表示為多項(xiàng)式的確定算法,這個(gè)問題就屬于 P (polynomial) 問題。
4. NP 問題
NP 中的 N 是指非確定的(non-deterministic)算法,這是這樣一種算法:
(1)猜一個(gè)答案。(2)驗(yàn)證這個(gè)答案是否正確。(3)只要存在某次驗(yàn)證,答案是正確的,則該算法得解。
NP (non-deterministic polynomial)問題就是指,用這樣的非確定的算法,驗(yàn)證步驟(2)有多項(xiàng)式時(shí)間的計(jì)算復(fù)雜度的算法。
5. 問題的歸約
想象一下函數(shù)的映射是怎么一回事吧。這個(gè)概念需要弄懂。
大致就是這樣:找從問題1的所有輸入到問題2的所有輸入的對(duì)應(yīng),如果相應(yīng)的,也能有問題2的所有輸出到問題1的所有輸出的對(duì)應(yīng),則若我們找到了問題2的解法,就能通過輸入、輸出的對(duì)應(yīng)關(guān)系,得到問題1的解法。由此我們說問題1可歸約到問題2。
再給一個(gè)我找到的高端解釋:
問題歸約是人求解問題常用的策略,其把復(fù)雜的問題變換為若干需要同時(shí)處理的較為簡(jiǎn)單的子問題后再加以分別求解。只有當(dāng)這些子問題全部解決時(shí),問題才算解決,問題的解答就由子問題的解答聯(lián)合構(gòu)成。問題歸約可以遞歸地進(jìn)行,直到把問題變換為本原問題的集合。所謂本原問題就是不可或不需再通過變換化簡(jiǎn)的"原子"問題,本原問題的解可以直接得到或通過一個(gè)"黑箱"操作得到。
6. NP-Hard
有這樣一種問題,所有 NP 問題都可以歸約到這種問題,我們稱之為 NP-hard 問題。
7. NP完全問題 (NP-Complete)
如果一個(gè)問題既是 NP 問題又是 NP-Hard 問題,則它是 NP-Complete 問題。可滿足性問題就是一個(gè) NP 完全問題,此外著名的給圖染色、哈密爾頓環(huán)、背包、貨郎問題都是 NP 完全問題。