電腦圍棋程式設計的 演進與發展

90
電電電電電電電電電 電電電電電電電電電 電電電電電 電電電電電 電電電電電電 電電電電電 電電電電電電 電電電電電 電電電 電電電

Upload: cheryl

Post on 15-Jan-2016

41 views

Category:

Documents


0 download

DESCRIPTION

電腦圍棋程式設計的 演進與發展. 僑光技術學院 資訊科技系 嚴礽麒. 電腦對局 (Computer Game). 是人工智慧 (Artificial Intelligent) 的領域之一 讓電腦程式具有思考分析能力,能夠與人進行黑白棋、五子棋、西洋棋、象棋、圍棋等等的對奕。 例:由 IBM 超級電腦上所研發的西洋棋程式 『 深藍 』(DeepBlue) ,在 1997 年擊敗了當代的世界冠軍卡斯帕洛夫 (Kasparov) 。. 常見棋類遊戲介紹. 黑白棋 (Othello) 五子棋 (Go-moku) 西洋棋 (Chess) 象棋 (Chinese Chess) - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 電腦圍棋程式設計的 演進與發展

電腦圍棋程式設計的電腦圍棋程式設計的演進與發展 演進與發展

僑光技術學院 資訊科技系僑光技術學院 資訊科技系嚴礽麒嚴礽麒

Page 2: 電腦圍棋程式設計的 演進與發展

電腦對局電腦對局 (Computer Game)(Computer Game)

是人工智慧是人工智慧 (Artificial Intelligent)(Artificial Intelligent) 的領域的領域之一之一

讓電腦程式具有思考分析能力,能夠與人讓電腦程式具有思考分析能力,能夠與人進行黑白棋、五子棋、西洋棋、象棋、圍進行黑白棋、五子棋、西洋棋、象棋、圍棋等等的對奕。棋等等的對奕。

例:由例:由 IBMIBM 超級電腦上所研發的西洋棋程超級電腦上所研發的西洋棋程式『深藍』式『深藍』 (DeepBlue)(DeepBlue) ,在,在 19971997 年擊敗年擊敗了當代的世界冠軍卡斯帕洛夫了當代的世界冠軍卡斯帕洛夫 (Kasparov)(Kasparov) 。。

Page 3: 電腦圍棋程式設計的 演進與發展

常見棋類遊戲介紹常見棋類遊戲介紹 黑白棋黑白棋 (Othello)(Othello) 五子棋五子棋 (Go-moku)(Go-moku) 西洋棋西洋棋 (Chess)(Chess) 象棋象棋 (Chinese Chess)(Chinese Chess) 六子棋六子棋 (Connect 6)(Connect 6) 圍棋圍棋 (Go)(Go)

Page 4: 電腦圍棋程式設計的 演進與發展

一般常見的誤解一般常見的誤解 誤解誤解 11 :電腦對局程式可以將所有的棋譜:電腦對局程式可以將所有的棋譜

輸入電腦,因而戰勝人腦。輸入電腦,因而戰勝人腦。 誤解誤解 22 :電腦計算速度太快,人一定算不:電腦計算速度太快,人一定算不

贏電腦,所以所有的棋類遊戲都一定是電贏電腦,所以所有的棋類遊戲都一定是電腦必勝。腦必勝。

誤解誤解 33 :一個下棋很遜的程式設計者,無:一個下棋很遜的程式設計者,無法設計出一個比他厲害的下棋程式。法設計出一個比他厲害的下棋程式。

Page 5: 電腦圍棋程式設計的 演進與發展

象棋的複雜度概算象棋的複雜度概算 通常一盤棋大約經過通常一盤棋大約經過 4040 回合回合 (( 共共 8080 步步 )) 可可

得到最後結果。得到最後結果。 每回合可走的所有棋步平均約有每回合可走的所有棋步平均約有 4545 種。種。 複雜度粗略估計:複雜度粗略估計:

45*45*45*…*45 = 4545*45*45*…*45 = 458080

最後再考慮去除一些對稱重複情形後,將最後再考慮去除一些對稱重複情形後,將之微調大約是之微調大約是 1010150150 。。

Page 6: 電腦圍棋程式設計的 演進與發展

棋類遊戲難易度分析棋類遊戲難易度分析

黑白棋黑白棋 五子棋五子棋 西洋棋西洋棋 象棋象棋 圍棋圍棋

複雜度複雜度 10105050 10108080 1010123123 1010150150 1010700700

比人類比人類最強者最強者

