• 沒有找到結果。

談談庫克定理的證明

N/A
N/A
Protected

Academic year: 2022

Share "談談庫克定理的證明"

Copied!
6
0
0

加載中.... (立即查看全文)

全文

(1)

談談庫克定理的證明

堵丁柱 葛可一

談到庫克定理, 凡是懂點計算複雜性理 論的人都知道它。 它是該理論中最重要, 最基 礎的定理之一。 因此, 凡是含有計算複雜性內 容的專著和教科書都會講解庫克定理。 各本 書中的證明也不盡相同。 其花樣翻新, 恰似八 仙過海, 各顯其能。 這中間溶入了許多人的智 慧。 不過, 其中也有不小心, 含有失誤者。 讓 我們就從這樣一個含有失誤的相當流行的證 明開始, 到這座百花園中走一走, 學一學。 學 習不就是去偽存真, 去粗取精的過程嗎?

首先, 讓我們簡略解釋一下什麼是庫克 定理。 如下是個趣味邏輯問題: 三個好朋友苗 苗, 壯壯, 山山告訴人們, 他們三個之中誰大 誰小。 苗苗說:“如果山山不是最小的, 那麼我 就是”。 壯壯說: “如果我不是最小的, 那麼苗 苗就是最大的”。 你能知道誰大誰小嗎?

解它的方法之一是列邏輯方程。 以 A, B, C 分別記苗苗, 壯壯, 山山三人。 以 X0

記命題 “X 是最大的”, 以 Xy記命題 “X 是 最小的”。 這樣一來, 命題“如果山山不是最小 的, 那麼苗苗就是”。 可以表達為 Cy+Ay, 而 命題“如果壯壯不是最小的, 那麼苗苗就是最 大的”。 可以表達為 By+ Ao。 由於這兩個命

題為真, 因此我們得到兩個等式:

Cy + Ay = 1 By+ Ao = 1 將這兩個等式相乘, 得

(Cy+ Ay)(By + Ao) = 1.

亦即,

CyBy+ CyAo+ AyBy+ AyAo = 1.

注意, 不可能有兩人最小, 也不可能有一人既 最小也最大。 因此,

CyBy = AyBy = AyAo= 0.

這樣, 我們得到

CyAo = 1,

也就是說, 苗苗最大, 山山最小, 壯壯居中。

給出一個邏輯方程, 判斷它是否有解。

或者, 給出一個邏輯函數, 判斷它是否有使 函數值等於 1 的變量賦值。 這稱為 SAT 問 題。 具有使函數值等於1的變量賦值的邏輯函 數稱為可滿足的, 該變量賦值稱為真賦值。

庫克定理: SAT問題是 NP 完全的。

22

(2)

現在, 來看看一個相當流行的教科書 [4]中的證明。 為避免太繁瑣, 我們將概述該證 明, 只將值得注意的地方詳細列出。 尤其, 無 法詳細解釋有關概念。 誠請讀者諒解。 如果有 不懂的術語, 請對照原書。

首先證明, SAT 問題屬於 NP 類。 這很 容易, 對給出函數, 猜一組變量賦值, 檢驗它 是否是真賦值。 這過程可以由 NTM (Non- deterministic Turing Machine) 在多項式 時間內實現。

其次證明, NP 類中任何語言 L, 均有 L ≤pm SAT, 也就是說, 存在一個多項式時 間可計算的映射 g 使得, x ∈ L 若且唯若 g[x](·) ∈ SAT , 其中 g[x](·) ∈ SAT 的意 思是說, g[x](·) 是可滿足的邏輯函數。

語言 L 屬於 NP 類, 這意味著存在多項 式時間單帶 NTM M 接受 L。(單帶 NTM 由三部份組成: 一條記憶帶, 帶上一個讀寫頭 和與其連接的有限控制器。) 設多項式 p(n) (p(n) ≥ n) 是 M 的時間上界。 這意味著, x ∈ L 若且唯若, 在輸入 x 之後, M 有一 條計算道路, 最多經過 p(n) 次移動, 就會進 入終止狀態, 其中, n 是符號行 x 的長度, 即 n= |x|.

