• 沒有找到結果。

棋形知識庫之設計與製作

N/A
N/A
Protected

Academic year: 2021

Share "棋形知識庫之設計與製作"

Copied!
9
0
0

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

全文

(1)棋形知識庫之設計與製作 DESIGN AND IMPLEMENTATION OF PATTERN KNOWLEDGE BASE 嚴礽麒 國立台灣大學資訊工程研究所博士生 私立僑光技術學院國際貿易系講師 [email protected]. 顏士淨 國立東華大學資訊工程系助理教授 [email protected] lead the position to a better result in the future.. 摘要. In terms of a GO expert, there is knowledge of at. 一盤由圍棋高手所下出來的棋,與一盤由. least ten thousands of shapes in his brain. The. 初學者所下的棋,在盤面上一眼就可以分辨出. more knowledge he has, the more help to. 來,原因就是高手下棋時非常講究棋子的形。. enhance his rank of GO.. 在雙方進行短兵相接的攻防中,好的棋形會使. We need some useful techniques to create. 得自己的局勢順暢,有利於後來發展。以專業. this knowledge and save it. In this paper we use. 棋手來說,在他們的腦中至少有上萬種棋形的. a pattern with 5×5 fixed size as a storage unit,. 知識。這種知識懂得愈多,對於棋力的提昇就. then create a pattern knowledge base by these. 有愈大的幫助。. patterns. This pattern knowledge base not only. 不過要建立及儲存這些棋形的知識還需. provides the beginners for learning GO, but. 要一些技巧,在本論文中我們採用 5 ×5 固定. could be taken for the source of knowledge base. 大小的棋形樣式作為儲存單位,藉以建立一個. in Computer GO program. It is good for the. 棋形知識庫。這個知識庫不但可提供初學者學. development of Computer GO currently.. 習圍棋,更可以進一步做為電腦圍棋程式的知. Keywords : shape, pattern knowledge base,. 識基礎來源,有助於目前電腦圍棋程式的發. pattern, GO, Computer GO. 展。. 一、緒言. 關鍵詞:棋形、棋形知識庫、棋形樣式、圍棋、 電腦圍棋。. (一) 圍棋的相關知識與規則 圍棋是一種由黑白雙方在縱橫十九路的. ABSTRACT. 棋盤上,互爭地盤的遊戲。它是目前被公認為 It is easy to distinguish the GO games. 最難、最具有深度的棋類。圍棋的規則簡單,. played by the masters from those played by the. 但變化極為複雜、玄妙深奧,在彼此的鬥智中. beginners, because GO masters emphasize the. 充分展現了微妙的較勁場合。. shapes of those moves very much. When the. 在棋局進行中,會有某些棋子被對方吃掉. fight begins in the GO game, good shapes will. 的情形。在棋盤上如果有部分棋子是同色而且 1.

