loading
cover

研究電腦如何下棋、解謎題和進行對局是資訊科學中研究人工智慧的重要一支。電腦對局的研究課題多元且具挑戰性,又因入門的條件較低、成效評定方式明確,故吸引許多人投入研究。本書有系統地蒐集並整理相關文獻,歸納電腦對局之精華要義,有助於入門者學習參考,奠定基礎。

本書綜覽電腦對局研究,並特別注重演算法層次的引導式理解及討論,也描述演算法實作時所需的系統知識和技巧,兼顧理論和實際。

研究電腦對局,終極目標不只是希望電腦在對局上能贏人類,而是在達成這目的的過程中,深入了解相關知識及應用。因此,與其說研究者在鑽研如何讓電腦「變聰明」,不如說透過演算法,研究者激發腦力,從而開創新的科學和技術發展,便利人類的生活。


本書特色

1. 國內外第一本專門介紹電腦對局程式設計理論和實作的專書。
2. 囊括古今中外相關軼事、筆記和研究,包羅萬象,蒐集齊全。
3. 超過60個演算法,詳細說明單人對局及雙人對局之細節。
4. 超過120張說明圖示,舉實例闡述困難的觀念。

徐讚昇(Tsan-sheng Hsu)

中央研究院資訊科學研究所研究員
國立臺灣大學資訊工程學系兼任教授
主要研究領域為演算法、圖論、資訊隱私及保護、資料密集運算和電腦對局理論及實作


許舜欽(Shun-Chin Hsu)

國立臺灣大學資訊工程學系退休教授
長榮大學資訊管理學系教授(2002-2017)
台灣電腦對局學會理事長(2010-)
主要研究領域為電腦對局理論及實作


陳志昌(Jr-Chang Chen)

中原大學應用數學系副教授


蔣益庭(Yi-Ting Chiang)

國立臺灣大學資訊工程學系博士


陳柏年(Bo-Nian Chen)

中央研究院資訊科學研究所博士後研究員(2012-2014)
財團法人資訊工業策進會智慧網通系統研究所專案經理


劉雲青(Yun-Ching Liu)

日本東京大學工學院博士


張紘睿(Hung-Jui Chang)

國立臺灣大學資訊工程學系博士候選人


蔡數真(Sue-Chen Tsai)

中央研究院資訊科學研究所研究助理


林庭羽(Ting-Yu Lin)

中央研究院資訊科學研究所研究助理


范綱宇(Gang-Yu Fan)

中央研究院資訊科學研究所研究助理
序一
序二


第1章 電腦對局研究概論

1.1 前言
1.2 智慧
1.2.1 Turing測試
1.2.2 延伸思考
1.3 歷史
1.3.1 18世紀的第一個西洋棋機器人
1.3.2 西洋棋殘局自動機
1.3.3 東方的相關研究
1.4 學術研究
1.4.1 早期(1970年之前)
1.4.2 初期(1970~1980年)
1.4.3 中期(1980~1990年)
1.4.4 近期(1990年至今)
1.5 對局遊戲
1.5.1 對局分類
1.5.2 複雜度
1.5.3 研究新領域
1.6 結語和本書結構
1.7 練習題

第2章 單人對局之基礎搜尋演算法

2.1 前言
2.1.1 概述
2.1.2 本章常用名詞和定義
2.2 暴力搜尋
2.2.1 廣度優先搜尋
2.2.2 廣度優先搜尋之改良:利用硬碟儲存佇列
2.2.3 深度優先搜尋
2.2.4 深度優先搜尋之改良:運用兩個堆疊
2.2.5 深度優先搜尋之改良:限制搜尋的深度
2.2.6 深度優先搜尋之改良:逐層加深
2.2.7 深度優先搜尋之改良:深度限制及方向選擇
2.2.8 雙向搜尋
2.3 啟發式搜尋
2.3.1 A*搜尋
2.3.2 考量總花費門檻值之深度優先搜尋
2.3.3 如何擇出良好著手
2.3.4 逐層加深之深度優先及A*演算法的結合
2.3.5 IDA*之應用
2.4 結語
2.5 練習題

第3章 單人對局之進階搜尋演算法

3.1 前言
3.2 (n2-1)-puzzle問題
3.3 15-puzzle之狀態空間
3.3.1 基本性質
3.3.2 盤面奇偶性不因移動改變
3.3.3 延伸思考
3.4 15-puzzle之解法
3.5 樣式資料庫
3.5.1 邊緣
3.5.2 改良邊緣數
3.6 24-puzzle之解法
3.7 其他啟發式函數之設計
3.8 結語
3.9 練習題

第4章 雙人對局概論

4.1 前言
4.2 本章常用名詞和定義
4.3 1990年對局程式棋力估測
4.4 雙人對局分類
4.4.1 收斂型對局
4.4.2 發散型對局
4.4.3 連接型對局
4.5 10或11路六貫棋
4.5.1 基本性質
4.5.2 策略盜用論點
4.5.3 延伸思考
4.6 其他相關議題
4.6.1 對局複雜度
4.6.2 先手優勢
4.6.3 2000年對局程式棋力估測
4.7 結語
4.8 練習題

第5章 由西洋棋論雙人對局程式之設計

5.1 前言
5.1.1 西洋棋棋規及相關知識
5.1.2 西洋棋之對局複雜度
5.2 審局函數
5.2.1 完美審局函數
5.2.2 近似審局函數
5.2.3 審局函數之設計
5.3 基於審局函數之搜尋策略
5.3.1 A型策略
5.3.2 B型策略
5.4 對弈、棋風及策略之變化
5.5 結語
5.6 練習題

