• 沒有找到結果。

第二章、 研究背景

2.1. 電腦對局應用問題

本章節將針對目前實驗室應用在桌機格網上的數獨、三角殺棋、六子棋,此 三種電腦對局應用問題進行規則、想解決的問題、以及平行化計算的特性做介 紹。

2.1.1 數獨應用問題

數獨(sudoku)[16]來自於日文,是由 18 世紀瑞士數學家歐拉所發明,其規則 為在每個行列和 3*3 的方塊內填入數字 1 到 9,且每個數字不可重複,即算解掉 該盤面,而對於一個合法盤面來說,只會產生一個終盤,具有唯一解的特性,在 初盤中會預先填入若干數字,其他空格則留白,玩家可依照初盤中的數字分布狀 況,邏輯推敲出剩下的空格裡是什麼數字而在初盤的盤面上掀開的數字,我們稱 之為提示數,圖表 1 即為簡易的數獨初盤,圖中的綠框為列、紅框為行。黃框為 3*3 的小方塊。

5

圖表 1 數獨行列方塊說明圖

在目前,我們找到最小提示數的初盤為 17,但尚無證明是否存在提示數為 16 的初盤,因此我們希望經由尋找 5,472,730,538 個終盤中,是否存在一個提示 數為 16 的初盤而證明最小提示數為 16 或 17,若將該問題放在單一電腦運算,

約需花費 2417 年的時間。因此我們希望可以透過桌機格網的技術協助解決該問 題,而因 5,472,730,538 個終盤皆為獨立的盤面,因此在計算時,每個盤面可平 行獨立運算,如此假設我們有 2500 台電腦,我們則可在一年內解決該問題[19]。

2.1.2 三角殺棋應用問題

三角殺棋起源自中國,因當時的人們利用小石頭的堆砌而發展出的一套遊戲,

規則上,若以 5 層的三角殺棋為例為玩家輪流取子,每次取的子必頇在一條線上,

最多可取 5 顆子,取到最後一顆子的人贏或輸,圖表 2 將以取到最後一顆子的人 輸為舉例。

圖表 2 三角殺棋玩法舉例

6

在面對全解九層三角殺棋的問題時[20],第一個關心的議題是: 此九層三角 殺棋是必勝還是必敗,第二個關心的是:若必勝, 則怎麼勝?若必敗, 則對方怎 麼勝?因此我們針對這方面的問題,希望能將九層三角殺棋不論規則是拿到最後 一顆子的人輸或是贏,其全滿盤面結果都”全解”出來,而在此同時也將只要是九 層三角殺棋以內所有盤面的必勝必敗結果都算出來

因九層三角殺棋有 45 顆子,若要將全部盤面的必勝必敗結果皆存下來,會 有 2 的 45 次方種組合,必頇耗費 4 Tera 的記憶體,是相當可觀的數字。而面對 這樣的問題時,我們採取先將 4 Tera 切為每個 512MB 大小的區塊,並利用一種 稱為回朔分析法的演算法,將所有盤面的勝敗結果皆算出,圖表 3 將以八層的三 角殺棋為例,說明不同區塊之間勝敗結果更新的關係圖,其相依性的關係是由交 大吳毅成教授研發團隊 2010 年所提出的演算法所決定。

圖表 3 三角殺棋區塊結果更新關係圖[20]

由圖表 3 可知總共有 49 個連結,若為九層的三角殺棋,則可高達 48 萬條連 結,其區塊間的結果傳輸量相當大。

7

2.1.3 六子棋應用問題

該遊戲由交通大學吳毅成教授所發明,並於 2005 年 9 月發表於第十一屆國 際電腦賽局發展研討會,現已成為國際奧林匹亞電腦賽局競賽項目。遊戲的特性 為:規則簡單、變化複雜、遊戲公平。在規則上,一開始先由黑方下一顆子,之 後黑白雙方輪流下兩顆子,先將六顆子連成一條線的人贏。圖表 4 為一個簡單的 六子棋範例。

圖表 4 六子棋規則圖示(此例子為黑勝)

因六子棋在 2005 年才被提出,是個很新的遊戲,目前缺乏開局庫。面對這 樣的問題,於是交大吳毅成教授研發團隊發展了一套建構在六子棋編輯器上的六 子棋驗證系統希望能利用程式來幫忙大量的建構開局庫,而所使用的演算法為一 種稱之為 Job-Level Proof Number Search (JL-PNS)的 PNS 演算法。但該演算法具 有高度動態優先權的特性。如圖表 5 的例子,上頭標明的勝敗皆以黑的角度來看,

若黑是必敗,白方必會選擇走這步,其餘分支即可不必計算,若黑方找出必勝路 徑,則只要走這步即可,其餘分支也可不必計算。

8

圖表 5 JL-PNS 簡單說明圖

而為了盡快將這棵遊戲樹的結果證明出來,具有低延遲需求的特性,如此也 可節省建構開局庫的時間。

相關文件