強?強?絕對是絕對是 絕對是絕對是 大約是大約是 不是不是 遠不如遠不如

人類人類

Page 7: 電腦圍棋程式設計的 演進與發展

電腦 電腦 vs. vs. 人腦人腦 電腦優勢:電腦優勢:

運算速度極快運算速度極快 能記憶大量資料能記憶大量資料 不會有情緒影響不會有情緒影響

人腦優勢:人腦優勢: 具有敏銳的直覺具有敏銳的直覺 能將經驗累積成知識能將經驗累積成知識

Page 8: 電腦圍棋程式設計的 演進與發展

電腦對局理論基礎電腦對局理論基礎 遊戲樹遊戲樹 (Game Tree)(Game Tree) 最大最小值搜尋最大最小值搜尋 (Minimax Search)(Minimax Search) αα--ββ pruning pruning Iterative deepening searchIterative deepening search

Page 9: 電腦圍棋程式設計的 演進與發展

遊戲樹遊戲樹 (Game Tree)(Game Tree)

電腦程式先將所有可能的走法整理出來,電腦程式先將所有可能的走法整理出來,然後嘗試走走看;接著再將對方所有可能然後嘗試走走看;接著再將對方所有可能走法也整理出來,接著也去走走看。如此走法也整理出來,接著也去走走看。如此循環反覆,一直進行到某種條件符合才停循環反覆,一直進行到某種條件符合才停止,然後經過審局函數評估,再從其中選止,然後經過審局函數評估,再從其中選出最佳著手。出最佳著手。

用到遞迴呼叫觀念。用到遞迴呼叫觀念。 執行時間通常相當久。執行時間通常相當久。 除錯工作不容易。除錯工作不容易。

Page 10: 電腦圍棋程式設計的 演進與發展

遊戲樹概念圖遊戲樹概念圖

我方著手

敵方著手

我方著手

Win WinLose50 80 -5 20 40 0 90

Page 11: 電腦圍棋程式設計的 演進與發展

審局函數審局函數 (Evaluation)(Evaluation)

在遊戲樹中用來評估局面的優劣程度在遊戲樹中用來評估局面的優劣程度 ((假定假定正值表示我方佔優,負值表示敵方佔優,正值表示我方佔優,負值表示敵方佔優,其絕對值大小代表優勢程度高低其絕對值大小代表優勢程度高低 )) 。。

審局函數在計算上愈快愈好。審局函數在計算上愈快愈好。 審局函數愈精準,則對於著手的建議愈正審局函數愈精準,則對於著手的建議愈正確。確。

Page 12: 電腦圍棋程式設計的 演進與發展
Page 13: 電腦圍棋程式設計的 演進與發展

象棋的審局函數象棋的審局函數 (1)(1)

通常會將不同兵種給通常會將不同兵種給予一個固定分數予一個固定分數

審局時只要將雙方棋審局時只要將雙方棋盤上的子力分數加總盤上的子力分數加總對比,就可以得到一對比,就可以得到一個近似正確的估計值。個近似正確的估計值。

10000

200

200

1000

420

450

100

Page 14: 電腦圍棋程式設計的 演進與發展

象棋的審局函數象棋的審局函數 (2)(2)

除了子力之外,尚可將棋子位置也納入評除了子力之外,尚可將棋子位置也納入評估優劣的考量。估優劣的考量。 絕對位置:例如馬臥槽是絕佳位置,馬塞在將絕對位置:例如馬臥槽是絕佳位置,馬塞在將正前方是極惡位置。正前方是極惡位置。

相對位置:馬被擋馬腳、象被塞象眼都是不好相對位置:馬被擋馬腳、象被塞象眼都是不好位置;而包佔據空頭是絕佳位置。位置;而包佔據空頭是絕佳位置。

但增加此項考量,亦有計算較費時的缺點,但增加此項考量,亦有計算較費時的缺點,是否採用仍是是否採用仍是 trade-offtrade-off 的問題。的問題。

Page 15: 電腦圍棋程式設計的 演進與發展

象棋局勢分析範例象棋局勢分析範例

Page 16: 電腦圍棋程式設計的 演進與發展

最大最小值搜尋最大最小值搜尋 概念:由於輪到概念:由於輪到我方我方著手時,會盡量使我著手時,會盡量使我方局勢有利方局勢有利 ((評估值評估值愈大愈好愈大愈好 ));輪到;輪到敵方敵方著手時,會盡量使我方局勢不利著手時,會盡量使我方局勢不利 ((評估值評估值愈愈小愈好小愈好 )) 。。