(2) 相連接 ,則稱這部分的棋子為一個 「棋串」 。. 知識庫的方法作進一步的研究。這個知識庫不. 每個棋串都會有所謂的「氣」 ,其定義也就是. 但可提供初學者學習圍棋,更可以進一步做為. 棋串之棋子四周的空點數目總和。如果在下棋. 電腦圍棋程式的知識基礎來源,有助於目前電. 的過程中,有某個棋串因為被敵方包圍而氣數. 腦圍棋程式的發展。. 總和為 0,則這個棋串便被敵方吃掉了,我們. 二、棋形的樣式與分類. 必須將它從棋盤上移除 。 當棋局進行到尾聲,再無寸土之地可爭. (一) 棋形的樣式. 時,棋局便告結束。此時計算雙方圍取的地域. 根據上一章所討論,棋形的知識對於學習. 目數(圍到的 1 個空點稱為 1 目),以圍取較多. 圍棋具有相當大的幫助。如果我們要嘗試建立. 目數的一方為勝者。. 一個棋形知識庫,首先必須要對於種種的棋形 有一個明確的認識及觀念。當然這與圍棋的專. (二) 棋形的概念. 業知識有關,所以棋形知識的歸納與整理,也. 對於圍棋有相當認知的人都知道:一盤由. 是專家系統中的一門學問。. 高手所下出來的棋,與一盤由初學者所下的. 建立棋形的重點主要在於擷取資訊。所謂. 棋,在盤面上一眼就可以分辨出來。最大的原. 的「擷取」 ,就是要根據各種盤面上的棋子狀. 因就是高手下棋時非常講究棋子的 「形」,而. 況,分析出那些是關鍵子,那些是較不重要的. 初學者往往還沒有形的觀念。因為圍棋進行的. 棋子,以利於我們整理出相關的棋形。以圖 1. 過程中,棋子是一顆一顆逐漸累積到盤面的。. 為例,在此局面白棋下在 A 位長出是一種好. 在雙方進行短兵相接的攻防中,好的棋形會使. 形。可是再觀察圖 2 之情形,此圖雖然與圖 1. 得自己的棋勢順暢,有利於後來發展;而不佳. 不全相同;但這時候白棋下在 A 位依然是好. 的棋形則使得棋子缺乏效率 ,甚至於留有缺. 形,並且它的狀況與圖 1 多少也有點關係。. 陷,對於往後必定有不利影響。 所謂的棋形是指雙方棋子在棋盤上之局 部區域所構成的形態。一般來講,黑白雙方在 局部有所接觸時,不論是要攻擊或防守,要擴 張己方或壓制對方,要追擊或者逃命,其實都. 圖1. 有固定的某些常用手法可以使用。. 圖2. 例如圖 1 是一個在實戰中常出現的棋形, 這時候輪到白棋。以正常情況來說,在這裏白 A 是一著好棋,其它的著手都不好。這對於有 圍棋概念的人而言,可以說是一種棋形常識; 以專業棋手來說,在他們的腦海中至少有成千. 圖3. 上萬種棋形的知識。這種棋形的知識懂得愈. 圖4. 經過這兩圖的仔細分析觀察,我們可以據. 多,對於棋力的提昇就有愈大的幫助。或者也. 以建立出圖 3 的棋形樣式(Pattern)出來,並且. 可以說,想要下好圍棋,就一定要多研究棋形. 很明顯圖 3 的 A 點是白方的一個好點。如果. 上的相關知識 [7][8]。. 我們將圖 3 的棋形樣式儲存起來,則當我們遇. 本篇論文主要在探討如何利用電腦來有. 到了像是圖 4 的情形時,馬上就可以知道這時. 效地建立一個棋形知識庫,使得我們可以透過. 候白棋下在 A 點是好棋。. 這個知識庫來學習圍棋的棋形;並且針對建立 2.

