洛斯阿拉莫斯象棋

洛斯阿拉莫斯象棋

洛斯阿拉莫斯象棋,是一種將西洋棋規則簡化的變體。在1956年美國新墨西哥州洛斯阿拉莫斯國家實驗室的人員根據圖靈的理論,在MANIAC上設計出世界上第一個電腦程式的象棋。

定義

洛斯阿拉莫斯象棋洛斯阿拉莫斯象棋

洛斯阿拉莫斯象棋的英文是LosAlamosChess,洛斯阿拉莫斯象棋是簡單化西洋棋變體,20年紀中為初始電腦創造的。它在6x6棋盤進行,除了象以外用所有的西洋棋棋子。以全部西洋棋規則進行,但有以下例外:兵卒初步無法走兩個方格;不許王車易位;不許吃過路兵;兵到底線不能升級成象。

綜述

洛斯阿拉莫斯實驗室

在戰爭期間,美國在位於新墨西哥州沙漠地帶的洛斯阿拉莫斯(LosAlamos)建立了一個巨大的實驗室。目的是用於研製原子武器。為了正確求出用於引發鏈式反應的內向爆炸所需的電量科學家們要進行大量的計算。1946年,為了加速這項計算過程,一位美籍匈牙利數學家JohnvonNeumann承擔了設計強力計算機的任務。1950年,一台名為MANIACI的巨型計算機問世。他由成千上萬的真空管和開關組成,每秒可執行10,000條指令。當然,它是可程式的。

弈棋程式

科學家們並沒有把這台計算機立即用於爆炸計算,而是做了一些實驗。第一個實驗便是編寫一個弈棋程式。他們將西洋棋棋盤上的“象”去掉,設計了一個6*6大小的棋盤。儘管如此,每進行4層深度的分析,這個程式便要花上12分鐘(如果加上“象”,則需3小時)。

人類首次輸給計算機

在50年代中期這個程式曾經下過3盤棋。第一盤是程式自己對弈(白方獲勝),第二盤是挑戰一名大師,對方讓一個皇后,經過10個小時的激戰,大師獲勝。第三盤則是與一位學棋僅一個星期的年輕女士交手,結果程式用了23步獲得勝利。這也是人類首次在智力型的遊戲中輸給計算機。以下是程式獲勝的對局記錄:
MANIAC1–人類(洛斯阿拉莫斯,1956年)

(6*6棋盤,無“象”,兵第一步不能走兩格,不能王車易位)
1.d3b42.nf3d43.b3e44.Ne1a45.bxa4?[5.Nd2and6.Nd2-c4+Nbcxc47.b3xc4之後,局面占優]5...Nxa46.Kd2?Nc37.Nxc3bxc3+8.Kd1f49.a3Rb610.a4Ra611.a5Kd512.Qa3Qb513.Qa2+Ke514.Rb1Rxa515.Rxb5Rxa216.Rb1[防止16...Ra1將殺!]16...Ra517.f3Ra418.fxe4c419.Nf3+Kd620.e5+Kd521.exf6QNc522.Qf6xd4+Kc623.Nf3-e5將殺獲勝。

歷史

第一台弈棋機

1769年,匈牙利工程師BaronWolfgangvonKempelen為了取悅於奧地利皇后MariaTheresia而製造了一台西洋棋弈棋機。它只不過是一台純機械設備,外形很象一個Turk(土耳其人)。當然它的高超的棋藝是由藏在機器內部的一位象棋大師提供的。這台弈棋機是一個騙局。

圖靈紙弈機

也許令大家吃驚的是世界上第一個西洋棋弈棋程式誕生於計算機問世之前。這個程式是由一位極富遠見的人編寫的。他不僅預見到了計算機的問世,而且他還清楚地知道計算機的工作方式,只待計算機一問世,他的程式就可以投入運行。

