910 likes | 1.13k Views
電腦圍棋程式設計的 演進與發展. 僑光技術學院 資訊科技系 嚴礽麒. 電腦對局 (Computer Game). 是人工智慧 (Artificial Intelligent) 的領域之一 讓電腦程式具有思考分析能力,能夠與人進行黑白棋、五子棋、西洋棋、象棋、圍棋等等的對奕。 例:由 IBM 超級電腦上所研發的西洋棋程式 『 深藍 』(DeepBlue) ,在 1997 年擊敗了當代的世界冠軍卡斯帕洛夫 (Kasparov) 。. 常見棋類遊戲介紹. 黑白棋 (Othello) 五子棋 (Go-moku) 西洋棋 (Chess) 象棋 (Chinese Chess)
E N D
電腦圍棋程式設計的演進與發展 僑光技術學院 資訊科技系嚴礽麒
電腦對局(Computer Game) • 是人工智慧(Artificial Intelligent)的領域之一 • 讓電腦程式具有思考分析能力,能夠與人進行黑白棋、五子棋、西洋棋、象棋、圍棋等等的對奕。 • 例:由IBM超級電腦上所研發的西洋棋程式『深藍』(DeepBlue),在1997年擊敗了當代的世界冠軍卡斯帕洛夫(Kasparov)。
常見棋類遊戲介紹 • 黑白棋(Othello) • 五子棋(Go-moku) • 西洋棋(Chess) • 象棋(Chinese Chess) • 六子棋(Connect 6) • 圍棋(Go)
一般常見的誤解 • 誤解1:電腦對局程式可以將所有的棋譜輸入電腦,因而戰勝人腦。 • 誤解2:電腦計算速度太快,人一定算不贏電腦,所以所有的棋類遊戲都一定是電腦必勝。 • 誤解3:一個下棋很遜的程式設計者,無法設計出一個比他厲害的下棋程式。
象棋的複雜度概算 • 通常一盤棋大約經過40回合(共80步)可得到最後結果。 • 每回合可走的所有棋步平均約有45種。 • 複雜度粗略估計:45*45*45*…*45 = 4580 • 最後再考慮去除一些對稱重複情形後,將之微調大約是10150。
電腦 vs. 人腦 • 電腦優勢: • 運算速度極快 • 能記憶大量資料 • 不會有情緒影響 • 人腦優勢: • 具有敏銳的直覺 • 能將經驗累積成知識
電腦對局理論基礎 • 遊戲樹(Game Tree) • 最大最小值搜尋(Minimax Search) • α-β pruning • Iterative deepening search
遊戲樹(Game Tree) • 電腦程式先將所有可能的走法整理出來,然後嘗試走走看;接著再將對方所有可能走法也整理出來,接著也去走走看。如此循環反覆,一直進行到某種條件符合才停止,然後經過審局函數評估,再從其中選出最佳著手。 • 用到遞迴呼叫觀念。 • 執行時間通常相當久。 • 除錯工作不容易。
遊戲樹概念圖 我方著手 敵方著手 我方著手 Win 50 80 Lose -5 Win 20 40 0 90
審局函數(Evaluation) • 在遊戲樹中用來評估局面的優劣程度(假定正值表示我方佔優,負值表示敵方佔優,其絕對值大小代表優勢程度高低)。 • 審局函數在計算上愈快愈好。 • 審局函數愈精準,則對於著手的建議愈正確。
象棋的審局函數(1) • 通常會將不同兵種給予一個固定分數 • 審局時只要將雙方棋盤上的子力分數加總對比,就可以得到一個近似正確的估計值。 10000 200 200 1000 420 450 100
象棋的審局函數(2) • 除了子力之外,尚可將棋子位置也納入評估優劣的考量。 • 絕對位置:例如馬臥槽是絕佳位置,馬塞在將正前方是極惡位置。 • 相對位置:馬被擋馬腳、象被塞象眼都是不好位置;而包佔據空頭是絕佳位置。 • 但增加此項考量,亦有計算較費時的缺點,是否採用仍是trade-off的問題。
最大最小值搜尋 • 概念:由於輪到我方著手時,會盡量使我方局勢有利(評估值愈大愈好);輪到敵方著手時,會盡量使我方局勢不利(評估值愈小愈好)。 • 作法:在搜尋過程上,由底層終端節點經由審局函數取得評估值後,視該層由何方著手來選出最大值或最小值予以傳回。
80 80 -5 40 Win 80 -5 Win 40 90 最大最小值搜尋概念圖 我方Max 敵方Min 我方Max Win 50 80 Lose -5 Win 20 40 0 90
α-β pruning • 概念:是用來改良最大最小值搜尋的效能。亦即當某種條件成立時,一些搜尋的分支路徑完全可以省略。 • 技巧:如果能將著手選擇優劣事先作排序,則α-β pruning 的效果會更好。
80 80 -5 40 Win 80 -5 Win 40 90 α-β pruning概念圖 我方Max 敵方Min 我方Max Win 50 80 Lose -5 Win 20 40 0 90
圍棋基本規則―勝負計算 黑棋29目,白棋25目
圍棋棋力鑑定標準 低高 9 8 7 6 5 4 3 2 1 初 2 3 4 5 6 7(業餘) 級 段 初 2 3…9 段 (職業)
象棋與圍棋的相異處 • 可選擇棋步總數不同 • 兵種與性質不同 • 全局性與局部性 • 設計困難處不同 • 審局函數 • 著手選擇
電腦圍棋的歷史 • 起始:Zobrist,1969年。 • 早期時代:1970~1985年。 • 過渡時代:約自1986年開始,局部重點加強,例如棋形資料庫與棋串吃逃搜尋。 • 成熟時代:約始於1989年,具備了多目標式的搜尋系統,而且也有了簡單的局勢分析,甚至是靜態的死活判斷。
電腦圍棋程式比賽 • 應氏盃(1985~2000) • Computer Olympiad Tournament(1990~) • FOST盃(1995~2000)
1990年後程式水平 • 具有棋塊概念 • 地域認知能力 • 多目標搜尋系統 • 靜態死活分析能力 • 眼位分析能力 • 死活知識庫建立
目前最強圍棋程式 • HandTalk:廣東中山大學陳志行教授研發 • MoGo:為法國程式工程師Sylvain Gelly與Yizao Wang所研發 • Crazy Stone:為法國程式工程師Remi Coulon所研發 • Go Intellect:北卡大學陳克訓教授研發 • Aya:日本學者研發 • GnuGo:是個開放程式讓大家研發的程式
電腦圍棋的物件階層 • 棋子(stone) • 棋串(block) • 棋鏈(chain) • 棋塊(group)
作法:利用每個棋子對於周圍具有或多或少影響力的概念,去計算盤面的勢力值。作法:利用每個棋子對於周圍具有或多或少影響力的概念,去計算盤面的勢力值。 目的: 辨識雙方勢力強弱 用於設定棋塊範圍 預估雙方可能地域 協助判斷棋塊安危 4 6 8 6 5 12 16 12 5 6 12 24 32 24 12 6 4 8 16 32 32 32 16 8 4 6 12 24 32 24 12 6 5 12 16 12 5 6 8 6 4 勢力影響值
勢力影響值應用實例(1) -5 -6 3 14 17 6 -3 -6 0 -7 -1 8 28 32 11 -8 -6 -5 6 12 44 50 40 8 -22 -22 -8 12 36 48 62 41 -10 -30 -34 -21 18 36 61 51 16 -34 -65 -53 -24 17 35 42 32 -8 -59 -72 -56 -27 16 34 34 24 -18 -54 -68 -46 -20 12 24 30 16 -17 -38 -44 -24 -11 5 12 16 7 -7 -22 -20 -11 0
勢力影響值應用實例(2) 0 6 8 6 0 0 0 0 0 5 16 16 8 5 0 -4 0 0 18 36 28 12 10 0 -8 -6 0 34 45 28 17 1 -3 -16 -12 -5 37 49 35 1 -13 -29 -41 -30 -12 40 47 20 -4-21 -45 -50 -42 -21 48 5448 14-14 -30 -60 -44 -20 42 61 44 25 17 -19 -30 -34 -21 31 43 45 31 17 -5 -29 -30 -12
棋串設定方法 • 使用圖形連通的DFS演算法 • 對每個棋串記錄其子數、棋子位置、氣數、氣點位置、相鄰敵方棋串等資訊
棋鏈的種類 • 尖(黑▲) • 扳(白) • 跳(黑◎) • 飛(白□)
棋塊『連通』的條件 • 同色棋子 • 同色棋鏈空點 • 強勢點 • 敵方死子
棋塊的地域認定 • 邊界點:棋塊最外層的棋子或空點, • 潛力點:由邊界空點向內推一層,代表可能成為地域的點, • 地域點:棋塊內部空點或敵方死子,可視為確定地
棋塊安危認定原則 • 初步認定: • 棋塊的地域點是否足夠 • 棋塊是否被包圍 • 棋塊的潛力點個數多寡 • 詳細認定: • 靜態死活分析 • 周圍有無敵方的危險或死亡棋塊
專家棋士下棋的思路 • 敏銳的棋塊安危感覺 • 直接進攻、聲東擊西、纏繞攻擊、製造雙擊 • 設法安定、拓寬出路、以攻代守 • 熟練的棋形要點反應 • 精簡深入的細算思考
靜態死活分析 • 目的:採取完全不用search的方式,直接從棋塊之地域點作眼位分析,來判斷棋塊死活。 • 所需資訊:棋塊的地域點個數、位置、各點真假眼形態、有無敵方死子、有無中心位置等。 • 所需技術:專業的圍棋知識、細膩精確的分析歸納能力、不斷的反覆測試
著手選擇系統 • 著手選擇模組: • 棋塊死活 • 棋塊攻防 • 連結分斷 • 棋串吃逃 • 地域搶佔 • 以預估目數出入作為著手分數 • 目前分支度:8
審局函數判斷因素 • 棋塊確定地域目數 • 周圍可能成地之潛力 • 棋塊安危程度及範圍大小 • 危險棋串之有無 • 棋塊中的缺陷棋形
全局搜尋基本架構 • Game Tree structure • Minimax search & α-β pruning • Depth:6 • Width:8 • other skills
棋形的觀念 棋形樣式(Pattern) 應用實例