(3) 這種分析觀察與歸納,然後再擷取出關鍵. 這種分類方式對於應用在電腦圍棋上較有幫. 棋子的功夫,是要藉由專業的知識來完成的。. 助,因為在一個優秀的電腦圍棋程式中,必須. 其中對於雙方棋子的相對位置、周圍環境之配. 要 具 備 目 的 導 向 式 (object oriented)的搜尋系. 合等等都有重要的關係,所以具有相當之難. 統;也就是在搜尋時,必須要選擇能達成某些. 度。另一方面要注意的是,每種棋形樣式中的. 作用的著手。因此根據棋形用途來分類的做. 好點,都具有它相關的作用,例如擴張己方 、. 法,就能夠在需要時提供適合的著手。. 壓制對方、整理己方棋形、襲擊對方弱點、逃. 但是這種分類法在實際建立知識庫時,就. 出己方、追擊對方、連結己方、分斷對方等等,. 會出現不容易歸納完整的情況。第一是因為棋. 有時候一個棋形樣式的好點還同時具有數種. 形樣式所指出的好點,其用途經常不只有一種. 作用。因為我們在思索每步棋該如何下時,應. 而已。例如一個單純的一間跳,圖 6 的情形黑. 該都會有一些目標做為導向;所以根據既定的. A 跳是擴大陣地,但圖 7 的黑 A 跳則是逃命。. 目標,再配合找出符合目標的棋形好點,這樣. 另一個問題則是棋形樣式會發生重覆的機率. 對於下出好棋或妙手是大有助益的。. 很大,這在製作上會有若干的困擾。. (二) 棋形的分類 如上一節所述 ,在製作棋形樣式時,必須 要根據專業知識對每個棋形詳加推敲,經過歸 納與分類整理之後,才能擴充到棋形知識庫. 圖6. 中。所以這樣的工程是很浩大的。 以下我們針對建立棋形知識庫時,如何將 棋形樣式進行分類的方法作一個探討 : (1) 依棋形術語分類 在圍棋的手法上,經常會根據雙方棋子配. 圖7. 置關係而有對應的圍棋術語,例如長、扳、尖、. 經過權衡利弊得失,我們認為在製作過程. 跳、虎等等。這種分類方法對於一個懂棋的人. 仍以採用依圍棋術語分類的方式較好,最大的. 來說,是最為理想的分類法,而且在建立棋形. 理由是知識庫的收集整理會比較完整,也比較. 時較不會遺漏。圖 5 列出一小部分根據棋形術. 容易進行歸納與偵錯。至於棋形的功能則可在. 語所設計的棋形樣式,這些樣式的術語是暫訂. 整理歸納時同時加以設定,並不至於造成製作. 以黑子為主。. 上的麻煩。. 三、 棋形知識庫的建構模式 (一) 棋形樣式的製作 (a) 長. (b) 扳. 在本節中我們要把前面所提一個個的棋. (c) 斷. 形樣式,透過電腦程式將它設計出來。首先我. 圖5. 們要先決定每個棋形樣式的大小,為了製作上. (2) 依棋形用途分類. 的便利,棋形樣式的大小最好是固定 n × n 的. 這種分類方式是依照棋形的作用來分. 型式。當然 n 值愈大則歸納出來的棋形就愈細. 類,例如急所、整形、連結、壓迫、擴大等等。. 緻,考慮的內容也會愈完整;但從反面來說 ,. 3.

(4) 每個棋形樣式所佔的空間也愈大,而整個知識. 個座標 33 與 33,這代表此型不論輪. 庫也會因為棋形分的較細微而使得棋形樣式. 到誰,都應該下到此型中心點(3,3)的. 的數量倍增。根據實際分析與整理棋形的經. 位置上。. 驗,我們認為 5 × 5 是合適的大小 [3][4]。因為. (2) 此棋形的用途代號:如數值 6。由於. 絕大多數的基本棋形 ,例如長、扳、跳、飛、. 每個棋形的用途可能有好幾種,例如. 衝、斷等等,都能夠被包含在 5 ×5 的範圍中;. 連接與分斷 、封鎖與突圍、擴張與壓. 而其它需要較大範圍的棋形,幾乎都在棋盤邊. 迫等等 。因此我們事先整理好許多不. 上,且這些棋形的範圍大體上是狹長型的(例. 同的用途代號,例如 1、2、4、8、16…. 如 5 × 10)。因此若我們以 5 ×5 為基本單位的. 等等(都是 2 的冪次以利於編碼 )。所. 話,在碰到這種較大範圍的棋形時,就可以採. 以數值 6 表示這個棋形兼具用途 2 與. 用合併法來處理(見下一章)。以下我們就以這. 用途 4 的功能。. 種 5 ×5 大小的棋形樣式來說明其製作方法 (這. (3) 此棋形的重要程度:如數值 4。在這. 裏所提出的製作方法,對於 n × n 的大小也完. 裏我們把棋形的重要程度分為四類,. 全適用 )。. 分別是緊急(4)、重要(3)、一般(2)、特. 在設計每一個 5 × 5 的棋形樣式時,我們. 殊狀況 (1)。大致上具有連接與切斷功. 會對這個樣式的 25 個點清楚指出 :那些點一. 能的,其重要程度會比較高 。這樣的. 定是我方棋子、那些點一定是敵方棋子、那些. 分類對於日後進行搜尋時,能夠迅速. 點必須是空點;除此之外,有時候某些點不能. 提供較佳之好著點,有助於提昇搜尋. 是我方棋子,有時候某些點不能是敵方棋子。. 的品質與效能。. 又有時候某些點是無關緊要的,也就是說該點. (4) 此棋形需要的比對次數 :如數值 8。. 不論是我方或敵方棋子甚至是空點都無所. 因為每個棋形與實際的盤面作棋形辨. 謂 , 這 樣 的 點 我 們 稱 為 無 關 點 (don’t care. 識比對時,除了原形之外,通常需要. point)。圖 8 是一個棋形樣式的設計範例,在. 再作 90 度、180 度、270 度等共 4 種. 這個例子中,O 代表我方棋子,X 代表敵方棋. 角度的旋轉 ;另外看情況可能每種角. 子, · 代表空點,&代表不能是我方棋子,@. 度可能還要作鏡射(對稱)處理,因此. 代表不能是敵方棋子,_ 則代表無關點[3]。. 最多需要比對 8 次,有時也會有只需. _ _ _ _ _. _ _ _ _ X O _ _ ··X _ ·@ @ _ _ _ _ _. 要 4 次或者 2 次的情形。 (5) 在棋盤位置的限制:因為有些棋形適. 33. 33 4 8. 6 00. 用的場合是在角上或邊上,所以我們 的棋形樣式必需指明是否是這種情 況。數值 00 的意思是代表這個棋形並. 圖8. 沒有這方面的限制。 設計好棋形樣式之後,如何根據這個樣式. 光看圖 8 的棋形可能還無法充分理解這個. 來進行有效的比對工作是很重要的,我們將在. 棋形的意義,譬如說這個棋形所指出的好點在. 下一節詳加說明。. 何處並未標示。所以對於每個棋形,我們還需 要一些資訊來輔助。在圖 8 右邊我們設了幾個. (二) 棋形辨識的方法. 數值,分別代表了重要的屬性 :. 當我們建構好棋形樣式的結構之後,剩下. (1) 我方與敵方的好點之位置:如前面兩. 的問題便是如何將這個棋形儲存起來。為了要 4.