這個人就是阿蘭·圖靈(AlanTuring)----世界上最偉大的數學家之一。二戰時期,圖靈領導的科研小組破解了德國人的"Enigma"代碼,為二戰的勝利起了重大的作用。圖靈非常愛好西洋棋。但是除了擁有一個聰明的大腦以及在剛學棋時用了點工夫以外,圖靈的棋藝水平很一般。二戰結束後不久,他就開始編寫弈棋程式的代碼。在當時世界上並沒有可以運行他的程式代碼的計算機,圖靈就把自己當成人工CPU,一步一步手工演示,每一步棋大約要花上半個多小時。歷史上記載了這台紙上弈棋機的一盤對局記錄。這盤棋中,紙上弈棋機執白輸給了圖靈的同事AlickGlennie。以下是棋譜:
圖靈紙弈機–AlickGlennie(曼徹斯特1952年)
1.e4e52.Nc3Nf63.d4Bb44.Nf3d65.BD2Nc66.d5ND47.h4Bg48.a4Nxf3+9.gxf3Bh510.BB5+c611.dxc60-012.cxb7Rb813.Ba6Qa514.Qe2ND715.Rg1Nc516.Rg5Bg617.Bb5Nxb718.0-0-0Nc519.Bc6Rfc820.Bd5Bxc321.Bxc3Qxa422.Kd2?[應走22.h5捉死黑象]22...Ne623.Rg4Nd4?[23...Rxb2!24.Bxb2Rxc2+]24.Qd3Nb525.Bb3Qa626.Bc4Bh527.rg3Qa428.Bxb5Qxb529.Qxd6Rd80-1.

教會計算機下棋