作法:在搜尋過程上,由底層終端節點經作法:在搜尋過程上,由底層終端節點經由審局函數取得評估值後,視該層由何方由審局函數取得評估值後,視該層由何方著手來選出最大值或最小值予以傳回。著手來選出最大值或最小值予以傳回。

Page 17: 電腦圍棋程式設計的 演進與發展

最大最小值搜尋概念圖最大最小值搜尋概念圖80

80 -5 40

Win 80 -5 Win 40 90

我方Max

敵方Min

我方Max

Win WinLose50 80 -5 20 40 0 90

Page 18: 電腦圍棋程式設計的 演進與發展

αα--ββ pruning pruning

概念:是用來改良最大最小值搜尋的效能。概念:是用來改良最大最小值搜尋的效能。亦即當某種條件成立時,一些搜尋的分支亦即當某種條件成立時,一些搜尋的分支路徑完全可以省略。路徑完全可以省略。

技巧:如果能將著手選擇優劣事先作排序,技巧:如果能將著手選擇優劣事先作排序,則則 αα--ββ pruning pruning 的效果會更好。的效果會更好。

Page 19: 電腦圍棋程式設計的 演進與發展

αα--ββ pruning pruning 概念圖概念圖80

80 -5 40

Win 80 -5 Win 40 90

我方Max

敵方Min

我方Max

Win WinLose50 80 -5 20 40 0 90

Page 20: 電腦圍棋程式設計的 演進與發展

圍棋基本規則圍棋基本規則――氣與提子氣與提子

Page 21: 電腦圍棋程式設計的 演進與發展

圍棋基本規則圍棋基本規則――打劫打劫 (1)(1)

Page 22: 電腦圍棋程式設計的 演進與發展

圍棋基本規則圍棋基本規則――打劫打劫 (2)(2)

Page 23: 電腦圍棋程式設計的 演進與發展

圍棋基本規則圍棋基本規則――打劫打劫 (3)(3)

Page 24: 電腦圍棋程式設計的 演進與發展

圍棋基本規則圍棋基本規則――打劫打劫 (4)(4)

Page 25: 電腦圍棋程式設計的 演進與發展

圍棋的死活圍棋的死活

Page 26: 電腦圍棋程式設計的 演進與發展

圍棋基本規則圍棋基本規則―勝負計算―勝負計算

黑棋 29目,白棋 25目

Page 27: 電腦圍棋程式設計的 演進與發展

圍棋棋力鑑定標準圍棋棋力鑑定標準低低 高高9 8 7 6 5 4 3 2 1 9 8 7 6 5 4 3 2 1 初 初 2 3 4 5 6 7(2 3 4 5 6 7( 業餘業餘 ))級 級 段段

初 初 2 3…92 3…9 段 段 ((職業職業 ))

Page 28: 電腦圍棋程式設計的 演進與發展

象棋與圍棋的相異處象棋與圍棋的相異處 可選擇棋步總數不同可選擇棋步總數不同 兵種與性質不同兵種與性質不同 全局性與局部性全局性與局部性 設計困難處不同設計困難處不同

審局函數審局函數 著手選擇著手選擇

Page 29: 電腦圍棋程式設計的 演進與發展

圍棋的困難圍棋的困難

Page 30: 電腦圍棋程式設計的 演進與發展

電腦圍棋的歷史電腦圍棋的歷史 起始:起始: ZobristZobrist ,, 19691969 年。年。 早期時代:早期時代: 1970~19851970~1985 年。年。 過渡時代:約自過渡時代:約自 19861986 年開始,局部重點加年開始,局部重點加

強,例如棋形資料庫與棋串吃逃搜尋。強,例如棋形資料庫與棋串吃逃搜尋。 成熟時代:約始於成熟時代:約始於 19891989 年,具備了多目標年,具備了多目標

式的搜尋系統,而且也有了簡單的局勢分式的搜尋系統,而且也有了簡單的局勢分析,甚至是靜態的死活判斷。析,甚至是靜態的死活判斷。

Page 31: 電腦圍棋程式設計的 演進與發展

電腦圍棋程式比賽電腦圍棋程式比賽 應氏盃應氏盃 (1985~2000)(1985~2000) Computer Olympiad Tournament(1990Computer Olympiad Tournament(1990~)~)

FOSTFOST 盃盃 (1995~2000)(1995~2000)

Page 32: 電腦圍棋程式設計的 演進與發展

應氏盃早中期程式水平應氏盃早中期程式水平

