第二章、 相關文獻及基礎理論
2.3 盤面資訊(P OSITION V ALUE )
在一般殘局庫中,有三種型態的盤面資訊是最常使用的,不同型 態的盤面資訊各有其優缺點,以下介紹三種不同型態的盤面資訊 [1]。第 2.3.1 節介紹勝-敗-和盤面資訊,第 2.3.2 節介紹 DTM 盤面 資訊,第 2.3.3 節介紹 DTC 盤面資訊。另外,這裡介紹的盤面資訊會 忽略象棋的 50 回合規則(50-move-rule)(象棋的雙方在 50 回合裡都 無吃子則判為和棋)。
2.3.1 勝-敗-和(Win-Loss-Draw)
象棋的每個盤面最終會是三種結果之一:必勝、必敗或必和。在 此定義這三種盤面:
1. 必勝盤面表示先走方最少有一種方法能吃到對手的王、強迫 對手走到無任何合法步的盤面或強迫對手違反棋規。
2. 必敗盤面表示先走方的所有合法棋步都會走到對方必勝盤面 或無合法棋步的盤面(如圖 2-4(b))。
3. 必和盤面表示先走方能避免對手走到必勝盤面,反之亦然。
最簡單的盤面資訊就是只記錄盤面結果,因此每個盤面只可能有 勝/敗/和三種狀態(Win/Loss/Draw States),所以每個盤面最多只需 用 2 bits 的空間,但是這樣的資訊太少,並不足以找出最佳棋步。
圖 2-7 只有勝敗和的盤面狀態例子
11
2.3.2 DTM(Distance-To-Mate)
為了找出最佳棋步,就必須增加盤面資訊,通常會使用「DTM」:
對於必勝盤面,代表最少需多少棋步能贏;對於必敗盤面,代表最多 能用多少棋步抵抗對手走到贏。因為此種紀錄資訊會造成盤面資訊的 值剛好比最佳棋步走到的子盤面的值多 1,所以用 DTM 找出盤面的最 佳棋步的方法就是搜尋所有子盤面,並找出比此盤面的值少 1 的子盤 面。
在此使用奇數棋步表示必勝(至少為 1),偶數棋步表示必敗(至 少為 2),0 這個特殊值代表和棋。由於增加了盤面資訊,每個盤面所 需儲存空間也增加了,為了區別不同的 DTM 值,每個盤面最少需 bits(「最大棋步」(Maximum Number of Plies)為 同一象棋殘局庫中所有盤面的最大 DTM 值),例如最大棋步為 117 時 則每個盤面至少需 7bits( ),有時為了方便電腦處理,通常 會以 byte 為單位,最大棋步為 255 以下時使用 1byte 來紀錄,超過 255 時會使用 2bytes 來紀錄。
圖 2-8(a) 使用 DTM 紀錄的盤面狀態例子
圖 2-8(b) 使用 DTM 紀錄的最佳棋步路徑例子
12
2.3.3 DTC(Distance-To-Conversion)
但是 DTM 值有時會隨象棋殘局庫子力增多時而增加,因為子力增 多時,盤面通常愈複雜,因而使最大棋步增加。所以有時會改用「DTC」
來紀錄盤面資訊:對於必勝盤面,代表最少需多少棋步能贏或藉由吃 子而贏;對於必敗盤面,代表最多能用多少棋步抵抗對手走到贏或藉 由吃子而贏。目的是盡量減少最大棋步,也就能減少使用空間。
圖 2-9(a) 使用 DTC 紀錄的盤面狀態例子
圖 2-9(b) 使用 DTC 紀錄的最佳棋步路徑例子
因為一個盤面在走到目標的路徑上有可能需要吃子,當路徑上有 吃子步時使用 DTC 紀錄的值就會變小,以圖 2-10 為例,使用 DTC 時,
盤面資訊所需空間由 bits 降至 bits;
有時為了方便電腦處理,以 byte 為單位處理時,可能從 2bytes 降至 1byte。
13
圖 2-10 使用 DTM 與使用 DTC 的差別
只是使用 DTC 有個潛在問題是必勝盤面可能比使用 DTM 更慢贏,
以圖 2-11 為例,雖然卒二平三(5 步,DTM=5)比卒二平一(9 步,DTM=9) 更快贏,但 DTC 會優先選擇卒二平一(DTC=1)吃掉傌,但不影響盤面 最終的結果。另外,象棋的 50 回合規則對 DTC 的影響不大,因為雖 然贏的慢但吃子後無吃子回合數會重新計算。
圖 2-11 吃子後更慢贏的盤面(黑先走)例子
14
圖 2-12 吃子後更慢贏的距離差異比較圖