大約在與圖靈同一時代,另一位在貝爾實驗室工作的著名的數學家克勞德·香農(ClaudeElwoodShannon)也在考慮如何“教會”計算機下棋。他意識到這個問題的難點在於非常巨量的續著分析。他仔細區分了兩種策略----α-策略和β-策略。α-策略就是計算所有變著的策略,而β-策略則在計算過程中“砍”掉一些分支。時至今日,我們仍將弈棋程式分成兩大類----全搜尋型("bruteforce")和選擇型(selective")程式,儘管絕大多數高水平的程式都或多或少的屬於前一類。

數學

編寫弈棋程式的主要問題在於計算大量的續著。在通常的一個局面中大概有40種合法的變著。如果要為每一步棋計算一個應著,則要分析1600個不同的局面。這就是說2層分析(半個回合)需要分析1600個局面。計算兩個回合,則要分析250萬個局面,三個回合,41億個局面。每盤棋大約有40個回合,那么所要分析的局面數為10的128次方個。而這遠遠超過了宇宙中的原子數量。

顯然,沒有一台計算機或其它機器可以分析如此之多的局面。然而人類也並非完美無缺,對於計算機來講,問題在於計算深度為多少時才可以與人類的戰略技巧相抗衡?早期的計算機可以每秒評估或分析大約500個局面,或者說是3分鐘內分析90,000個局面。而在正式的錦標賽中,每步棋也就是需要大約3分鐘。這也就意味著,計算機只能進行3層搜尋(1個半回合)----這僅僅是初學者的水平。如要再增加1層搜尋深度,則需每秒分析15,000個局面。但即使是4層深度,也還是太淺了。所以看起來,計算機好象不太可能達到大師級水平。

Alpha-beta算法:1958年,位於美國匹茲堡的卡內基梅隆大學的三位科學家(Newell,Shaw和Simon)的重要發現使得這一問題有了重大突破。他們發現:在搜尋中,可以“砍掉”搜尋樹中的大部分分支而不影響最終的分析結果。他們稱之為:alpha-beta算法。有一點非常重要值得指出:這個算法是由純數學理論得來的,沒有附加任何的西洋棋知識

下面非常簡略地介紹一下alpha-beta算法的工作原理:假設計算機計算完第一個變著後,正要開始計算第二個變著,如果這一步棋的計算結果數值低於第一著棋,那么計算機可以立即停止繼續向下計算。我們沒有必要知道到底第二著棋的分值比第一著棋低多少。程式會很自然地選擇第一步棋的方案。

Alpha-beta算法與全面搜尋算法產生的結果是相同的,而它所需計算的局面數量卻是後者的平方根。這樣一來,最早期的計算機就可以搜尋5層或6層。七十年代最快的計算機(如:CDC-Cyber系列)可以搜尋7層深度並且達到相當的水平。然而,即使套用Alpha-beta算法,如果要把搜尋深度再增加一層,計算量還是要增加5倍!這種指數式的增加使程式設計師們大傷腦筋。

“硬”的西洋棋機----Belle(比利):KenThompson是貝爾實驗室的一位計算機科學家。他並不想指望一台價值上百萬美元,僅僅靠速度快上5倍甚至25倍的超級計算機來提高弈棋水平。他和他的同事們決定製造一台專門下西洋棋的計算機----Belle。它可以在一秒鐘內計算大約180,000個局面。(在當時,超級計算機每秒可計算5000個局面)。Belle在正規棋賽的時限內搜尋深度可以8到9層,這足以使其達到大師級水平。它不但獲得了世界計算機西洋棋錦標賽冠軍,而且在1980至1983年間,幾乎贏得了所有計算機西洋棋賽。直到價值數千倍於它的CrayX-MPs問世。

硬體

80年代中期,卡耐基梅隆大學(Carnegie-Mellonuniversity)的計算機科學家漢斯.波爾萊納(HansBerliner)繼續了KenThompson的事業。這位曾經獲得過西洋棋通訊賽世界冠軍的科學家製造了一台硬體驅動的弈棋機----名叫“HiTech”。他和他的學生CarlEbeling設計了一個硬體棋步生成晶片。裝配有64個這樣晶片的“HiTech”在1986年以微弱劣勢負於Cray獲得世界計算機西洋棋錦標賽亞軍。

之後不久,Berliner的學生許峰雄(Feng-hsiungHsu),MurrayCampbell等人開發了自己的弈棋機----名為“ChipTest”後來發展為“深思”(DeepThought),“深思”價值5000美元,它可以每秒計算500,000個局面。許峰雄和Campbell後來脫離了他們的老師加入了IBM。並與JoeHoane一道合作開發了“深蘭”(DeepBlue)。
深蘭:在費城和紐約與棋壇巨無霸----卡斯帕洛夫交手的“深蘭”包含有一個由大量可以進行快速計算的專用晶片組成的IBMSP/2伺服器。每一個專用晶片可以每秒處理二百萬到三百萬個局面。超過200個這樣的晶片組合到一起,運行於其上的程式每秒便可以處理2億個局面。

搜尋深度與棋藝水平:每秒計算2億個局面對於一台西洋棋計算機意味著什麼?KenThompson----Belle的製造者(他也是Unix和C語言的創造者)在80年代做了很多有關搜尋深度與弈棋水平的很有趣的實驗。

Thompson讓Belle自己與自己對弈,並把一方的搜尋層次不斷加深。通常情況下,每一層深度可以換算成200個埃洛分。在4層搜尋深度時,Belle的等級分約為1230,當搜尋深度為9層時,Belle的等級分達到2328。將實驗結果畫成曲線,並將曲線平滑延伸,我們可以看到,當搜尋深度為14層時,計算機的等級分可以達到世界冠軍水平---2800分。

以下是專家的結論:如果想要計算機達到人類西洋棋世界冠軍的水平,那么計算機要有每秒計算10億個局面的能力。深蘭接近了這一目標,但還沒有達到。

軟體

當然,弈棋程式的質量同樣非常重要。現在,頂級的西洋棋程式例如:Fritz和Junior運行在最快的硬體設備上時,每秒可計算600,000個局面。它們的等級分已經成功地超過了2600分並且可以與世界排名前100名的棋手相對抗。在快棋賽中,大約只有世界前10名的棋手可以與之抗衡,如果在閃電戰中,恐怕只有兩三名棋手能夠“倖存”了。

體系架構

開局庫

開局棋庫在提高計算機弈棋能力上起了非常重要的作用。許許多多大師們的開局知識和經驗可以很方便的記錄在磁碟上並且在開局階段供程式使用。即使PC機上的程式也可以“通曉”數以千記的開局棋路,並且每一路分支都有詳盡的分析(如:棋是如何走的?取得過什麼勝績?棋出自哪位棋手?他的水平如何?等等)。通常情況下,一個程式所弈的前15至20步都來自開局庫,然後才真正進入到程式“思考”階段。如果沒有這些人類的開局知識和經驗,計算機的水平會顯著下降。

通過人類許多年來積累的開局知識,計算機在對弈過程中會占有相當大的優勢,同樣,計算機也獲益於人類對殘局知識的研究。

殘局庫

殘局庫的開發方面,KenThompson仍然是先導者。80年代期間,他開始製作4子和5子的殘局庫。一個典型的5子殘局如:王雙象對王單馬,就包含有121,000,000種不同的局面。如果再加一個兵,那么局面數會增加到335,000,000。為此,Thompson專門編寫了程式,用於生成所有可能的局面並計算出每一個強制性的變化。然後他又通過某種方式將計算數據壓縮,使得一張標準的CD-ROM上可以存放20個不同的殘局。

通過這些資料庫,計算機可以將殘局走得“絕對完美”,就象上帝在下棋。面對滿足條件的任何一個局面,計算機可以立即知道該局面是贏棋,和棋還是輸棋並且需要下多少步。通常在15步棋之前,計算機就會“看到”將殺並宣布勝利。在輸棋的局面中,計算機會以最優的方案進行最頑強的抵抗。“深蘭”就採用了Thompson的殘局庫,就連PC機上的程式Fritz也採用了他的搜尋樹。人類對開局和殘局的研究還要不斷的進行和深入。然而有一點可以指出----開局庫和殘局庫永遠不會交疊。因為沒有人會見到計算機在弈出第一步棋1.e4之後就宣布在第40步將殺獲勝。

其他相關

計算機邏輯奠基者

阿蘭·麥席森·圖靈,1912年生於英國倫敦,1954年死於英國的曼徹斯特,他是計算機邏輯的奠基者,許多人工智慧的重要方法也源自於這位偉大的科學家。他對計算機的重要貢獻在於他提出的有限狀態自動機也就是圖靈機的概念,對於人工智慧,它提出了重要的衡量標準“圖靈測試”,如果有機器能夠通過圖靈測試,那他就是一個完全意義上的智慧型機,和人沒有區別了。他傑出的貢獻使他成為計算機界的第一人,現在人們為了紀念這位偉大的科學家將計算機界的最高獎定名為“圖靈獎”。上中學時,他在科學方面的才能就已經顯示出來,這種才能僅僅限於非文科的學科上,他的導師希望這位聰明的孩子也能夠在歷史和文學上有所成就,但是都沒有太大的建樹。少年圖靈感興趣的是數學等學科。在加拿大他開始了他的職業數學生涯,在大學期間這位學生似乎對前人現成的理論並不感興趣,什麼東西都要自己來一次。大學畢業後,他前往美國普林斯頓大學也正是在那裡,他製造出了以後稱之為圖靈機的東西。圖靈機被公認為現代計算機的原型,這台機器可以讀入一系列的零和一,這些數字代表了解決某一問題所需要的步驟,按這個步驟走下去,就可以解決某一特定的問題。這種觀念在當時是具有革命性意義的,因為即使在50年代的時候,大部分的計算機還只能解決某一特定問題,不是通用的,而圖靈機從理論上卻是通用機。在圖靈看來,這台機器只用保留一些最簡單的指令,一個複雜的工作只用把它分解為這幾個最簡單的操作就可以實現了,在當時他能夠具有這樣的思想確實是很了不起的。他相信有一個算法可以解決大部分問題,而困難的部分則是如何確定最簡單的指令集,怎么樣的指令集才是最少的,而且又能頂用,還有一個難點是如何將複雜問題分解為這些指令的問題。圖靈對於人工智慧的發展有諸多貢獻,例如圖靈曾寫過一篇名為《機器會思考嗎?》(CanMachineThink?)的論文,其中提出了一種用於判定機器是否具有智慧型的試驗方法,即圖靈試驗。至今,每年都有試驗的比賽。

圖靈試驗

1945年到1948年,圖靈在國家物理實驗室,負責自動計算引擎(ACE)(AutomaticComputingEngine,ACE)的工作。在這一時期他開始探索計算機與自然的關係。他寫了一篇名為《智慧型機》的文章於1969發表,這時便開始有了人工智慧的雛形。1949年,他成為曼切斯特大學計算機實驗室的副主任,負責最早的真正的計算機---曼切斯特一號的軟體工作。在這段時間,他繼續作一些比較抽象的研究,如“計算機械和智慧型”。圖靈在對人工智慧的研究中,提出了一個叫做圖靈試驗的實驗,嘗試定出一個決定機器是否有感覺的標準。1952年,圖靈寫了一個西洋棋程式。可是,當時沒有一台計算機有足夠的運算能力去執行這個程式,他就模仿計算機,每走一步要用半小時。他與一位同事下了一盤,結果程式輸了。後來美國新墨西哥州洛斯阿拉莫斯國家實驗室的研究群根據圖靈的理論,在MANIAC上設計出世界上第一個電腦程式的象棋。

圖靈相信機器可以模擬人的智力,他也深知讓人們接受這一想法的困難,今天仍然有許多人認為人的大腦是不可能用機器模仿的。而在圖靈認為,這樣的機器一定是存在的。圖靈經常和其它科學家發生爭論,爭論的問題就是機器實現人類智慧型的問題,在今天我們看來這沒有什麼,但是在當時這可不太容易被人接受。他經常問他的同事,你們能不能找到一個計算機不能回答的問題,當時計算機處理多選問題已經可以了,可是對於文章的處理還根本不可能,但今天的發展證明了圖靈的遠見,今天的計算機已經可以讀寫一些簡單的文章了。

圖靈測試

圖靈相信如果模擬人類大腦的思維就可以做出一台可以思考的機器,它於1950寫文章提出了著名的“圖靈測試”,測試是讓人類考官通過鍵盤向一個人和一個機器發問,這個考官不知道他現在問的是人還是機器。如果在經過一定時間的提問以後,這位人類考官不能確定誰是人誰是機器,那這個機器就有智力了。這個測試在我們想起來十分簡單,可是偉大的思想就源於這種簡單的事物之中。

現在已經有軟體可以通過圖靈測試的子測試,軟體這個人類智慧的機器反映應該可以解決一些人類智力的問題。在完成ACE之前,圖靈離開了NPL,它在曼徹斯特大學開發曼徹斯特自動計算機(ManchesterAutomaticDigitalMachine,MADAM)。他相信在2000年前一定可以製造出可以模擬人類智力的機器,圖靈開始創立算法,並使用MADAM繼續他的工作。

克勞德·香農

1907而為闡明信息概念作出偉大貢獻的就是克勞德·香農。20世紀中期隨著核子彈的出現物理學成為最榮耀的科學學科。在隨後的50年裡電晶體、人造衛星、積體電路、電腦的飛躍發展無不與物理學知識的套用有關。但是我們也驚奇地發現這些新技術都是為提高信息的處理能力服務。光榮的物理學家們忙了半個世紀終於發現自己僅是給信息科學當僕人。信息量能進入物理學嗎但信息不是物質在物理學的版圖中人們不知道把資訊理論放到哪裡合適。人類知識體現的這種新的混亂局面需要我們不斷地澄清。後來他在人工智慧方面也做了許多工作。例如他設計了一個電子老鼠來解決迷宮問題。他還研究過四色問題。他設計了西洋棋程式發表在1950年的論文《Programmingacomputerforplayingchess》中。1956年在洛斯阿拉莫斯的MANIAC計算機上實現了一個西洋棋的下棋程式。這一年香農還發表論文說明通用圖靈機可以僅用兩個狀態構建。榮譽獎項克勞德·香農在公眾中並不特別知名但他是使我們的世界能進行立即通信的少數科學家和思想家之一。他是美國科學院院士、美國工程院院士、英國皇家學會會員、美國哲學學會會員。他獲得過許多榮譽和獎勵。例如1949年Morris獎、1955年Ballantine獎、1962年Kelly獎、1966年的國家科學獎章、IEEE的榮譽獎章、1978年Jaquard獎、1983年Fritz獎、1985年基礎科學京都獎。他接受的榮譽學位不勝枚舉不再贅述。

抽象策略遊戲(一)

抽象策略遊戲(Abstract strategy game),或翻譯成抽象棋類、抽象棋奕,是版圖遊戲以規則內容來區別的一種分類,多數的棋類皆是屬於此類。但抽象策略遊戲不一定需要棋子,如井字棋等紙筆遊戲。通常是兩人對奕,從歷史悠久的圍棋、西洋棋、到現在的火山棋、牆棋皆是此類。

相關詞條

相關搜尋

熱門詞條

聯絡我們