Page 33: 電腦圍棋程式設計的 演進與發展

19901990 年後程式水平年後程式水平 具有棋塊概念具有棋塊概念 地域認知能力地域認知能力 多目標搜尋系統多目標搜尋系統 靜態死活分析能力靜態死活分析能力 眼位分析能力眼位分析能力 死活知識庫建立死活知識庫建立

Page 34: 電腦圍棋程式設計的 演進與發展

目前最強圍棋程式目前最強圍棋程式 HandTalkHandTalk :廣東中山大學陳志行教授研發:廣東中山大學陳志行教授研發 MoGoMoGo :為法國程式工程師:為法國程式工程師 Sylvain GellySylvain Gelly與與

Yizao WangYizao Wang 所研發所研發 Crazy StoneCrazy Stone :為法國程式工程師:為法國程式工程師 RemiRemi

Coulon Coulon 所研發所研發 Go IntellectGo Intellect :北卡大學陳克訓教授研發:北卡大學陳克訓教授研發 AyaAya :日本學者研發:日本學者研發 GnuGoGnuGo :是個開放程式讓大家研發的程式:是個開放程式讓大家研發的程式

Page 35: 電腦圍棋程式設計的 演進與發展

電腦圍棋的物件階層電腦圍棋的物件階層 棋子棋子 (stone)(stone) 棋串棋串 (block)(block) 棋鏈棋鏈 (chain)(chain) 棋塊棋塊 (group)(group)

Page 36: 電腦圍棋程式設計的 演進與發展

勢力影響值勢力影響值 作法:利用每個棋子作法:利用每個棋子

對於周圍具有或多或對於周圍具有或多或少影響力的概念,去少影響力的概念,去計算盤面的勢力值。計算盤面的勢力值。

目的:目的: 辨識雙方勢力強弱辨識雙方勢力強弱 用於設定棋塊範圍用於設定棋塊範圍 預估雙方可能地域預估雙方可能地域 協助判斷棋塊安危協助判斷棋塊安危

44 6 8 66 8 6 5 12 16 12 55 12 16 12 5 6 12 24 32 24 12 66 12 24 32 24 12 6 4 8 16 32 4 8 16 32 3232 32 16 8 4 32 16 8 4 6 12 24 32 24 12 66 12 24 32 24 12 6 5 12 16 12 55 12 16 12 5 6 8 66 8 6 44

Page 37: 電腦圍棋程式設計的 演進與發展

勢力影響值應用實例勢力影響值應用實例 (1)(1) -5 -6 3 14 17 6 -3 -6 0-5 -6 3 14 17 6 -3 -6 0

-7 -1 8 -7 -1 8 28 3228 32 11 -8 -6 -5 11 -8 -6 -5

6 12 6 12 44 50 4044 50 40 8 -22 -22 -8 8 -22 -22 -8

12 12 36 48 62 4136 48 62 41 -10 -10 -30 -34-30 -34 -21 -21

18 18 36 61 5136 61 51 16 16 -34 -65 -53-34 -65 -53 -24 -24

17 17 35 42 3235 42 32 -8 -8 -59 -72 -56-59 -72 -56 -27 -27

16 16 34 3434 34 24 -18 24 -18 -54 -68 -46-54 -68 -46 -20 -20

12 24 12 24 3030 16 -17 16 -17 -38 -44-38 -44 -24 -11 -24 -11

5 12 16 7 -7 -22 -20 -11 05 12 16 7 -7 -22 -20 -11 0

Page 38: 電腦圍棋程式設計的 演進與發展

勢力影響值應用實例勢力影響值應用實例 (2)(2) 0 6 8 6 0 0 0 0 00 6 8 6 0 0 0 0 0

5 16 16 8 5 0 -4 0 05 16 16 8 5 0 -4 0 0

18 36 28 12 10 0 -8 -6 018 36 28 12 10 0 -8 -6 0

34 45 34 45 28 28 17 1 -3 -16 -12 -5 17 1 -3 -16 -12 -5

37 49 35 37 49 35 1 1 -13 -29 -41 -30 -12 -13 -29 -41 -30 -12

40 40 4747 20 20 -4-4 -21-21 -45 -45 -50-50 -42 -21 -42 -21

48 48 5454 48 1448 14 -14-14 -30 -60 -44 -20 -30 -60 -44 -20

42 61 42 61 44 2544 25 17 -19 17 -19 -30-30 -34 -21 -34 -21

31 43 45 31 17 -5 -29 -30 -1231 43 45 31 17 -5 -29 -30 -12