(5) 使棋形辨識的速度可以達到較高的效率,我們. 代號 X 之值= 00000 00000 0 1000 00000 00000. 利 用 位 元 比 對 (bit mapping)的 觀 念 來 製 作. 代號·之值= 00000 00010 00100 00000 00000. [3][4][6]。在這個方法中 ,我們將原來棋形樣. 代號& 之值= 00000 00000 00011 00010 00000. 式的 25 個點給予編號如圖 9 所示,每個編號. 代號@ 之值= 00000 00000 00000 00000 00000. 將會分別對應到一個 32 位元整數中的一個位. 代號_ 之值= 11111 11001 10000 11001 11111. 元。在棋形樣式中的 6 種代號 O、X、. 、&、. 圖 12. @、_ 分別用 6 個整數加以儲存,每個整數中. B[x][y] =. 00000 01100 00000 00100 00000. 所對應的位元如果有該代號則值為 1,否則其. W[x][y] =. 00000 00000 01001 01000 00000. 值為 0。. E[x][y] =. 11111 10011 10110 10011 11111. 25. 24. 23. 22. 21. 20. 19. 18. 17. 16. 15. 14. 13. 12. 11. 10. 9. 8. 7. 6. 5. 4. 3. 2. 1. 圖 13 現在如果某個盤面其中有個 5 ×5 的範 圍如圖 11 所示,則對於圖 11 的中心點(x, y) 而言,其所儲存的三個陣列內容分別如圖 13 所示。. 棋形樣式編號. 以圖 10 的棋形樣式對照圖 11 的盤面,. □□□□□□□□□□□□□□□□□□□ 323130292827262524… … . … …. 可以知道它們是吻合的。由棋形樣式所儲存的. 5 4 3 2 1. 6 種代號的整數值,與實際盤面資料所得的. 對應的整數位元編號. B、W、E 三個陣列元素的整數值,我們設計. 圖9. 出一個效率很高的 Bitmapping 演算法得知這. 以圖 10 的棋形樣式為例,在該樣式裏每. 個盤面與棋形樣式是否比對成功。這個演算法. 個代號所儲存的整數,其內容如圖 12 所示(在. 主要是利用 AND、OR、NOT 三種位元邏輯運. 此以二進位表示 ,且為了方便只寫出後面 25. 算來完成,其內容如下:. 個位元),這個已儲存好的棋形樣式的整數內. Algorithm Bitmapping :. 容是固定不變的。現在讓我們考慮到實際的棋 局狀態,我們會利用 3 個 19 ×19 的整數二維. Input : • 棋形樣式之 Integer O, X, P,. 陣列(假定取名為 B、W、E),來分別記錄以黑. &, @, D ( P, D 分別表示空. 子、白子以及空點為主的整數內容。譬如說整. 點 ·與 無 關 點_ 所 存 之 整 數. 數 B[x][y]之內容,代表在以座標(x, y)為中心. 值 ); ‚ 實 際 盤 面 之 Integer. 的 5 × 5 之範圍內,每個點如果是黑子則所對. B, W, E。. 應之位元就將它設成 1,否則就設為 0 (位置對. Step 1: 令 Integer D’ = NOT D (將 D. 應參照圖 9)。. 的每個位元變補數). _ _ _ _ _. Integer. _ _ O . _. K’ = NOT. &的每個位元變補數 ). _ X ·& &. Integer. A’ = NOT. _ _ O & _. @的每個位元變補數 ). _ _ _ _ _. Step 2: if ( ( D’ AND A’ AND B. 圖 10. & (將. 圖 11. @ (將. =. 且 ( D’ AND K’ AND W. 代號 O 之值= 00000 00100 00000 00100 00000. O) =. X) 且 ( D’ AND A’ AND K’ 5.

(6) AND E =. X 滿足). P) ). D ’ 00000 00110 01111 00110 00000. then RETURN. A ’ 11111 11111 11111 11111 11111. SUCCESS. Step 3: if ( ( D’ AND A’ AND W. =. K ’ 11111 11111 11100 11101 11111. O) 且 ( D’ AND K’ AND B. =. And E 11111 10011 1 0110 10011 11111. X) 且 ( D’ AND A’ AND K’. --------------------------------. AND E =. P 00000 00010 00100 00000 00000. P) ). ( 條 件 D’. then RETURN Step 4: RETURN. AND. SUCCESS. AND. A’. AND. K’. P 滿足). E =. 故可知比對成功。. FAILURE. 在這個演算法中 ,如果 Step 2 的條件成. 使用這個演算法進行棋形辨識是很快. 立,則表示用 O 代替黑子、用 X 代替白子的. 的。在前置作業上只要事先將知識庫中的棋形. 比對成功。如果 Step 3 的條件成立,則表示用. 樣式讀入並且設定好,並且準備 3 個 19 ×19. O 代替白子、用 X 代替黑子的比對成功。若. 的二維陣列,來儲存棋盤中黑白子與空點的位. Step 2 與 Step 3 都不成功則比對失敗 !. 元編碼資訊。接著棋盤中只要每下一個子,我. 現在拿上面圖 12 的六種棋形代號值,與. 們就立刻修改二維陣列裏對應的編碼值,隨後. 圖 13 實際盤面計算所得的 B, W, E之值來執行. 便立即可以查出棋形樣式的辨識是否成功。對. 看看:. 於每個棋形可能有旋轉、對稱等 8 個不同方向. Step 1 : D’ = NOT D =. 的變化,我們可以另外撰寫轉換程式加以處. 00000 00110 01111 00110 00000. 理,或者多花一些記憶體空間去儲存棋形樣式 的 8 種變化值即可。. K’ = NOT & = 11111 11111 11100 11101 11111. (三) 其它的棋形知識庫製作方式. A’ = NOT @ =. 在這裏我們要討論另一種棋形知識庫的. 11111 11111 11111 11111 11111. 製作方式。這種方式的特點是每個棋形樣式的. Step 2 :D ’ 00000 00110 01111 00110 00000. 大小是不固定的,而形狀也不一定是矩形,它. A ’ 11111 11111 11111 11111 11111. 可以是任意的不規則形,例如圖 14 的(a)與(b)。. And B 00000 0 1100 00000 00100 00000. (a). --------------------------------. 2 7. O 00000 00100 00000 00100 00000 (條 件 D’ AND. A’. AND. B. (b). =. O 滿足). 5 5 5. 1 * 4. 2 1 1 1 2. 4 2 1. 1 * 1 1 1 8. D ’ 00000 00110 01111 00110 00000. 連接與切斷. K ’ 11111 11111 11100 11101 11111. 一線上尖渡. 圖 14. And W 00000 00000 0 1001 01000 00000 --------------------------------. 這種表示法的編碼是透過了特別的安. X 00000 00000 0 1000 00000 00000. 排。在圖 14 中是分別用數字『1、2、4、8』. (條件 D’ AND. K’ AND. W. 來代表『空點、我方棋子、敵方棋子、邊界之. =. 6.

(7) 外』四種情形;其它數字則代表兩種以上的可. 重要了,因此我們認為固定大小的作法是較佳. 能組合。例如 5 表示該點可以是空點 (數字 1). 的選擇。. 或是敵方棋子 (數字 4),7 表示該點無論是空點. 四、 特殊用途的棋形處理. (1)、我方棋子 (2)或是敵方棋子(4)都可以。而 *則表示在這種棋形樣式裏應該要下的位置。. 本章我們要對一些具有特殊用途的棋形. 在過去採用這種實作方式的電腦圍棋程. 加以討論,並研究其處理方法。包括大型棋形. 式,包括了劉東岳的 Dragon 2.0 與顏士淨的. 樣式之處理方式,以及棋形中棋子的狀況問題. Jimmy 5.0 [1][2]。很明顯地 ,這種方式由於大. 兩類。. 小不固定,因此對於每個棋形樣式而言比較有. (一) 大型的棋形樣式之處理. 彈性,而且利用 1、2、4、8 進行的組合式編. 在第三章我們選定以 5 ×5 做為棋形樣. 碼設定也很靈活。但是它卻有幾個不利的缺點. 式的大小,這是一種經過利弊權衡下的決定。. 存在:. 當然這樣的大小範圍,對於大多數的棋形來說. (1) 在棋形編輯與檢視時,它的可讀性. 都可以滿足所求;不過在一些特定場合,特別. 很低,不像 O、X 那樣清楚易懂。. 是在棋盤的邊上,往往會有一些涵蓋範圍比較. 所以日後擴大整個知識庫規模時,. 大的棋形,例如圖 15 所示。. 整理歸納與編修工作會很麻煩 。 (2) 這個方法的棋形樣式看來大小雖小 (多數不需要 5 ×5 =25 個點),然而 其儲存空間卻並不節省 。這主要是 因為它的棋形樣式形狀不固定 ,所 以儲存每個棋形時 ,也必須把它的 「形狀」儲存起來。譬如它可能要. 圖 15. 儲存每個點的組合編碼以及該點與. 遇到這樣的棋形,如果再加大 5 ×5 的範. * 點 的 相 對 位 置 ,這 有 如 sparse. 圍(譬如說用 9 ×9) 並不是明智的選擇,因為. matrix 的儲存方法,所以此法就儲. 這徒然只是為了滿足少數 case 而大增使用之. 存空間來說並不經濟。. 記憶體空間,而且執行速度也會受到拖累而變. (3) 更重要的一點是,這種方式在與真. 慢。在這裏我們採用的解決方式是允許棋形樣. 實盤面進行棋形比對時 ;對每個棋. 式合併 (merge),也就是可以讓兩個 5 ×5 的棋. 形樣式來說,必須要針對該棋形樣. 形樣式合併在一起變成 5 ×10 的範圍,例如圖. 式中每一個『點』分別進行檢查。. 15 的狀況我們可以用圖 16 的兩個 5 ×5 之棋. 在這一方面上它無法像前述方法一. 形樣式來表示。. 樣使用 bitmapping 的技巧,因此在 速度上而言亦有相當之落差。 所以經過研判,我們認為應該放棄這種作 法。因為它的儲存空間與比對時間都遜於固定 大小式的作法。特別是日後要作搜尋處理時, 若要將棋形知識庫建議的著點提供給搜尋系. 圖 16. 統作為選擇,那麼棋形比對的效率就變得極為. 7.

(8) 採用合併法最大的好處,在於原來的資. 除了氣數之外,類似的誤判情形也可能. 料儲存方式以及棋形辨識方法完全不必更. 會發生在死活有問題的棋子身上。例如圖 20. 改,我們只須在要作合併處理的棋形樣式裏加. 來說,黑 A 的切斷事實上毫無意義,因為黑. 上辨識標記,再略作一些改變就可以成功處. 方的△兩子已經是死棋狀態了,所以 A 位的. 理。因此,透過合併法我們可以有效解決大型. 切斷雖然是個棋形辨識上的要點,但實際上卻. 棋形樣式的問題。. 沒有切斷的效果,可以說是辨識上的盲點。. (二) 特殊棋子狀況之處理 有時候棋形樣式指出的好點 ,應用在實 際盤面時反而不好。這是因 為在棋形辨識時, 只是找出它們的「形態」是否一致,但並沒有 詳加考慮棋子的「狀況」 。譬如圖 17 的棋形樣 式是用來找出切斷的好點,如果黑棋用根據它. 圖 20. 來下在圖 18(a)盤面上的 A 點,那就是一步嚴. 要避免這種因棋子狀況而造成的誤判,基. 厲的好棋;但如果在圖 18(b)的情況,則黑 A. 本上有兩個解決辦法。其一就是在棋形樣式中. 的切斷就變成是自找死路之著,因為下一手棋. 附加一些額外的條件,像是某棋子必須在多少. 被白棋下在 B 位,則黑子會被提取。. 氣以上 (或以下),以及棋子是否要求必須是安. _ _ _ _ _. 全的等等。但是這樣的作法有相當大的壞處:. _ _ X O _ _ X ·X _. 33. _ _ O _ _. 第一是製作棋形知識庫時要耗費過多的精力. 33 11 4. 8. 在許多難以預料的例外處理上,因為每個不同. 00. 的棋形樣式要求的棋子狀況會有差異,甚至同. _ _ _ _ _. 一個棋形裏也可能會有數組不同的狀況需求 圖 17. (例如要求 O 的氣數必須不小於 X 的氣數 )。第 二是會加重棋形辨識上的負擔,不但速度上會 大幅降低 bitmapping 的優點,而且棋形知識庫 也會變得複雜,不易於日後的維護與管理。 所以我們認為比較理想的解決辦法,就是. (a). (b). 不在這個地方作處理!因為從一個模組化的. (c). 角度來思考,每個不同的模組(module)應該各. 圖 18. 有它不同的功能,也各有它該做與不該做的. 在這裏我們也不能因為這個原因而把圖. 事。如果我們要進行電腦圍棋程式的設計,則. 18(b)作成惡形之棋形樣式去避開不下,那樣並. 棋形知識庫最多只是提供可能的好點或指出. 不能解決問題,因為類似的情形可能會出現極. 要避開的惡形,至於棋子的氣數與安危狀況應. 多種,例如圖 18(c)即是。. 該是由更上層的決策模組去綜合考量。也就是. 圖 18(a)至(c)的例子之所以會出現這樣大. 說,棋形知識庫的指示是提供一個參考,這個. 的差別,其關鍵在於我們沒有將黑子的「氣數」. 參考是否正確,必須要交由上層的決策分析系. 考慮進去。也就是在圖 17 之樣式中,位於中. 統去評估後方能得知;如果直接要在棋形知識. 心空點下方的 O 子,其氣數必須不少於 2 氣. 庫裏就要做好這樣的判斷,那是事倍功半而且. 才不會判斷失誤。 8.

(9) 也會造成電腦圍棋整體結構層次的紊亂。. 當有利於日後的發展維護。並且以這樣的棋形 知識庫系統,不論是作為學棋的工具,或者進. 五、結論. 一步將它用在電腦圍棋程式上,都有極佳的發. 經過對棋形的整理歸納與製作方法的研. 展空間與價值。在計算機科學中的. 究,我們認為:. Computional. Complexity 的領域裏指出:圍棋. 1. 採用以圍棋術語進行棋形的分類是較. 的問題複雜度是一種 PSPACE 的領域( NP ⊆. 佳的方式。這樣做不但整理時較不會遺. PSPACE) [5]。我們相信若是對於圍棋之棋形. 漏,而且作法上比較有系統 。另外,每. 辨識能進展到更高明的水準,必定有助於日後. 個棋形各有其一種或多種用途,這點在. 電腦圍棋這方面的研究,預計未來會有更好的. 處理上充分可以做到。. 發展。. 2. 棋 形樣式的設計上宜採用固定大小模. 參. 式,這樣可以利用位元比對的技巧加快. 考. 文. 獻. [1] 劉東岳, “電腦圍棋程式之設計與製作 ”,. 棋 形 辨 識 的 速 度。而且因為格式的統. 臺灣大學資訊工程研究所碩士論文,1989. 一,使得棋形知識庫的維護與修改比較. [2] 顏士淨, “電腦圍棋程式 Jimmy 5.0 之設. 容易。. 計與製作”,臺灣大學資訊工程研究所博士. 3. 在處理特殊棋形時,例如大型棋形樣. 論文,1999. 式、或者因為棋子狀況而造成的誤判等. [3] 嚴礽麒, “電腦圍棋程式 Archmage 1.0 之. 等。要把持的基本原則是『絕不能因此. 設計與製作”,臺灣大學資訊工程研究所碩. 而把整體結構改變而複雜化 』 ,在處理上. 士論文,1992. 不但要力求簡明,而且要仔細思考每種. [4] Mark. 模組應該完成的功能範圍為何,才不至. Boon, “A Pattern Matcher for. Goliath”, Computer Go, Winter 1989-90,. 於走錯大方向。. No.13, pp.12-24. 我們將這些設計概念與方法實際撰寫出. [5] Papadimitriou, “Computional Complexity”,. 程式,再透過一些對局實戰譜作為測試範例來. Addison Wesley, 1994. 進行測試。經實驗結果,在速度上如我們所料. [6] P. W. Prey, “Machine Problem Solving, Part. 的相當理想;而在正確性上也相當令人滿 意,. 2: Directed Search Using Cryptarithmetic”,. 所有的棋形要點都能確實找出 。. BYTE, Oct, 1980, pp.266-272. 然而在實作過程上,我們發現最難的部. [7] Walter Reitman and Bruce Wilcox, “Pattern. 分還是在於棋形的整理歸納。第一因為這是需. recognition and pattern-directed inference in. 要專業的知識,棋力水平不夠則無法做好。再. a. 則是即使有相當的專業素養,在製作過程也會. program. for. playing. Go.”. ,. Pattern-Directed Inference Systems, pages. 有思慮上的疏失;因為這項工作本身資料量就. 503-523, 1978. 很龐大,而且資料與資料之間存在有相當的重. [8] Richard J. Lorentz, “Pattern matching in a. 複性(因為棋形樣式之間具有「無關點 」的組. Go Playing Program”, Game programming. 合),偶爾也會充斥著矛盾性,所以這是一項. workshop in Japan, pages 167-174, 1995. 相當難且需要不斷測試修正的工作。 所幸整個知識庫的架構統一而且大致完 整,且目前的測試修正已經趨於穩定,這點相. 9.

(10)

參考文獻

相關文件

• 將已收集的 LPF 有效顯證,加入為校本的 學生表現 示例 ,以建立資源庫作為數學科同工日後的參照,成 為學校數學科組知識管理

學習活動扼要描述: 學生以兩種感受:觸覺和視覺去分辨水與冰的不同,從而認識 水的溫度改變(觸覺)形態亦會改變(視覺) 。學生選出圖卡表

更進一步說,求知識明道理,不光是懂得了,記住了就

應用閉合電路原理解決生活問題 (常識) 應用設計循環進行設計及改良作品 (常識) 以小數加法及乘法計算成本 (數學).

由不同的物 料製成同樣重量的 降落傘的降落速度 也會不一樣。. 風力、拋擲的方法 、懸墜物的重量等

〔備註 1:小學數學科修訂課題有關圓形圖的學習重點雖然只要求學生闡釋 涉及簡單計算的圓形圖,例如每個扇形的圓心角須為 30º 或

Kluwer Academic Publishers, 2002; Raymond Martin, John Barresi (eds.), Personal Identity, Malden: Blackwell Publishing, 2003; Raymond Martin, John Barresi, The Rise and Fall of

階段一 .小數為分數的另一記數方法 階段二 .認識小數部分各數字的數值 階段三 .比較小數的大小.