到此為止,我們所注意的大部分是計算機科學中的理論問題,計算機和人在原則上能進行哪些類型的計算。我們已經討論的限制都是無條件的。如果綜合性理論學家能夠證明他們的推測是真實的,那麼旅行推銷員問題就不可能找到有效的解法。這既不是因為數學家的問題,也不是計算機缺少適當的運算工具;而是根本沒有這種工具,將來也決不會有。
大多數的數學家和計算機科學家都不會遇到理論上難以超越的限制。他們所面臨的障礙都是自我設置的,而且都是可以超越的,至少在原理上是可以超越的。一個主要的障礙——在數學之外的許多工作中也很突出——就是這樣一種傾向:穩妥的做法是照搬被普遍接受的他人的解題方法,即使這些方法不是那麼圓滿。那些想靠自己的努力取得成就的人,最好一下子就能搞出名堂來,否則就會招來他人的嘲笑。本章內,讓我們看看漢斯·伯利納的開拓性工作,他製造了一台能夠下好國際象棋的計算機。,我們則將探討W.丹尼爾·希利斯的工作,他試圖用他自己的改革性設計取代曾很好地為電子計算機服務了40年的基本體系結構。
漢斯·伯利納是美國匹茲堡市卡內基-梅隆大學計算機學科的研究人員,他本人態度文雅,還很想躋身於世界佼佼者行列。他曾經有過這樣的榮譽,現在也想為他的計算機成果贏得同樣的榮譽。1968年,他曾以42步一盤棋的卓越成績擊敗了蘇聯足智多謀的國際象棋策略家J.埃斯特林,成為國際象棋通信比賽的世界冠軍,為此他曾撲在棋盤上琢磨戰術整整500小時。1979年,他又設計了稱為BKG(15子棋)9.8的計算機程序,並在蒙特卡洛城舉行的大做廣告的15子棋①比賽中,以7-1的壓倒比分擊敗了世界15子棋冠軍義大利的盧吉·維拉。伯利納也和他自豪的父親一樣,他很高興,BKG9.8程序已成為第一台能在任何棋盤上或紙牌遊戲比賽中擊敗人類世界冠軍的機器。
現在,BKG9.8程序已被擱置起來,世界15子棋聯合會已禁止在正式比賽中應用計算機,但是,由伯利納和他的研究生卡爾·埃貝林設計的一種稱為Hitech(高科技)的新計算機程序卻在另一種棋盤競賽場所中保持了計算機的榮譽。1985年10月,Hitech程序贏得了北美計算機國標象棋的冠軍稱號。這項成功與其他一連串擊敗人類天才的勝利一起,完全證明了Hitech程序在下國際象棋方面優於任何其他計算機,也優於參加美國國際象棋協會認可的各種比賽的30,000名高明棋手(「思維」人)的99%。
現在,伯利納已注視著弗雷德金獎金,這項10萬美元的獎金將給能擊敗人類世界冠軍的第一台計算機的設計師。Hitech程序目前要擊敗人類世界冠軍力量尚不足。但就伯利納的頑強性格、教育情況與比賽紀錄來看,其程序的前途是不可低估的。
若按年月順序來看,伯利納早先熱愛國際象棋,而後才愛他的計算機。他1929年出生於德國, 8歲時隨父母遷居美國,定居在首都華盛頓。他發現那裡的學校的要求比德國松得多,因此他尋求課堂外的挑戰。在1942年的夏令營時,他看到了一些年輕人在下國際象棋,就向他們請教比賽規則。伯利納回憶說:「甚至就在第一天,已有些棋手成為我的手下敗將,情況就是這樣。我從此著了迷。」
兩年以後,他是他所在地區國際象棋俱樂部的冠軍,並且保住華盛頓地區最佳國際象棋俱樂部冠軍的稱號。伯利納說道:「我父母從不鼓勵我。他們警告我說,如果我把時間都花在下棋上,我將沒有什麼前途。如果沒有人告訴我,誰知道我將成為什麼樣的人?」不過在短期內,伯利納未控制自己的棋癮。到了1949年,他終於贏得了人人盼望的華盛頓市國際象棋冠軍稱號,那時他剛剛20歲,這是個破紀錄的年齡。
同年,美國數學家克勞德·香農發表了一篇頗有影響的論文,他在論文中概括地論述了如何編製計算機下國際象棋的程序。當時電子計算機剛剛問世,但是,下國際象棋已被作為在新生的人工智慧領域中的一個重要的目標。它與其他智力遊戲不同,國際象棋引起人們的興趣是因為在控制的條件下,通過讓計算機與人類選手對陣就可以精確判斷出計算機在國際象棋上的能力。參加比賽的棋手都有數字的等級,這是根據他們與其他等級對手比賽時的成績如何而定的。計算機也要取得等級,以反映它與人的等級棋手比賽所獲得的成績。
當計算機科學的先驅們努力把香農的想法付諸實踐時,年輕的伯利納正集中精力於下國際象棋。1954年,他是這個國家中最佳的12名棋手之一,並保持了12年。50年代初期,他閱讀有關計算機下棋的第一批研究成果。他回憶說:「他們的把戲在我看來是相當可笑的。」
英國數學界傑出人物艾倫·馬西森·圖靈也是計算機的開拓者之一,他是人工智慧方面有創造性的思想家(已在第八章中論述過),而且,憚精竭慮地窮究數學領域的奧秘。他還是一名國際象棋手,和愛因斯坦一樣,即使算不上精通,也至少樂此不疲;也許由於他認為國際象棋是少數幾種他未掌握的智力活動之一,因此他畢生熱愛這項活動。不管情況如何,他至少撰寫了6頁有關以機械方式下國際象棋的配方性棋步,這實際上是一種計算機程序。雖然他還沒有花費精力把下國際象棋的方法譯成編碼輸入計算機,但他曾用這些配方棋步於1952年與阿利克·格倫尼對弈。阿利克·格倫尼是英國曼徹斯特大學的一名學生,他也是很有才能的計算機程序設計者,但卻是一名不大高明的木材推銷員。圖靈的紙上下棋機(所以這麼叫它是因為它還只是在紙張上存在)在那次對弈中失敗了,但畢竟是首次用任意一種理想化的或者可以實現的計算機下棋。
圖靈的配方是給每個棋子以數量價值,像國際象棋教科書所定級的那樣,以便大體上反映各棋子的相對實力:王1,000,後10,車5,象3.5、馬3和兵1。在選擇棋步時,都是接著走所有後續棋步,包括捉子在內,一直走到兩方既不能吃子也不能給予將死的靜止棋勢時為止。對於每種靜止棋勢,兩方的相對實力是把棋子的數值加在一起進行計算的,並把計算機的棋子數值看成正數,把對方的棋子數值看成負數。選擇導致靜止狀況的棋步,在這種狀態中,機器能使其相對實力增加到最大限度。
圖靈的估值方案是能夠找到求勝的棋步的,但是在靜態情況下則無法使用。例如,它不能判別白方的頭一步如何走,因為在比賽開始時,在其20個可能的棋步(16個進兵步和4個上馬步)中,沒有一步棋捉子或者可能捉子,因此這20個靜止棋勢都是同樣0值的相對實力,顯然,要用該方案判斷是很荒謬的。
圖靈還用加權的方法來克服這個問題,在靜態棋位中考慮諸如機動性與王的安全性等因素。例如對兵來說,走兵越過自己的布陣之後,每橫線增加0.2,如果受到別的子而不是本方兵的保衛,則另加0.3,如果不受到保衛,則要另減0.3。對於車、象、馬和後來說,如果走它們能走的法定棋步,則每走一步棋都增加其數值的平方根,如果這些棋步中至少有一步棋可以捉子,則另加1點。而且,要是車、象、或馬(不包括後)受到保衛,得到保衛一次另外獎給1點,兩次或兩次似上另外獎給2點。如果王得到車的保衛,則加0.3,如果與車保持均勢,則加0.2,要是以車保王未來仍能出現,則加0.1。
圖靈也考慮王的安全性。在他的估值方案中,王所要損失的點數取決於它易於受到攻擊的程度。圖靈設想王是另一個後,並計算這個後的機動性,用此來量度其受到攻擊的程度。此外,圖靈還給攻對方王棋的棋步增加0.5,給立即能將對方王棋的威脅性棋步增加1。
在靜態情況下,紙上下棋機將按照其求值函數、最大的機動性、本方王的安全性以及對方王的易受攻擊性來決定棋步。在1952年與格倫厄博弈時,紙上下棋機以P-K4開局,即走王前兵兩步,在20個可能棋步中,P-K4棋步具有最大的數值,這個棋步不僅可以進兵到第四橫線,而且還可以提高後、王前象和王前馬的機動性。早在第三步棋時,紙上下棋機走了一步軟著的兵出擊,但格倫尼並沒有乘機利用它。在第二十九步棋時,由於紙上下棋機的求值函數示出格倫尼沒有立即有效的捉子應步,因此它貪婪地用後吃掉一兵。
紙上下棋機的程序忽視一個簡單然而可以壓車的棋步,該棋步可以用下棋機的後看住對方的王,使得後可以強行捉子。最後,圖靈這個安樂死控制論的倡導者,代表紙上下棋機主動認負。
紙上下棋機儘管非常原始,仍然有一些獨到之處。例如,它認為,只有在沒有任何捉子的可能時,實力的研究才有重要性。在棋盤上的某一棋位中,你可能缺少後,這種情況通常是很糟的,但只要是該你走子,你仍有機會,你可能捉住對方的後。你大概不需要一個估值的