Page 39: 電腦圍棋程式設計的 演進與發展

棋串設定方法棋串設定方法 使用圖形連通的使用圖形連通的 DFSDFS 演算法演算法 對每個棋串記錄其子數、棋子位置、氣數、氣點對每個棋串記錄其子數、棋子位置、氣數、氣點位置、相鄰敵方棋串等資訊位置、相鄰敵方棋串等資訊

Page 40: 電腦圍棋程式設計的 演進與發展

棋鏈的種類棋鏈的種類 尖尖 (( 黑▲黑▲ )) 扳扳 (( 白白 )) 跳跳 (( 黑◎黑◎ )) 飛飛 (( 白□白□ ))

Page 41: 電腦圍棋程式設計的 演進與發展

棋塊『連通』的條件棋塊『連通』的條件

同色棋子同色棋子 同色棋鏈空點同色棋鏈空點 強勢點強勢點 敵方死子敵方死子

Page 42: 電腦圍棋程式設計的 演進與發展

棋塊的範圍與地域辨識棋塊的範圍與地域辨識

Page 43: 電腦圍棋程式設計的 演進與發展

棋塊的地域認定棋塊的地域認定 邊界點:棋塊最外層邊界點:棋塊最外層

的棋子或空點,的棋子或空點, 潛力點:由邊界空點潛力點:由邊界空點向內推一層,代表可向內推一層,代表可能成為地域的點,能成為地域的點,

地域點:棋塊內部空地域點:棋塊內部空點或敵方死子,可視點或敵方死子,可視為確定地為確定地

Page 44: 電腦圍棋程式設計的 演進與發展

棋塊安危認定原則棋塊安危認定原則 初步認定:初步認定:

棋塊的地域點是否足夠棋塊的地域點是否足夠 棋塊是否被包圍棋塊是否被包圍 棋塊的潛力點個數多寡棋塊的潛力點個數多寡

詳細認定:詳細認定: 靜態死活分析靜態死活分析 周圍有無敵方的危險或死亡棋塊周圍有無敵方的危險或死亡棋塊

Page 45: 電腦圍棋程式設計的 演進與發展

專家棋士下棋的思路專家棋士下棋的思路 敏銳的棋塊安危感覺敏銳的棋塊安危感覺

直接進攻、聲東擊西、纏繞攻擊、製造雙擊直接進攻、聲東擊西、纏繞攻擊、製造雙擊 設法安定、拓寬出路、以攻代守設法安定、拓寬出路、以攻代守

熟練的棋形要點反應熟練的棋形要點反應 精簡深入的細算思考精簡深入的細算思考

Page 46: 電腦圍棋程式設計的 演進與發展

靜態死活分析靜態死活分析 目的:採取完全不用目的:採取完全不用 searchsearch 的方式,直接的方式,直接從棋塊之地域點作眼位分析,來判斷棋塊從棋塊之地域點作眼位分析,來判斷棋塊死活。死活。

所需資訊:棋塊的地域點個數、位置、各所需資訊:棋塊的地域點個數、位置、各點真假眼形態、有無敵方死子、有無中心點真假眼形態、有無敵方死子、有無中心位置等。位置等。

所需技術:專業的圍棋知識、細膩精確的所需技術:專業的圍棋知識、細膩精確的分析歸納能力、不斷的反覆測試分析歸納能力、不斷的反覆測試

Page 47: 電腦圍棋程式設計的 演進與發展

著手選擇系統著手選擇系統 著手選擇模組:著手選擇模組:

棋塊死活棋塊死活 棋塊攻防棋塊攻防 連結分斷連結分斷 棋串吃逃棋串吃逃 地域搶佔地域搶佔

以預估目數出入作為著手分數以預估目數出入作為著手分數 目前分支度:目前分支度: 88

Page 48: 電腦圍棋程式設計的 演進與發展

審局函數判斷因素審局函數判斷因素 棋塊確定地域目數棋塊確定地域目數 周圍可能成地之潛力周圍可能成地之潛力 棋塊安危程度及範圍大小棋塊安危程度及範圍大小 危險棋串之有無危險棋串之有無 棋塊中的缺陷棋形棋塊中的缺陷棋形

Page 49: 電腦圍棋程式設計的 演進與發展

全局搜尋基本架構全局搜尋基本架構 Game Tree structureGame Tree structure Minimax search & Minimax search & αα--ββ pruning pruning DepthDepth :: 66 WidthWidth :: 88 other skillsother skills

Page 50: 電腦圍棋程式設計的 演進與發展