設 #β01· · · #βp(n) 是 M 的一條 計算道路。 其中, 每個 βi 是 M 的一個 ID。

ID是瞬間像 (Instantaneous Description) 的縮寫。 它含 M 在瞬間具有的如下三個數 據: 帶上符號行, 讀寫頭位置, 有限控制器的 狀態。 由於讀寫頭最初停在帶的最左格處, 而 每次只向左或右移動一格, 因此諸 βi 最多 有 p(n) + 1 格非空。 讀寫頭位置也一定在

最左邊的這 p(n) + 1 格之中。 這樣一來, 每 個 ID βi 可以只含這個 p(n) + 1 格。 為 使 ID 更簡捷, 不妨把有限控制器的狀態也 放到讀寫頭所在的格里。 這也就是說, 每個 ID βi 含p(n) + 1 格。 其中, p(n) 格含 Γ 中符號, 恰有一格含 Q#Γ 中元素 (稱為複 合符合)。 這裡, Γ 是M 的帶上可用符號字 母表, Q 是 M 的有限控制器的狀態集合。

值得注意, 當 x ∈ L 時, M 可能只移動 k < p(n) 次就進入終止狀態。 這時, 我們令 βk= · · · = βp(n)

記 ID βi 的第 j 格為格 (i, j), 0 ≤ i ≤ p(n), 1 ≤ j ≤ p(n) + 1。 對每個 a ∈ Γ ∪ Q#Γ 和每個格 (i, j), 定義一個 邏輯變量 ci,j,a : ci,j,a = 1 若且唯若格 (i, j) 所含的是 a。

下面, 需要構造四個邏輯函數 gi, i = 1, 2, 3, 4, 使得, gi = 1 若且唯若下面的 (i) 真。

(1) 對每格 (i, j), 有且僅有一 a ∈ Γ ∪Q#Γ 使得 ci,j,a = 1。

(2) β0 是 M 的初始 ID。

(3) βp(n) 含終止狀態。

(4) 對每個 i, βi+1 是由 βi 經一次移動而得 到。

如果這四個邏輯函數構造好了, 那麼令 g[x] = g1g2g3g4, 就會有 x ∈ L 若且唯若 g[x] 可滿足。 事實上, 若 x ∈ L, 則對輸入 x, M 有一條計算道路 #β01· · · #βp(n) 滿足 (2)(3)(4)。 考慮如下變量賦值

ci,j,a =

1 若 βi 的第 j格所含的是 a 0 否則。

(3)

這賦值可使 gi = 1, i = 1, 2, 3, 4, 因 此使 g[x] = 1。 反之, 若 g[x] 可滿 足, 則有變量賦值使 g[x] = 1。 這意味著, (1)(2)(3)(4) 真。 由於 (1) 真, 可以構造

01· · · βp(n) 使得, ci,j,a = 1 若且唯 若格 (i, j) 所含的是 a。 由於 (2)(3)(4) 真, 可知 #β01· · · #βp(n) 是接受 x 的一條 計算道路。 於是, x ∈ L。

現在, 所剩工作是構造四個邏輯函數 gi, i = 1, 2, 3, 4 了。 對三個邏輯函數 g1, g2 和 g3 的構造, 我們沒有異議。 可是, 對於 g4

的構造, 我們就不敢茍同了。

