• 沒有找到結果。

第二章 相關文獻及基礎理論

N/A
N/A
Protected

Academic year: 2021

Share "第二章 相關文獻及基礎理論"

Copied!
6
0
0

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

全文

(1)

第二章 相關文獻及基礎理論

第一節 Min-Max 搜尋演算法

下棋之決策過程都可以視為一顆決策樹,透過樹狀搜尋尋找對雙方都可以滿

意的下法。而這個算法稱為“最小-最大搜索”(Min-max Search)。最先由 John von

Neumann 完整描述[14]:

1. 假設能對棋局評分,來評估我方和敵手的勝負或者是和棋。正分代

表我方優勢,負分代表對方優勢,零分代表雙方持平。

2. 我方的任務是盡量提昇棋局的分數。

3. 敵方的任務是盡量減少棋局的分數。

4. 假設雙方都選擇最有利的著法。

假設有一簡單的遊戲如圖一:

圖一 一個簡單的遊戲樹

那麼在這遊戲中,雖然我方如果走著法 A 最高評分有 12 分,但敵方必然

不會選擇著法 C 而選擇對他最有利的著法 D,使得評分變為-2 分。所以,在這

(2)

著法則為 E,達到雙方都比較滿意的局面。

第二節 Alpha-Beta 搜尋演算法

Min-Max 搜尋演算法常伴隨著搜尋層數加深,而出現搜尋節點指數暴漲的

情形,以象棋來說,一般中局盤面平均有 35 種走法,如果搜尋 8 層大約要搜尋

150 萬個節點,搜尋 9 層大約要搜尋 5000 萬個節點。這樣的搜尋數量實在太大,

幸好 Alpha-beta 搜尋法的出現,在不犧牲精確度的情況下,還能大量減少搜尋節

點數。

Alpha-beta 搜尋法[5]精神在於修剪去除不影響雙方作最佳決策的分支,透過 搜尋所得到的結果限制下邊界 Alpha 及上邊界 Beta 的範圍,如果其後的搜尋發

現某些子樹並不會影響到搜尋結果,也就是不落在 Alpha 與 Beta 的區間內,那

我們便將其切捨(cut off)。如圖二,我們只要搜尋到 A21 就可以知道 A22 和 A23

其分數不論是多少,都不會影響到雙方的最佳決策。

圖二 alpha-beta 搜尋

(3)

第三節 NegaScout 搜尋演算法

上述的 Alpha-Beta 演算法中,上邊界 Beta 及下邊界 Alpha 所圍成的範圍,

我們稱之為一個搜尋窗口,如果搜尋的窗口越小,其發生剪裁的機會越大,搜尋

速度也就越快,此外走法的排序也影響到剪裁的機率,也就是說如果我們能夠優

先搜尋到好的走法,就越能剪裁掉後面不好的走法。所以 NegaScout 搜尋演算法

[11]就針對這兩個影響 Alpha-Beta 搜尋剪裁的重要因素進行改良,其假設,第一

個搜尋的走法通常都是最好的走法,所以第一個展開的子節點使用正常的

(alpha,beta)窗口展開,其餘子節點使用(beta-1,beta)的窗口展開,因為不可能有分

數介於 beta-1 與 beta 之間,所以此窗口又稱為零窗口,這個作法的巧妙之處在

於,當我們只要搜尋完第一個我們認為最好的走法,接下來的零窗口加速搜尋,

雖然無法得到正確的分數,但我們只要知道其分數是大於等於 beta,則我們就可

以將其剪裁,但若零窗口搜尋後的分數不是大於等於 beta,則代表我們的假設錯

誤,必須重新以(alpha,beta)窗口展開,以得到正確的分數。

第四節 疊代加深搜尋(iterative deepening)

好的走法排序可以增加 Alpha-beta 搜尋法的切捨,那如果我們正要搜尋第 D

層,最理想的走法排序當然可以事後用第 D 層搜尋後的結果得知,但在搜尋之

前,拿 D-1 層搜尋後的最佳走法排序來代替,是不是也是不錯的選擇呢?疊代加

深搜尋[7]使得這想法變為可能。

(4)

由於在固定時間內,我們無法得知可以搜尋多深,而疊代加深法每次搜尋完

一層如果還有足夠的剩餘時間,便會往下加深搜尋一層,直到時間用盡,且淺一

層的搜尋結果排列得到的走法順序,可以在深一層搜尋時使用,如此可以產生比

較大量的切捨,比單純使用 Alpha-beta 搜尋法迅速很多,且同形表的利用,使得

重複搜尋淺層的部分幾乎不費任何力氣。

第五節 寧靜搜尋(quiescence search)

如果搜尋時間用盡,在最後一層發生兌子的情形,我們常常會誤以為吃子方 佔優,但事實常不是如此。譬如說我方搜尋八層之後時間用盡,我方在第八層用