棋形的觀念棋形的觀念

棋形樣式(Pattern)

應用實例

Page 51: 電腦圍棋程式設計的 演進與發展

棋形樣式的方向轉換棋形樣式的方向轉換

Page 52: 電腦圍棋程式設計的 演進與發展

棋形樣式的擷取棋形樣式的擷取

Page 53: 電腦圍棋程式設計的 演進與發展

棋形的分類棋形的分類 依棋形術語分類依棋形術語分類 ((製作時製作時 ))

根據棋子配置的相對位置關係來區分根據棋子配置的相對位置關係來區分 例如尖、跳、飛、長、扳、虎例如尖、跳、飛、長、扳、虎

依棋形用途分類依棋形用途分類 ((應用時應用時 )) 根據著點的作用與含意來區分根據著點的作用與含意來區分 例如連結、分斷、擴大、壓迫、整形例如連結、分斷、擴大、壓迫、整形

Page 54: 電腦圍棋程式設計的 演進與發展

棋形的等級棋形的等級 緊急:大多屬於連接、分斷類棋形緊急:大多屬於連接、分斷類棋形 重要:大多是包圍、突破,以及重要的擴重要:大多是包圍、突破,以及重要的擴

張、壓迫類棋形 張、壓迫類棋形 一般:屬於一般常見的下法,不特別重要一般:屬於一般常見的下法,不特別重要

但也相當實用 但也相當實用 特殊:屬於特殊情況才使用的手法,多半特殊:屬於特殊情況才使用的手法,多半

有奇兵之意味 有奇兵之意味

Page 55: 電腦圍棋程式設計的 演進與發展

棋形樣式棋形樣式 (pattern)(pattern) 的表示的表示

_ _ _ _ __ X O _ __ . . X __ . @ @ __ _ _ _ _

33 33 6 4 8 00

Page 56: 電腦圍棋程式設計的 演進與發展

棋形樣式中之特殊狀況棋形樣式中之特殊狀況

_ _ _ _ __ _ X O __ X . X __ _ O _ __ _ _ _ _

33 33 11 4 8 00

Matching and Good

Matching but Bad

Page 57: 電腦圍棋程式設計的 演進與發展

棋形系統的選點實例棋形系統的選點實例

Page 58: 電腦圍棋程式設計的 演進與發展

系統之工具程式系統之工具程式 目的:有助於開發圍棋程式系統目的:有助於開發圍棋程式系統 特色:特色:

全部採用專家經驗法則去歸納分析全部採用專家經驗法則去歸納分析 重視正確性與效率重視正確性與效率 不用到任何不用到任何 searchsearch或遞迴或遞迴

Page 59: 電腦圍棋程式設計的 演進與發展

避免不進子問題避免不進子問題

Page 60: 電腦圍棋程式設計的 演進與發展

系統解出的「撲」手範例系統解出的「撲」手範例

Page 61: 電腦圍棋程式設計的 演進與發展

棋串安危的認定棋串安危的認定 棋串安危認定 棋串安危認定 => => 棋塊安危認定棋塊安危認定 方式:方式:

靜態安危分析系統靜態安危分析系統 動態攻殺搜尋系統動態攻殺搜尋系統

效能比較:效能比較: 準確度:動態準確度:動態 (9(9 成成 ) > ) > 靜態靜態 (7~8(7~8 成成 )) 速度:靜態 速度:靜態 >> >> 動態動態

Page 62: 電腦圍棋程式設計的 演進與發展

靜態棋串安危分析靜態棋串安危分析 棋串安危等級:棋串安危等級:

LIBERTY_SAFELIBERTY_SAFE:氣數夠多而視為安全。:氣數夠多而視為安全。 CAREFULCAREFUL:大致上安全,但有微小的不安。:大致上安全,但有微小的不安。 DANGEROUSDANGEROUS :氣數為:氣數為 2~32~3氣,並且伴隨了一氣,並且伴隨了一

些危險因子些危險因子 ((氣點太靠近盤端、…氣點太靠近盤端、… )) 。。 VERY_DANGEROUSVERY_DANGEROUS :危險等級非常高,伴隨:危險等級非常高,伴隨

的危險因子更多。的危險因子更多。 EXPIREDEXPIRED :只剩:只剩 11氣且非「反提」的棋串。氣且非「反提」的棋串。

Page 63: 電腦圍棋程式設計的 演進與發展

