【正文】
/2, 1/4, 1/8, …} 將等于 1/ω ,直觀地說(shuō)也就是無(wú)窮小量。 {0 | 1/ω} 則等于 1/(ω 2) ,而 {1/ω | 1, 1/2, 1/4, 1/8, … } 則等于 2/ω 。我們剛才創(chuàng)造的所有數(shù)都是合法的,它們確實(shí)都是一個(gè)個(gè)的數(shù),它們依舊能比較大小,依舊能參與運(yùn)算。不過(guò),它們明顯超出了實(shí)數(shù)的范圍??磥?lái),一個(gè)有序域完全有可能比實(shí)數(shù)域更大。所以說(shuō),Knuth 才把這個(gè)外星系統(tǒng)叫做“超實(shí)數(shù)”??梢宰C明,由超實(shí)數(shù)構(gòu)成的有序域是最大的有序域,其他所有可能的有序域,都只是超實(shí)數(shù)域里的一個(gè)子有序域。我們把石板上描述的數(shù)學(xué)對(duì)象解讀為了我們熟知的數(shù)字(以及我們不熟知的數(shù)字),因?yàn)閮烧呔哂邢嗤拇鷶?shù)結(jié)構(gòu)。但實(shí)際上,別忘了,這些數(shù)學(xué)對(duì)象其實(shí)可以被我們解讀成任何東西,可能是對(duì)我們有用的,可能是對(duì)我們沒(méi)用的。(四)并行的棋局事實(shí)上,這個(gè)全新的算術(shù)系統(tǒng)是 Knuth 從另一位數(shù)學(xué)大神 John Conway 那兒聽(tīng)來(lái)的。 Knuth 對(duì)此非常感興趣,他把 TAOCP 的寫(xiě)作計(jì)劃擱置了一周,完成了這部 100 多頁(yè)的小說(shuō),并在 1974 年出版?!俺瑢?shí)數(shù)”這個(gè)詞是 Knuth 自己杜撰的。 Conway 非常喜歡這個(gè)詞,并把它用到了他在 1976 年出版的專著 On Numbers and Games 中。這是一本非常有特色,非常 geek 的書(shū)。書(shū)的內(nèi)容分成了第零部分 On Numbers 和第一部分 and Games ,全書(shū)的第一句是, This book is in two = {zero, one | } parts 。在這本書(shū)中, Conway 給出了超實(shí)數(shù)背后的直觀意義:博弈游戲。圖 1圖 2圖 3圖 4圖 5讓我們來(lái)考慮這樣一個(gè)游戲,游戲的名字叫做 Domineering 。兩個(gè)玩家輪流在一個(gè)形狀不規(guī)則的棋盤(pán)上放置多米諾骨牌。不妨把這兩個(gè)玩家分別記作“左玩家”和“右玩家”。左玩家只允許在棋盤(pán)上放置豎直的多米諾骨牌,右玩家只允許在棋盤(pán)上放置水平的多米諾骨牌。誰(shuí)先不能放了,誰(shuí)就輸了。顯然,有的棋局可能會(huì)對(duì)左玩家更有利,有的棋局可能會(huì)對(duì)右玩家更有利。讓我們來(lái)分析幾種局面吧。圖 1 顯示的是一個(gè)“空棋盤(pán)”。顯然,這是一個(gè)“中立棋局”,先走的人直接就輸了,后走的人直接就贏了。圖 2 所示的棋局雖然與空棋盤(pán)不同,但本質(zhì)上一樣——這仍然是一個(gè)誰(shuí)后走誰(shuí)贏的公平局面。圖 3 所示的棋局則明顯對(duì)右玩家更有利一些,事實(shí)上不管誰(shuí)先走,右玩家一定都會(huì)獲勝。圖 4 所示的棋局則偏向了左玩家,不管誰(shuí)先走,左玩家都會(huì)獲勝。Conway 給出了兩個(gè)棋局相加的含義。定義兩個(gè)棋局的和為同時(shí)包含這兩個(gè)棋局的新棋局。如果說(shuō)有兩個(gè)棋局,棋局 A 和棋局 B ,那么 A + B 的意思就是兩個(gè)玩家同時(shí)在棋局 A 和棋局 B 上游戲。輪到某個(gè)玩家行動(dòng)時(shí),這個(gè)玩家可以選擇在 A 上走一步,也可以選擇在 B 上走一步,只要 A 和 B 當(dāng)中至少一個(gè)還能走,他就不算輸。例如,我們可以讓兩個(gè)玩家同時(shí)在圖 3 和圖 4 上游戲,這個(gè)游戲就記作+不難看出,它的效果等價(jià)于一個(gè)空的棋局——誰(shuí)后走誰(shuí)贏。圖 5 所示的 L 形棋盤(pán)就更有意思了。如果左玩家先行,他有兩種走法。其中一種走法將剛好給右玩家留下一步,把自己送上了絕路;更聰明的走法則是把棋盤(pán)弄斷,從而形成 □ + □ 的局面,讓右玩家直接死掉。如果是右玩家先行,他只有一步可走,但走完之后就再也無(wú)計(jì)可施,而左玩家還能多走一步。因此,不管誰(shuí)先走,這個(gè) L 形棋盤(pán)都是左玩家必勝的。一個(gè)有趣的問(wèn)題:圖 4 的 I 形棋盤(pán)和圖 5 的 L 形棋盤(pán)都是左玩家必勝的局面,都是對(duì)左玩家有利的局面,那么哪個(gè)局面對(duì)左玩家更有利一些?換句話說(shuō),哪個(gè)局面會(huì)讓左玩家贏得更爽一些?大家或許會(huì)說(shuō),當(dāng)然是 I 形棋盤(pán)更爽。憑什么這么說(shuō)?有什么理由嗎?注意這里我們實(shí)際上在做的事情:我們希望能找出一種(對(duì)于左玩家來(lái)說(shuō))棋局優(yōu)劣的判斷標(biāo)準(zhǔn)。其中一種絕妙的想法是,讓 I 和 L 兩個(gè)棋局同時(shí)進(jìn)行,不過(guò)左玩家要在 L 中扮演右玩家的角色。換句話說(shuō),考慮這樣的復(fù)合棋盤(pán):兩個(gè)玩家仍然輪流放置多米諾骨牌,不過(guò)規(guī)則稍有修改:在 I 形棋盤(pán)上,左玩家仍然豎直地放牌,右玩家仍然水平地放牌;但在 L 形棋盤(pán)上,兩個(gè)玩家的身份顛倒了:左玩家只能放水平的牌,右玩家則改放豎直的牌。此時(shí),左玩家在 I 形棋盤(pán)上有優(yōu)勢(shì),右玩家在 L 形棋盤(pán)上有優(yōu)勢(shì)。最終整個(gè)棋局更偏向于誰(shuí)?這顯然是一場(chǎng)赤裸裸的“優(yōu)勢(shì)絕對(duì)值”之戰(zhàn)。不難驗(yàn)證,事實(shí)上整個(gè)棋局仍然是左玩家必勝,不管誰(shuí)先走誰(shuí)后走。這說(shuō)明,左玩家在 I 形棋盤(pán)中具有更大的優(yōu)勢(shì),因而 I 形棋盤(pán)比 L 形棋盤(pán)更好。對(duì)于一個(gè)棋局 A ,如果我們完全交換左玩家和右玩家的地位,得到的新棋局就叫做棋局 A 的“反棋局”,記作 A 。我們規(guī)定,對(duì)于棋局 A 和棋局 B 來(lái)說(shuō),如果棋局 A 和棋局 B 的反棋局同時(shí)進(jìn)行(即游戲在 A + (B) 上進(jìn)行),左玩家必勝(不管誰(shuí)先走),那么對(duì)于左玩家來(lái)說(shuō),棋局 A 比棋局 B 更好,或者說(shuō)棋局 A 優(yōu)于棋局 B ;反之,如果右玩家必勝(不管誰(shuí)先走),那么對(duì)于左玩家來(lái)說(shuō),棋局 A 比棋局 B 更差,或者說(shuō)棋局 A 劣于棋局 B 。如果 A + (B) 是一個(gè)誰(shuí)后走誰(shuí)必勝的中立局面,我們就認(rèn)為,棋局 A 和棋局 B 對(duì)于左玩家來(lái)說(shuō)優(yōu)劣相同,或者說(shuō)棋局 A 平于棋局 B 。注意,今后不做特殊說(shuō)明時(shí),棋盤(pán)的優(yōu)劣都是針對(duì)左玩家所說(shuō)的。棋局 A 劣于棋局 B 的另一個(gè)等價(jià)的定義就是,如果棋局 B 優(yōu)于棋局 A ,我們就說(shuō)棋局 A 劣于棋局 B 。如果棋局 B 優(yōu)于棋局 A ,說(shuō)明 B + (A) 是左玩家必勝的,因而整個(gè)復(fù)合棋局的反棋局將會(huì)是右玩家必勝的。整個(gè)復(fù)合棋局的反棋局是什么?就是 B 的反棋局,加上 A 的反棋局的反棋局,也就是 A + (B) 了。而 A + (B) 對(duì)于右玩家必勝,這正好符合之前給出的 A 劣于 B 的定義。不過(guò)目前,沒(méi)有任何東西可以向我們保證,這些定義是合理的。按照這個(gè)優(yōu)劣定義,沒(méi)準(zhǔn)會(huì)出現(xiàn) A 優(yōu)于 B 、 B 優(yōu)于 C 、 C 優(yōu)于 A 的荒唐一幕,或者棋局 A 優(yōu)于棋局 B 但 A + C 劣于 B + C 的悖理情形。不過(guò),或許我們能證明,這些情況都不會(huì)出現(xiàn)。至少我們可以證明一些最基本的事實(shí),比如根據(jù)上面的定義,一個(gè)棋局一定和它自身的優(yōu)劣程度相同。為此,我們只需要說(shuō)明棋局 A + (A) 是一個(gè)中立局面即可。其實(shí), A + (A) 顯然是誰(shuí)后走誰(shuí)必勝的,因?yàn)楹笞叩娜擞幸粋€(gè)絕妙的無(wú)敵必勝招數(shù):它只需要完全模仿對(duì)方的行為即可。先走的人每走一步,他都能在另一個(gè)棋盤(pán)上照著走一步,從而永遠(yuǎn)不可能先無(wú)路可走。左玩家必勝(不管誰(shuí)先走)的棋局 A 也一定優(yōu)于任意一個(gè)中立棋局。我們也可以證明這一點(diǎn),只需要說(shuō)明棋局 A 加上中立棋局的反棋局后,左玩家能必勝即可。他顯然是能獲勝的,他可以在 A 上該怎么走就怎么走,除非回應(yīng)右玩家在中立棋局上的行動(dòng)。反過(guò)來(lái),右玩家必勝(不管誰(shuí)先走)的棋局也就一定劣于中立棋局?,F(xiàn)在開(kāi)始,就是真正神奇的地方了。我們把左玩家走一步之后可能形成的所有局面構(gòu)成的集合叫做左集合,把右玩家走一步之后可能形成的所有局面構(gòu)成的集合叫做右集合??纯磮D 4 的 I 形棋盤(pán):左玩家無(wú)論走哪一步,剩余的棋盤(pán)都是圖 2 的樣子;同時(shí),右玩家沒(méi)有可以走的空間,右集合是一個(gè)空集。一個(gè)棋局的左集合和右集合完整地描述了再走一步之后這個(gè)棋局所有可能的結(jié)果,于是我們可以用這兩個(gè)集合來(lái)刻畫(huà)該棋局。我們就說(shuō):= {| }圖 1 和圖 2 的棋局實(shí)質(zhì)上是相同的:左右集合都是空集。它們都應(yīng)該表示成 { | } 。圖 3 所示的棋盤(pán)需要引起額外的注意:“不能走”和“可以走到空棋盤(pán)狀態(tài)”是兩個(gè)完全不同的概念。因此,圖 3 的棋盤(pán)應(yīng)該被表示為= { | 空棋盤(pán) }類似地,= { 空棋盤(pán) | }圖 5 的 L 形棋盤(pán)則可以表示為= {,+|}下面我們來(lái)看看,在這種棋局表示法下,如何形式化地定義棋局的加法、棋局的反棋局以及棋局的優(yōu)劣。如果棋局 A 和棋局 B 同時(shí)進(jìn)行,那么左玩家走一步后可以得到的局面,有可能是在棋局 A 當(dāng)中走一步(同時(shí)棋局 B 保持不動(dòng))所得,也可能是在棋局 B 當(dāng)中走一步(同時(shí)棋局 A 保持不動(dòng))所得;類似的,右玩家能走出的局面,則是由棋局 A 的所有右集合元素都加上棋局 B ,以及棋局 B 的所有右集合元素都加上棋局 A 構(gòu)成的。如果把棋局 A 的左右集合分別記作 L(A) 和 R(A) ,把棋局 B 的左右集合分別記作 L(B) 和 R(B) ,那么 A + B 的左右集合就應(yīng)該分別是:L = { u + B | u ∈ L(A) } ∪ { A + v | v ∈ L(B) }R = { u + B | u ∈ R(A) } ∪ { A + v | v ∈ R(B) }左玩家在 A 中的合法移動(dòng),也就是 A 的右集合中的元素;右玩家在 A 中的合法移動(dòng),也就是 A 的左集合中的元素。別忘了,移動(dòng)完之后,雙方的決策繼續(xù)保持反著的狀態(tài)。如果棋局 A 的左右集合分別記作 L(A) 和 R(A) ,那么 A 的反棋局的左右集合就應(yīng)該是:L = { u | u ∈ R(A) }R = { u | u ∈ L(A) }最后,我們給出“劣于或平于”的形式化描述。如果棋局 A 劣于或者平于棋局 B ,這意味著 A + (B) 有兩種可能:右玩家必勝,或者誰(shuí)后走誰(shuí)必勝。總之,左玩家先走是絕不可能有必勝策略的。反過(guò)來(lái),如果左玩家先走真的沒(méi)有必勝策略(從而右玩家后走將必勝),這正好對(duì)應(yīng)著那兩種情況:如果此時(shí)再已知右玩家先走也沒(méi)有必勝策略,那就是誰(shuí)后走誰(shuí)必勝;如果此時(shí)右玩家先走將必勝,那就屬于右玩家必勝的情況。因此, A + (B) 是右玩家必勝或者誰(shuí)后走誰(shuí)必勝的,當(dāng)且僅當(dāng)左玩家先走沒(méi)有必勝策略。這等于是說(shuō),左玩家不會(huì)在 A + (B) 上走出一種誰(shuí)后走誰(shuí)必勝或者左玩家必勝的局面。如果左玩家在 A 上面走一步,結(jié)果一定不會(huì)優(yōu)于或平于 B ;同時(shí), A 也一定不會(huì)優(yōu)于或平于左玩家在 B 上任意走一步(相當(dāng)于右玩家在 B 上走一步)的結(jié)果。換句話說(shuō) A 的左集合中的元素不會(huì)優(yōu)于或平于 B,同時(shí) B 的右集合中的元素不會(huì)劣于或者平于 A 。至此為止,大家已經(jīng)發(fā)現(xiàn),棋局的加法運(yùn)算,棋局的反棋局運(yùn)算,以及棋局之間的“劣于或平于”關(guān)系,完全等同于超實(shí)數(shù)的公理和定義!為了保證所有的棋局都是超實(shí)數(shù),我們強(qiáng)行規(guī)定,所有棋局也都必須滿足超實(shí)數(shù)本身的構(gòu)造限制,即左集合中沒(méi)有元素優(yōu)于或平于右集合中的某個(gè)元素。換句話說(shuō),對(duì)于左玩家來(lái)說(shuō),左玩家走了一步后所得的棋局,局勢(shì)一定比右玩家走了一步后所得的棋局更險(xiǎn)惡。更直觀地說(shuō),我們這里考慮的都是先走比后走更不利、每多走一步就更接近死亡的游戲。為了讓棋局完全符合超實(shí)數(shù),安全地繼承所有超實(shí)數(shù)中的結(jié)論,我們可以生硬地、脫離實(shí)際意義地定義棋局的乘法:L = { u y + x v – u v | u ∈ L(A), v ∈ L(B) } ∪ { u y + x v – u v | u ∈ R(A), v ∈ R(B) }R = { u y + x v – u v | u ∈ L(A), v ∈ R(B) } ∪ { u y + x v – u v | u ∈ R(A), v ∈ L(B) }這樣便能把誰(shuí)是 1 確定下來(lái)?,F(xiàn)在,超實(shí)數(shù)的所有公理和定義,都能用來(lái)描述棋局的世界了。于是,超實(shí)數(shù)的一切定理一切性質(zhì),包括小于等于的傳遞性,加法乘法的交換率,乃至整個(gè)系統(tǒng)是一個(gè)有序域,也都將適用于棋局。事實(shí)上,棋局和超實(shí)數(shù)將會(huì)變得同構(gòu),它們之間存在最為深入的對(duì)應(yīng)關(guān)系。每一個(gè)棋局都將對(duì)應(yīng)一個(gè)數(shù),棋局之間的加法就是數(shù)與數(shù)之間的加法,我們完全不必?fù)?dān)心棋局的運(yùn)算結(jié)果不符合數(shù)的運(yùn)算結(jié)果。和超實(shí)數(shù)一樣,更準(zhǔn)確地說(shuō),應(yīng)該是每一個(gè)棋局類都將對(duì)應(yīng)一個(gè)數(shù),棋局類之間的加法就是數(shù)與數(shù)之間的加法。不過(guò),和之前講超實(shí)數(shù)時(shí)一樣,為了簡(jiǎn)便起見(jiàn),接下來(lái)我們都省去“類”字。空棋盤(pán) = { | } ,也就是 0 ,我們的中立棋局。根據(jù)我們之前的結(jié)論,左玩家必勝的棋局都將優(yōu)于中立棋局,從而對(duì)應(yīng)一個(gè)大于 0 的數(shù);右玩家必勝的棋局都將劣于中立棋局,從而對(duì)應(yīng)一個(gè)小于 0 的數(shù)。因此,看看棋局所對(duì)的數(shù)是正是負(fù),就能判斷棋局究竟對(duì)誰(shuí)有利。舉例來(lái)說(shuō):= { | 空棋盤(pán) } = { | 0} = 1這個(gè)值比 0 小,說(shuō)明該棋局中右玩家必勝。而= {| } = {0 | } = 1這個(gè)值比 0 大,說(shuō)明該棋局中左玩家必勝。 L 形棋盤(pán)= {,+|} = {1, 0 + 0 | 1} = {1, 0 | 1} = 1/2說(shuō)明它也是對(duì)于左玩家來(lái)說(shuō)必勝的。注意到 I 形棋盤(pán)的值大于 L 形棋盤(pán),這說(shuō)明 I 形棋盤(pán)優(yōu)于 L 形棋盤(pán),是一個(gè)左玩家能贏得更痛快的棋局。一個(gè)直觀意義就是,在 I 形棋盤(pán)中,左玩家能以一步領(lǐng)先的優(yōu)勢(shì)獲勝,這個(gè)步數(shù)優(yōu)勢(shì)比 L 形棋盤(pán)更大。在 L 形棋盤(pán)上,左玩家只能以半步的優(yōu)勢(shì)險(xiǎn)勝。注意 1/2 + 1/2 + (1) = 0 ,而真的就是一個(gè)中立棋局!在我們給出棋局的形式化描述時(shí),我們并沒(méi)有關(guān)心實(shí)際的游戲規(guī)則。這是一個(gè)非常一般的棋局理論,它還可以用到很多其他的游戲中?;氐奖疚淖铋_(kāi)頭最開(kāi)頭的地方。我們當(dāng)時(shí)留下了一個(gè)問(wèn)題。 ○● 真的等于 1/2 嗎?我們現(xiàn)在可以很輕易地回答了。如果把白方想成是左玩家,那么 ○● = {空棋盤(pán) | ○} = {0 | 1} = 1/2 。我們之前曾經(jīng)用 ○● + ○● + ● = 0 的辦法推出了 ○● = 1/2 ,這也是完全有道理的。有了這套理論,我們便能用純代數(shù)的方法對(duì)新的棋局進(jìn)行分析??紤]下面這個(gè)問(wèn)題:對(duì)于左玩家來(lái)說(shuō),棋局 ○● 和 ○●● 相比,哪個(gè)的優(yōu)勢(shì)更大?為了解決這個(gè)問(wèn)題,我們只需要計(jì)算一下 ○●● 的值:○●● = {空棋盤(pán) | ○, ○●} = {0 | 1, 1/2} = 1/4而 ○● = 1/2 ,它的優(yōu)勢(shì)更大一些。由此可以進(jìn)一步推出,棋局○●●●○的值為 1/4 + (1/2) = 1/4 ,即右玩家必勝。而