車吃兵,則我們認為局勢稍稍佔優,但隨後對手第九層應法可能是馬吃車,造成

我方局勢大不利,這都是我方對於兌子盤面看得不夠深造成的,我們稱之為水平

效應(horizontal effect)。

為了解決這問題,有人提出寧靜搜尋法(quiescence search)[4],針對兌子盤面

和解將盤面作出延伸搜尋。把盤面延伸直到平靜沒有吃子或叫將的平靜盤面才停

止往下搜尋,好讓我們能比較正確地評估盤面分數。

第六節 向前切捨法(forward pruning)

為了加速搜尋速度,因而出現了向前切捨法(Forward Pruning),其精神

在於使用一些方法判定某些較無益的分支,然後將其切捨來提高搜尋速度,

(5)

但這些方法如: 剃刀切捨(Razoring)和無益切捨(Futility Pruning)[10],常伴隨

著很大的風險,直到 1989 年 Beal 提出一個更有效的方法,那就是空步搜尋

(Null move)[3]。

第七節 空步搜尋(null move)

現在頂尖的象棋軟體幾乎都使用空步搜尋來加速,空步搜尋法錯誤! 找不到

參照來源。的前提在於假設多走了一步棋會比不走棋有更高的分數,所以當輪自

己走步時,自己不動子,相當於允許對方連走兩步做淺層搜尋,如果這樣還無法

使情況變成讓對方更為有利,便不用再多花時間搜尋。

雖然空步搜尋法所承擔的風險較小,但仍受水平效應與將軍盤面影響,所以

只有在搜尋深度夠深且非處在將軍盤面時使用較為安全。還有一種情形會造成空

步搜尋誤判,就是違背前提:也就是走子後評估值比走子前還低。這樣的情況被

稱為被迫走步盤面,多發生於殘局時,因此在殘局大多不使用空步搜尋。

第八節 適應性空步剪裁(adaptive null move)

Ernst Heinz 在 1999 提出一種作法[9],依據不同的搜尋深度決定空步剪裁淺 層搜尋的深度,因為空步剪裁淺層搜尋時,有個淺層搜尋因子 R 決定其淺層搜

尋深度;若原本搜尋深度為 D,則空步淺層搜尋深度則為 D-R-1,R 值越大空步

搜尋時越快,不過伴隨的水平效應也就越大;根據西洋棋大量測試結果發現 R=2

(6)

時,空步搜尋有較好的效果,但 R=3 時增快的搜尋速度又是如此吸引人,所以

仍有不少人冒險使用 R=3。Ernst Heinz 嘗試在深度小於等於 6 時,使用 R=2 的

空步剪裁,在深度大於 8 時,使用 R=3 的空步剪裁,在深度等於 7 或 8 時,且

擁有棋子個數大於等於 3 個,則使用 R=3,否則使用 R=2;而這樣的嘗試根據

Ernst Heinz 實驗後也得到不錯的效果。

第九節 帶驗證的空步剪裁

而後 Tabibi 在 2002 年提出更好的策略改進空步剪裁[13],不但使得搜尋節 點更少,且更重要的是在被迫走步的盤面還能使用空步搜尋,使得棋力也有不少

提升。

其作法在於,使用淺層搜尋因子 R=3,以增加空步剪裁搜尋速度,但如果搜

尋結果為大於等於 beta,則我們再做比原本搜尋深度少一的驗證搜尋一次,看是

否能採信之前淺層搜尋的結果。如果不能採信,則仍必須作完整搜尋。整體來看,

雖然驗證是額外的時間負擔,但其省下的搜尋節點數,還有提升空步剪裁的正確

性來看,都彌補了這些額外的時間花費。

參考文獻

相關文件

Write three nuclear equations to represent the nuclear decay sequence that begins with the alpha decay of U-235 followed by a beta decay of the daughter nuclide and then another

單一菜色與地區搜尋 ( 兩種二選一 ) 交叉搜尋 (4 種可同時 )/QR 碼搜尋.

「光滑的」邊界 C。現考慮相鄰的 兩個多邊形的線積分,由於共用邊 的方向是相反的,所以相鄰兩個多

楊過離開後,黃蓉關注女兒,四下搜尋郭襄形 影。只見郭襄眼眶泛紅,轉身快步向家中方向

(香港會計準則第2條 ‐ 存貨) 邊際成本計算法

媒體可以說是內容、資訊最大的生產者,但受制於 國際社交媒體及搜尋平台的經營手法,本地主流媒 體在發展網上業務時,面對不公平的競爭。 這些

一說到網路搜尋,我們就會想到 G oogle ,但其 實搜尋引擎不是 G oogle 發明的,早在 G oogle 出現 之前就已經有搜尋引擎的應用。那麼, G oogle

A digital color image which contains guide-tile and non-guide-tile areas is used as the input of the proposed system.. In RGB model, color images are very sensitive