事實上, 該書首先“定義一個邏輯判據 f(W, X, Y, Z) 使得, f (W, X, Y, Z) = 1 若 且唯若, 當某個 ID 的第 j − 1, j, j + 1 格 所含的分別是 W, X, Y 時, Z 允許出現在緊 跟其後的 ID 的第 j 格中 [若 j = 1, 則 W = #; 若 j = p(n) + 1, 則 Y = #]。”然 後定義 g4

Y

(i,j)

 X

f(w,x,y,z)=1

(ci,j−1,Wci,j,Xci,j+1,Yci+1,j,Z) .

為什麼這樣定義 g4? 有一段解釋:

“為了弄清怎樣寫第四個公式, 其表達每 個 ID βi, i ≥ 1, 是由 βi−1 通過 βi−1 中複 合符號的移動而得, 要注意, 我們基本上可以 從 βi−1 的相應符號以及它兩邊的符號 (其中 之一可能是 # ) 導出 βi 的符號。 亦即, βi 中符號與 βi−1 中相應符號相同, 除非後者或 者它的相鄰者是複合符號, 並且讀寫頭移動 到了那個 βi 的符號”。

這個聽起來挺順耳的定義真能保證“若 g4 = 1 則 (4) 真”嗎? 其實, 不能。 讓我 們舉一個反例, 讀者就會很快明白。

設 δ 是 M 的轉換函數。 由於 M 是個 NTM, δ 從 Q × Γ 映射到 2Q×Γ×{R,L}; 亦 即, 對每個狀態 q ∈ Q 和每個符號 a ∈ Γ, δ(q, a) 是 Q × Γ × {R, L} 的一個子集 合。(p, b, R) ∈ δ(q, a)((p, b, L) ∈ δ(q, a)) 的意思是說, 當 M 在狀態 q 下, 讀寫頭讀到 符號 a 時, M 可以進入狀態 p, 同時, 讀寫 頭將所讀格中符號 a 塗掉, 寫上符號 b 並且 向右 (左) 移動一格。

現在, 讓我們把 p(n) + 1 個 ID 排列 成一個 (p(n) + 1) × (p(n) + 1) 矩陣; 第 i 行是第 i 個 ID βi。 這時, g4 的上述定義意 味著, 我們用四個格 (i, j − 1), (i, j), (i, j + 1), (i + 1, j) 所形成的如下窗口 (記為窗口 A) 來檢驗這矩陣。

(i, j − 1) (i, j) (i, j + 1) (i + 1, j)

考慮一個轉換函數δ(q, a) = {(p, b, R), (p, b, L)}。 對此轉換函數來說, 下面兩種移 動都是合理的:

c q#a d

c b p#d

c q#a d

p#c b d

現在, 我們用四格窗口 A 來觀察如下所定義 的 βi 和 βi+1

c q#a d

p#c b p#d

(4)

不難看出, 每個窗口景象都與前面的合理移 動中的某個窗口景象相同。 這就是說, 所定義 之 βi 和 βi+1 滿足 g4 = 1。 可是, 顯然 (4) 不真。 βi+1 含兩個複合符號, 不是 ID, 怎麼 能自 βi 通過一次移動而得到呢。

應該指出, 使用四個函數是較勇敢的做 法, 多數作者在證明庫克定理中構造六個邏 輯函數。 除前述之四個以外, 還有兩個勿庸置 疑、 容易構造的 g5 和 g6 , 分別表述下面兩 個條件:

(5) 每個 βi 恰含一個狀態。

(6) 每個 βi 恰含一個獨寫頭所讀之格。

這實質上來說, 每個 βi 恰含一個複合符 號。 這種條件的簡單增加是否可以補救 [4]中 的過失呢? 答案是否定的, 雖然所加的條件 使先前反例不再成立, 可是我們可以再造一 個稍微苦澀一點的。

考慮一下轉換函數δ(q, a) = {(p, b, R), (r, e, R)}, 其中 p 6= r 和 b 6= e。 對此種轉 換函數來說, 下面兩種移動都是合理的:

c q#a d

c b p#d

c q#a d

c e r#d

現在, 我們用四格窗口 A 來觀察如下所定義 的 βi 和 βi+1

c q#a d

c b r#d

不難看出, 每個窗口景象都與前面的合理移 動中的某個窗口景象相同。 這就是說, 所定義 的 βi 和 βi+1 滿足 g4 = 1。 可是 (4) 不真。

事實上, (r, b, R) 6∈ δ(q, a)。

那麼, 如何彌補這項失誤呢? 第一種是 改變檢驗窗口。

先考慮像 [4]那樣用四個條件的情況。 有 兩種基本方法:

(a) 採用兩個窗口。 除開由四格 (i, j − 1), (i, j), (i, j + 1), (i + 1, j) 組成的窗口 A 外, 再由四格 (i, j), (i + 1, j − 1), (i + 1, j), (i + 1, j + 1) 組成另外一個窗口 B。 這 就是說, 再定義一個邏輯判據 h(W, X, Y, Z) 使得, h(W, X, Y, Z) = 1 若且唯若, 當某 個 ID 的第 j − 1, j, j + 1 格所含的分別是 W, X, Y 時, Z 允許出現在緊排其前的 ID 的第 j 格中。 然後定義

g4= Y

(i,j)

 X

f(W,X,Y,Z)=1

(ci,j−1,Wci,j,Xci,j+1,Yci+1,j,Z)

!

· Y

(i,j)

 X

h(W,X,Y,Z)=1

(ci+1,j−1,Wci+1,j,Xci+1,j+1,Yci,j,Z)

! .

這實質上就是分別用兩個窗口檢察那個由 g[x] 的真賦值所造出的 #β01· · · #βp(n)

是否是條計算道路。 難道用兩個窗口就會充 分了嗎? 沒錯, 如果它能通得過兩個窗口的 檢查, 那麼我們就能證明它是條計算道路。

首先, 讓我們用數學歸納法證明, 每個 βi 恰含一個複合符號。 由條件 (2), β0

(5)

M 的初始 ID, 因此它恰有一個複合符號。

現在, 假設 βi 恰有一個複合符號, 不妨說在 格 (i, j) 之中, 那麼兩格 (i + 1, j − 1) 和 (i + 1, j + 1) 之中, 恰有一個含複合符號; 否 則, 無法通過窗口 B 的檢查。 βi+1 在其餘之 處沒有複合符號; 否則, 無法通過窗口 A 的 檢查。

其次, 如果格 (i, j) 所含是複合符號 q#a, 格 (i + 1, j) 所含符號是 b, 格 (i + 1, j − 1) (格(i + 1, j + 1)) 所含複 合符號是 p#c, 那麼一定會有 (p, b, L) ∈ δ(q, a)((p, b, R) ∈ δ(q, a)); 否則, 無法通 過窗口 B 的檢查。 如果格 (i, j) 所含是符號 a, 那麼格 (i + 1, j) 所含一定是符號 a 或者 複合符號 p#a 否則, 無法通過窗口 B 的檢 查。 這意味著, 條件 (4) 已滿足。

(b) 採用一個大窗口。 最容易想到的就 是把窗口 A 和窗口 B 合併成一個六格組成 的大窗口。 [6]和 [1]採用的就是這種窗口, 它 由六格 (i, j −1), (i, j), (i, j +1), (i+1, j − 1), (i+1, j), (i+1, j+1) 所組成。 不過, 這不 是唯一的可以承擔檢驗責任的六格窗口。 還 有兩種, 讀者可以自己找找試試。 有趣的是, 不存在少於六格的窗口有能力承擔檢驗責任。

對每種少於六格的窗口, 舉個反例, 這是個挺 好的練習題。

現在, 考慮像 [3]那樣用六個條件的情 況。 由於有了兩個額外條件, 因此, 我們不再 需要證明, 每個 βi 恰含一個複合符號。 這樣 一來, 只要通過窗口 B 的檢驗, 條件 (4) 已滿 足。 這就是說, 四格窗口 B 足有能力承擔檢 驗責任。 這就是 [2]採用的證明。 有趣的是, 有

能力承擔檢驗責任四格窗口只有這一種。 這 證明也是道挺好的的練習題。

第二種是改變圖靈機 (Turing Ma- chine) 的定義。 在書 [5]中, 讀寫頭不能同時 改變所讀的符號和左右移動; 亦即, 在圖靈機 的一次移動中, 讀寫頭若改變所讀符號就不 能移動, 若移動就不能改變所讀符號。 當採用 這種圖靈機定義時, 如果使用六個條件, 那麼 四格窗口 A 照樣能承擔責任。 有興趣的讀者 可以證證看。

第三種是將 NTM 改為 DTM。 這是相 當有趣, 而技巧特異的方法, 只有在 [3]中可 以看到。 它利用 NP 類的一個性質: L 屬於 NP 類, 若且唯若存在一個多項式 q和一 P 類中語言 A, 使得

x∈ L ⇔ ∃y(|y| ≤ q(|x|)) : x#y ∈ A.

這性質將所討論的接受 L 的 NTM 轉化成 了接受 A 的 DTM。 由於 DTM 的轉移函 數是單值的, 因此, 在採用六條件時, 無論使 用四格窗口 A 還是四格窗口 B 都無關緊要。

可是, 如果像 [3]那樣選用四格窗口 A, 那麼 四個條件就夠了。 如果選用四格窗口 B, 那麼 四個條件不行。 這事實的嚴格證明是非常好 的練習題。 需要說明, 這種技巧有一定的局限 性。 例如說, 如果像有些書籍 (例如 [4]) 那樣 採用 log-space reduction, 那麼我們就得考 慮 log-space NTM。 對這種 NTM, 上述轉 化就有點問題了。 事實上, NTM 不能有足夠 的記憶空間把所有猜測都執行完, 非得猜猜, 用用, 塗掉, 再猜不可。

最後指出, [2]是筆者近著。 本文內容是 該書的一個小部分。 那裡匯集了許多筆者多 年學習、 研究、 教書的心得、 體會。 如果你想

(6)

了解更多一些, 歡迎您將來讀原書, 並批評指 正。

參考文獻

1. D. -Z. Du and Ker-I Ko, Theory of Computational Complexity, (John Wi- ley & Sons, New York, 2000).

2. D. -Z. Du and Ker-I Ko, Problem Solv- ing in Automata and Languages, to ap- pear.

3. M. R. Garey and D. S. Johnson, Com- puters and Intractability, a Guide to the Theory of NP-Computation, (W.

H. Freeman, San Francisco, 1979).

4. J. E. Hopcraft and J. D. Ullman, In- troduction to Automata Theory, Lan- guages, and Computation, (Addison- Wesley, 1979).

5. H. R. Lewis and C. H. Papadimitriou, Elements of the Theory of Compu- tation (2nd Edition), (Prentical-Hall, 1998).

6. M. Sipser, Introduction to the Theory of Computation, (PWS, 1997).

—本文作者堵丁柱為明尼蘇達大學計算機科 學系教授, 葛可一為紐約州立大學石溪分校 計算機科學系教授

參考文獻

相關文件

Makowsky, Linear Time Solvable Optimization Problems.

Shafarevich, Number Theory, Academic Press, New York and London, 1966.. Wright, An in- troduction to the theory of numbers, Oxford sicence

West, Introduction to Graph Theory, Second Edition, Prentice Hall, Upper Saddle River, NJ,

• Give the chemical symbol, including superscript indicating mass number, for (a) the ion with 22 protons, 26 neutrons, and 19

39) The osmotic pressure of a solution containing 22.7 mg of an unknown protein in 50.0 mL of solution is 2.88 mmHg at 25 °C. Determine the molar mass of the protein.. Use 100°C as

Silverman A Friendly Introduction to Number Theory (Prentice Hall, Third

Silverman A Friendly Introduction to Number Theory (Prentice Hall, Third

Silverman A Friendly Introduction to Number Theory (Prentice Hall, Third