2009-11-11 155 views
8

在我的數據結構類中,我們已經分配了一個項目,在該項目中,我們需要製作一個功能齊全的Quantum Tic-Tac-Toe遊戲,其中玩家面對一個玩過贏得。Quantum Tic-Tac-Toe AI

教授建議我們在AI中使用遊戲樹。不過,像往常一樣,我正在尋找更具挑戰性的東西。

任何人都可以提出一個更好,更高級的方法,我可以研究和實施?


我不是在尋找一些讓問題更加複雜的荒謬的東西。相反,我正在尋找一種先進的方法 - 就像使用A *算法而不是BFS。

+0

你想要具有挑戰性,我建議學習Quantum PSO(粒子羣優化器)。 – 2010-03-08 18:13:37

+1

你也可以給一個機會_monte卡羅樹search_ ... – 2011-08-22 11:14:56

回答

13

你渴望學習新事物(甚至是你自己的)是好的。然而複雜的解決方案通常是not the best solution

你的教授建議使用AI的遊戲樹有一個很好的理由。建議這是因爲它是適合工作的正確工具。沒有更好的方法可以研究,因爲這是最好的方法。

你提到你在一個數據結構類(通常是一年級或二年級)。我猜測你的任務的重點是學習樹數據結構。如果你想讓事情變得更復雜,首先編寫樹版本,然後去研究解決同樣問題的其他方法。

+2

+1,因爲現在我有句對自己說'手套' – 2009-11-11 20:50:41

+1

我不想尋找更復雜的解決方案。我正在尋找最佳解決方案。在過去,我的教授提出了「使用BFS解決問題」的建議,但BFS並不是最佳解決方案。相反,A *是。我只是在尋找最好的解決方案。如果一個遊戲樹是最好的解決方案,那就這樣吧。 – dacman 2009-11-11 22:08:05

1

提供一個學習功能,以您的實現,你可以看到模擬器Donald MitchieMENACE(火柴盒可教圈與叉引擎)...

編輯
在尋找到它,這已經完成了很多,例如見CodeProjet
此外,在獲取世界(或Tic-Tac-Toe簡化世界的這裏)的統計模型並基於這樣一個模型的未來行動時,智能是智能的行爲,這可能會被你的教授視爲超出範圍,因爲沒有觸及你的主要概念(知識表示,決策樹...)

+2

這只是使問題更復雜,因爲如果你創建一個學習井字遊戲機,你必須給它的語音合成和能力像WOPR從* WarGames * – Jherico 2009-11-11 19:19:43

+1

談談如何使用GenPro套件創建一個基於遺傳算法的自學TicTacToe遊戲?你不需要手工訓練,只需讓它稍微潰爛一會兒。哦,當然,爲你的遊戲策略和健身功能提供有用的「DNA」編碼,但這應該是可行的 - 並且令人印象深刻。 – 2009-11-11 20:03:59

4

有2部分評估回合制遊戲。

  1. 遊戲樹。
  2. 實用功能。

遊戲樹允許您提前播放動作以查看它們將導致的位置。如果遊戲足夠複雜以至於無法計算所有可能性(http://en.wikipedia.org/wiki/Solved_game),那麼您需要一種確定特定電路板情況如何「良好」的方法。一個糟糕的國際象棋實用功能可能只是計算棋子的價值而忽視位置。

您還需要遍歷遊戲樹的有效方式。閱讀關於Minimax,Alpha-beta修剪,Negascout等。

+0

這些建議是由教授提供的。我想知道是否有超出我能實現的東西。 – dacman 2009-11-11 19:31:57

+1

乾淨的代碼,良好的設計,使用討論的技術。你已經完成了所有這一切,並希望做更多? – z5h 2009-11-11 20:09:54

2

實際上,我在做這個具體問題現在:http://www.rickb.com/quantum-tic-tac-toe

我曾經考慮過做一些更先進的爲好,但我只是堅持了好醇」 Alpha-Beta搜索算法。我的主要問題是提出一個很好的算法來「評分」每個特定的棋盤狀態。 QTTT比標準的tic tac toe要複雜得多,要搜索的狀態數量會呈指數級增長。我在記憶中有完整的標準tic tac toe遊戲樹,我用它來快速查找每個「經典」棋盤狀態的得分,但是我必須以某種方式評分疊加狀態。州的數量非常之大,以至於樹不能太深,所以提早修剪樹的適當評分函數是必須的。

+0

這就是你所需要的。我對AI進入這個項目並沒有什麼瞭解,並且假設我的教授像往常一樣給了我們最簡單的方法。 – dacman 2009-11-27 01:06:03