這臺(tái)簡(jiǎn)單的電腦可以從與人類(lèi)對(duì)手的比賽中,“學(xué)習(xí)”到玩游戲的技巧。一開(kāi)始它幾乎全輸,但經(jīng)過(guò)一段學(xué)習(xí)的過(guò)程之后,幾乎能每戰(zhàn)必勝。
這臺(tái)電腦是針對(duì)一種特定的游戲而設(shè)計(jì)的,為了說(shuō)明電腦的運(yùn)作方式,必須了解這種游戲的玩法。這種游戲叫做“六子棋”,使用3黑3白6個(gè)棋子,3×3的棋盤(pán)。
游戲開(kāi)始時(shí),3個(gè)黑子與3個(gè)白子分立兩邊互相對(duì)峙,如圖1所示。棋子的走法是,可以向前走一格到一個(gè)空格,或是向前方斜走一格吃掉對(duì)方的棋子,圖2與圖3為在對(duì)局當(dāng)中白子可能的兩種走法。
當(dāng)己方的棋子走到棋盤(pán)的另一邊,或?qū)Ψ降钠遄尤勘怀怨猓蚴菍?duì)方的棋子動(dòng)彈不得時(shí),你就贏了。圖4代表黑子先走的一局棋,依序表示各個(gè)棋子的位置,箭頭表示走法。
你應(yīng)該已經(jīng)發(fā)現(xiàn)這個(gè)游戲非常簡(jiǎn)單,只須走幾步就可以分出勝負(fù)。其實(shí)這正是選擇這個(gè)游戲的理由,因?yàn)檫@樣可以使電腦的規(guī)模不必太大。當(dāng)你通過(guò)六子棋了解電腦的運(yùn)作方式之后,也許可以試著制作一臺(tái)玩“井”字或是其他圈叉游戲的電腦。也許你要問(wèn),怎么會(huì)用到火柴盒?它又如何決定下一步要怎么走呢?
這臺(tái)電腦是由許多火柴盒組成的,每一個(gè)火柴盒代表六子棋可能的一種布局,把這種布局畫(huà)在火柴盒上,如圖5所示。
在布局圖上所有可能的走法都用箭頭標(biāo)示出來(lái)。在圖5的例子中,有3種可能的走法,那么就用3種不同顏色的箭頭標(biāo)示,并在火柴盒內(nèi)放3根火柴頭顏色與箭頭顏色相同的火柴棒。當(dāng)輪到電腦走時(shí),電腦操作員就選出適當(dāng)?shù)幕鸩窈,像抽簽一樣任取一根火柴,火柴頭的顏色就代表電腦下一步該怎么走。一開(kāi)始電腦被假設(shè)為完全無(wú)知,因此在盒內(nèi)對(duì)每一種走法都放了一根火柴。電腦在剛開(kāi)始與你對(duì)抗時(shí),會(huì)走出許多愚蠢的走法,但可以借助一套獎(jiǎng)懲辦法指導(dǎo)電腦玩這個(gè)游戲。當(dāng)電腦輸了的時(shí)候會(huì)受到懲罰,代表它所走的最后一步的火柴會(huì)被移出火柴盒,以避免再度出錯(cuò)。如果電腦操作員拿到一個(gè)空的火柴盒,電腦就得認(rèn)輸,同時(shí)代表前一步的火柴要被移出火柴盒。電腦不斷地玩游戲,走出差勁走法的火柴逐漸減少,獲勝的機(jī)會(huì)因而大增。當(dāng)電腦真的獲勝時(shí),同樣會(huì)受到獎(jiǎng)勵(lì),也就是增加一根代表走出贏得勝利的那一步的火柴棒,以提高它再次出現(xiàn)的機(jī)會(huì)。
制作一臺(tái)會(huì)玩六子棋的電腦(大約需要40個(gè)火柴盒),并仔細(xì)分析所有可能的布局。圖6是前三步內(nèi)所有可能出現(xiàn)的布局,但鏡面對(duì)稱(chēng)的布局不包括在內(nèi)。所有這些布局以及接下去可能出現(xiàn)的布局,都要用火柴盒來(lái)代表?梢园宴R面對(duì)稱(chēng)的布局標(biāo)記在同一個(gè)火柴盒上,如圖7所示,這樣不但較易辨認(rèn),也可以減少火柴盒的數(shù)量。
當(dāng)你制作好電腦,而且也教會(huì)它玩游戲之后,可以用它向朋友挑戰(zhàn),或是請(qǐng)朋友也做一臺(tái)電腦,讓它們比賽。
解答與分析
筆者曾在學(xué)校把學(xué)生分成兩組,同時(shí)做兩臺(tái)火柴盒電腦,然后讓兩臺(tái)電腦彼此對(duì)抗,過(guò)程非常有趣。這個(gè)活動(dòng)也表現(xiàn)出人類(lèi)和電腦從經(jīng)驗(yàn)中學(xué)習(xí)的方式。在這里只討論了一種獎(jiǎng)懲火柴盒的方法,不過(guò)也可以嘗試其他的方法,還可以將贏的局?jǐn)?shù)與比賽局?jǐn)?shù)繪成“學(xué)習(xí)曲線”,以比較不同學(xué)習(xí)方式的優(yōu)劣。