❶ 四子棋的AI演算法求助,懸賞500一分不少
我寫過五子棋程序,也思考過棋類程序的演算法,希望能給樓主參考
雙方對弈棋類演算法,其基本思想就是人工智慧中關於 最小-最大問題 的 alpha-beta 剪枝,樓主可搜索一下,這個隨便一本人工智慧書里都有講。
下面就是具體程序中該如何實現其思想
一般都要先有一個招法生成器,用於給出當前局面下所有可走的行棋可能。對四子棋來說就相當簡單了,只要看一下每一列,只要未滿即可。
然後要有一個局面評估函數,大體評價下雙方局勢的分數。此函數盡量簡單能反映優劣即可,因為後面的 alpha-beta 演算法要大量調用此函數
最後實現 alpha-beta 的演算法,採用迭代加深的廣度優先搜索能有效剪枝。(剪枝效率取決於前面的局面評估函數,如果評估函數能非常准確的估值,那麼將會大大減小搜索范圍,但復雜的評估函數又會增加開銷,這是一個兩難的抉擇)
不過對於四子棋由於非常簡單,樓主也可以嘗試僅用簡單的廣度優先搜索。按每個局面 7 列只有 7 種走法來算,5步深的全搜索也只有 1 萬多種情況。對一般人來說5步深也足夠強了。不滿意的話再考慮上面的正統演算法。
然後是一點小技巧,關於棋盤的存儲和運算,盡量採用位棋盤和位運算來完成,多利用位運算的並行性來提高效率
這里畢竟字數有限,如果還想更深入了解的話推薦來這里看看:http://www.elephantbase.net/computer.htm
一個相當好的棋類演算法網站
雖然是講象棋的,但基本思路都一樣,絕對能學到很多東西。
❷ 有什麼介紹製作棋類游戲AI的書籍值得推薦
棋類游戲AI的范圍還是挺廣的,這里推薦一本講解象棋和五子棋游戲的書籍《PC游戲編程》,這是王小春著作的一本書,裡面講的基本上是中國象棋人機博弈和五子棋人機博弈方面的內容,裡面的演算法結構相當經典,你可以仔細研究研究。
❸ 求五子棋C語言AI演算法(原創思路)
我有個簡單的思路: 先定義一條線上棋子的各種布局,比如初步定義長度為五個子 ◎◎◎◎● ◎◎●◎× ◎●◎×× ◎×◎×◎ 等等。白圈是自己的子,黑圈是對方的子,叉子是未走的格子。 程序里有個布局表,再定義各個布局的分數,比如連五最99分,連三30分等等。 ...