第6章 Alpha-Beta切捨演算法與分析

6.1 前言
6.1.1 位置與搜尋樹
6.1.2 樹節點編號法
6.2 最小最大化搜尋演算法
6.3 正反最大演算法
6.4 Alpha-Beta切捨演算法
6.4.1 改進的契機
6.4.2 Alpha剪枝
6.4.3 Beta剪枝
6.4.4 深層Alpha-Beta切捨
6.4.5 Alpha-Beta切捨演算法的實作
6.4.6 搜尋順序與切捨之關係
6.5 效能分析
6.5.1 最佳可預期之狀況
6.5.2 節點分類與節點間之關係
6.5.3 最佳可預期狀況之效率分析
6.5.4 平均狀況之效率分析
6.5.5 完美排序與最佳排序
6.6 Alpha-Beta搜尋的變形
6.6.1 硬式失敗版
6.6.2 軟式失敗版
6.6.3 演算法F2與F3的比較
6.7 結語
6.8 練習題

第7章 斥候與正反斥候

7.1 前言
7.2 斥候演算法
7.2.1 基本概念
7.2.2 如何TEST
7.2.3 斥候演算法之結構
7.3 斥候演算法的效能分析
7.3.1 TEST成功與失敗對搜尋節點數的影響
7.3.2 TEST演算法拜訪之節點數
7.3.3 完美排序樹中斥候演算法所拜訪之節點數
7.3.4 與Alpha-Beta切捨演算法之比較
7.3.5 斥候演算法之效能分析
7.4 斥候演算法之實作
7.4.1 回顧Alpha-Beta切捨搜尋演算法
7.4.2 正反斥候演算法:最小最大版
7.4.3 正反斥候演算法
7.4.4 延伸思考
7.5 結語
7.6 練習題

第8章 同形表和其他的改進方法

8.1 前言
8.2 同形表
8.2.1 同形表之更新規則
8.2.2 加入同形表之正反斥候演算法
8.3 Zobrist雜湊函數
8.3.1 理論基礎
8.3.2 雜湊函數之設計
8.3.3 錯誤叢集
8.3.4 使用時之參數設定
8.4 動態調整搜尋區間大小
8.5 著手排序之改進
8.5.1 知識捷思法
8.5.2 利用歷史資訊找出好的著手次序
8.5.3 主要變化路徑
8.5.4 否議表
8.5.5 殺手捷思法
8.5.6 歷史捷思法
8.6 實驗數據
8.7 動態調整搜尋深度
8.7.1 虛手切捨
8.7.2 較晚考慮著手之搜尋裁減
8.8 動態搜尋延伸
8.8.1 動態深度延伸
8.8.2 寧靜搜尋
8.9 結語
8.10 練習題

第9章 蒙地卡羅樹搜尋演算法

9.1 前言
9.2 簡易圍棋規則
9.3 最初的演算法:MCSpure
9.4 MCSpure之首要問題
9.4.1 K臂吃角子老虎問題
9.4.2 信賴上界
9.4.3 以標準差修正信賴上界值
9.5 MCSpure的第二個問題
9.5.1 優先樹擴展
9.5.2 蒙地卡羅最小最大化樹搜尋
9.6 信賴上界的樹搜尋
9.7 程式實作時之技巧
9.8 結語
9.9 練習題

第10章 蒙地卡羅搜尋演算法的改進

10.1 前言
10.2 線上知識
10.2.1 漸進式剪枝
10.2.2 手順不羈法
10.2.3 模擬數值快速估計法
10.2.4 節點展開策略
10.2.5 模擬退火法
10.2.6 固定深度全展開
10.2.7 各種方法的整合
10.3 離線學習
10.3.1 MM法與模擬平衡法
10.3.2 擴展階段:類神經網路與深度學習
10.4 結語
10.5 練習題

第11章 平行化對局樹搜尋

11.1 前言
11.2 平行化之評估
11.2.1 Amdahl定律
11.2.2 超線性加速
11.3 共有記憶體之使用與管理
11.4 平行化Alpha-Beta切捨設計
11.4.1 主變化分割
11.4.2 弟節點等候
11.4.3 動態樹分割
11.5 平行化蒙地卡羅樹搜尋設計法
11.5.1 葉節點平行化
11.5.2 根節點平行化
11.5.3 整體同步之樹平行法
11.5.4 局部同步之樹平行法
11.5.5 延伸思考
11.6 結語
11.7 練習題

第12章 開局和殘局知識庫

12.1 前言
12.2 開局庫
12.2.1 開局庫之需求
12.2.2 開局庫製作
12.2.3 開局庫之建構方式
12.3 中局使用之布局
12.4 建構大型殘局庫
12.5 只使用主記憶體之回溯分析演算法
12.5.1 反覆前向檢查
12.5.2 分層反向傳遞與前向檢查
12.5.3 反向傳遞與未知子節點計數法
12.5.4 分層反向傳遞與未知子節點計數法
12.6 使用主記憶體和磁碟之回溯分析演算法
12.7 結語
12.8 練習題

第13章 進階研究課題

13.1 前言
13.2 圖形歷史交互作用
13.3 對手模型
13.4 隨機行為節點搜尋
13.5 證明數搜尋
13.5.1 二元值對局樹
13.5.2 證明數與反證數
13.5.3 多元值對局樹
13.5.4 延伸思考
13.6 結語
13.7 練習題

第14章 對局系統實作考量

14.1 前言
14.2 對局程式系統之研製
14.2.1 資源使用技巧
14.2.2 對局系統之製作
14.3 實戰驗證分析
14.4 結語
14.5 練習題

參考文獻
中文索引
英文索引

其他人也在看