棋串安危分析判斷因素棋串安危分析判斷因素 棋串氣數棋串氣數 氣點位置氣點位置 氣點周圍有無敵子氣點周圍有無敵子 氣點周圍有無敵方棋鏈氣點周圍有無敵方棋鏈 有無友方支援棋鏈有無友方支援棋鏈 勢力影響值高低勢力影響值高低

Page 64: 電腦圍棋程式設計的 演進與發展

棋串安危靜態分析實例棋串安危靜態分析實例

Page 65: 電腦圍棋程式設計的 演進與發展

棋串攻殺搜尋系統棋串攻殺搜尋系統 尋找敵我雙方的目標棋串尋找敵我雙方的目標棋串 攻擊方攻擊方 (Killer)(Killer) 負責襲殺目標棋串負責襲殺目標棋串 防守方防守方 (Defender)(Defender)負責救援目標棋串負責救援目標棋串 攻防雙方 攻防雙方 recursive call recursive call 形成 形成 game treegame tree 由 由 AND-ORAND-OR 方式產生決策方式產生決策

以布林值 以布林值 TrueTrue 代表棋串安全代表棋串安全 以布林值 以布林值 FalseFalse 代表棋串被吃代表棋串被吃

Page 66: 電腦圍棋程式設計的 演進與發展

 

        

Killer (AND)

Defender(OR)

Killer (AND)

Defender(OR)

F T F T

T F F F F

T T F

1 2 3

F T 代表安全F 代表被吃

Page 67: 電腦圍棋程式設計的 演進與發展

提高搜尋效率的方法提高搜尋效率的方法 設定著手選擇之 設定著手選擇之 prioritypriority 將較佳之著手優先進行搜尋將較佳之著手優先進行搜尋 降低 降低 branch (branch ( 棋步選擇量棋步選擇量 ))

Page 68: 電腦圍棋程式設計的 演進與發展

Killer MovesKiller Moves 之分類之分類 直接緊氣直接緊氣 「撲」「撲」 避免不進子避免不進子 包圍包圍 攻擊連結鏈棋串攻擊連結鏈棋串 逃出我方逃出我方((包圍者包圍者))之棋串之棋串 攻殺手筋攻殺手筋 系統測試實例系統測試實例

Page 69: 電腦圍棋程式設計的 演進與發展

緊氣原則緊氣原則 目標棋串愈能長氣之目標棋串愈能長氣之點愈優先點愈優先

包圍之棋串能順便長包圍之棋串能順便長氣之點較優先氣之點較優先

Page 70: 電腦圍棋程式設計的 演進與發展

撲撲 是將棋子送入對方虎口中,迫使對方提吃,以求是將棋子送入對方虎口中,迫使對方提吃,以求

能迅速縮減對方氣數之手法。能迅速縮減對方氣數之手法。

Page 71: 電腦圍棋程式設計的 演進與發展

包圍包圍 利用「包圍鏈」來封鎖目標棋串利用「包圍鏈」來封鎖目標棋串 只要目標棋串尚未被封鎖,且氣數低於安全氣數,只要目標棋串尚未被封鎖,且氣數低於安全氣數,則包圍的 則包圍的 prioritypriority 就比較高。就比較高。

Page 72: 電腦圍棋程式設計的 演進與發展

攻擊連結鏈棋串攻擊連結鏈棋串 分斷連結鏈之聯繫分斷連結鏈之聯繫 側襲連結鏈之棋串側襲連結鏈之棋串

Page 73: 電腦圍棋程式設計的 演進與發展

救援我方包圍棋串之範例救援我方包圍棋串之範例 救援的方法選擇救援的方法選擇 救援的重要性救援的重要性

Page 74: 電腦圍棋程式設計的 演進與發展

不進子的處理不進子的處理 連接會被提吃之位置 連接會被提吃之位置 (B(B點點 )) 對接觸之敵方已死棋串緊氣 對接觸之敵方已死棋串緊氣 (C(C點點 ))

Page 75: 電腦圍棋程式設計的 演進與發展

手筋範例手筋範例 點入點入 第一線立下第一線立下

Page 76: 電腦圍棋程式設計的 演進與發展

系統測試範例系統測試範例

Page 77: 電腦圍棋程式設計的 演進與發展

靜態死活分析系統靜態死活分析系統 概念:在棋塊區域辨識後,能夠根據棋塊概念:在棋塊區域辨識後,能夠根據棋塊中的相關資訊,以『無搜尋』的方式分析中的相關資訊,以『無搜尋』的方式分析研判該棋塊的眼位。研判該棋塊的眼位。

目的:為了提升搜尋效能,增快審局函數目的:為了提升搜尋效能,增快審局函數判斷局勢的速度。判斷局勢的速度。

Page 78: 電腦圍棋程式設計的 演進與發展

名詞定義名詞定義 眼位區眼位區 (Eye Region)(Eye Region) :是指棋塊中某一個:是指棋塊中某一個獨立且連通的地域範圍所形成的集合。獨立且連通的地域範圍所形成的集合。

眼位點眼位點 (Eye Point)(Eye Point) :是指該眼位區中包含:是指該眼位區中包含的所有空點或敵方死子之位置。的所有空點或敵方死子之位置。

眼位個數眼位個數 (Eye number)(Eye number) :是指眼位區:是指眼位區 RR 中中包含的眼位數包含的眼位數 (R(Ree)) 。。

棋塊眼位數=棋塊眼位數= ΣΣRRee

Page 79: 電腦圍棋程式設計的 演進與發展

棋塊眼位數計算範例棋塊眼位數計算範例

眼位區 1(A) : 0.5 眼位區 2(B 、 C) : 0

眼位區 3(D 、 E) : 1棋塊眼位數 = 0.5 + 0 + 1 = 1.5 危險

Page 80: 電腦圍棋程式設計的 演進與發展

眼位點分析因素眼位點分析因素 位置:地域點、潛力點、邊界點位置:地域點、潛力點、邊界點 眼形種類:真眼、半眼、假眼眼形種類:真眼、半眼、假眼 狀態:空點、敵方死子狀態:空點、敵方死子

Page 81: 電腦圍棋程式設計的 演進與發展

靜態死活分析範例靜態死活分析範例

Page 82: 電腦圍棋程式設計的 演進與發展

開局時搜尋情況開局時搜尋情況 (1)(1)

搜尋廣度問題搜尋廣度問題 αα--ββ pruning pruning 之效能之效能

Page 83: 電腦圍棋程式設計的 演進與發展

開局時搜尋情況開局時搜尋情況 (2)(2)

搜尋深度問題搜尋深度問題 複雜局勢不易明確分析複雜局勢不易明確分析

Page 84: 電腦圍棋程式設計的 演進與發展

開局知識庫系統開局知識庫系統 目的:為彌補開局階段搜尋深廣度不足。目的:為彌補開局階段搜尋深廣度不足。 作法:使用作法:使用 hash functionhash function 將九路棋盤盤面將九路棋盤盤面

以及相關資訊儲存到一個極大的檔案中,以及相關資訊儲存到一個極大的檔案中,藉由不斷的輸入實戰棋譜資料,使其具備藉由不斷的輸入實戰棋譜資料,使其具備學習功能。學習功能。

技巧:由於棋譜檔案很大,且未來資料量技巧:由於棋譜檔案很大,且未來資料量會隨之增多,必須處理對稱盤面造成的重會隨之增多,必須處理對稱盤面造成的重複,以及盤面資訊如何正確解讀問題。複,以及盤面資訊如何正確解讀問題。

Page 85: 電腦圍棋程式設計的 演進與發展

開局知識庫實作概念開局知識庫實作概念

棋譜檔案

Hash function

Page 86: 電腦圍棋程式設計的 演進與發展

開局知識庫著點選擇開局知識庫著點選擇

依勝負局數資訊分析依勝負局數資訊分析 以亂數決定以亂數決定

著點著點 AA BB CC DD EE

勝局勝局 3232 88 22 11 00

負局負局 3434 2424 22 22 11

勝率勝率 4848 2525 5050 3333 00

Page 87: 電腦圍棋程式設計的 演進與發展

開局知識庫界面開局知識庫界面

Page 88: 電腦圍棋程式設計的 演進與發展

發展電腦圍棋的條件發展電腦圍棋的條件 最好是該種棋類高手最好是該種棋類高手 圓熟的程式設計功力圓熟的程式設計功力 具資料結構理論基礎具資料結構理論基礎 優異的邏輯分析能力優異的邏輯分析能力 鍥而不捨的研究精神鍥而不捨的研究精神

Page 89: 電腦圍棋程式設計的 演進與發展

設計電腦圍棋之甘苦談設計電腦圍棋之甘苦談 生不逢時生不逢時 獨孤求勝獨孤求勝 速成 速成 v.s. v.s. 大成?大成? 大破大立大破大立 廢寢忘食之毅力廢寢忘食之毅力 嘔心瀝血的除錯嘔心瀝血的除錯

Page 90: 電腦圍棋程式設計的 演進與發展

The End