alpha-beta-pruning

    0熱度

    1回答

    OK,我的問題應該聽起來很熟悉的人誰曾與棋盤遊戲編程出場,所以在這裏它是: 我已經實現了極小的變化算法(返回移動而不是最小/最大值)。 我也嘗試將它設置爲alpha-beta,儘管它最終導致完全失敗。 所以,這裏是我的代碼極小: Move* Board::miniMax(int depth) { return this->maxMove(1, depth); } Move* Bo

    1熱度

    1回答

    我已經拉出我的頭髮試圖找出如何在最小最大算法,並希望α-β剪枝算法的工作。我對發生的遞歸感到困惑。 首先,每個中間板都會得分嗎?或只有終端遊戲板。 其次,究竟返回了什麼?該計劃如何知道下一步行動的位置?我發現即時消息應該返回棋盤得分(tictactoe,-1,0,1),但程序如何知道下一步應該進行哪一步。 我試圖找到一個簡單的C或C++程序來證明這一點,但我沒有多少運氣。我想學習這個算法,我可以爲

    1熱度

    1回答

    我無法理解這種僞我發現α+β修剪維基百科: function alphabeta(node, depth, α, β, Player) if depth = 0 or node is a terminal node return the heuristic value of node if Player = MaxPlayer for each ch

    0熱度

    1回答

    我從維基百科編寫了Alpha-Beta修剪。我正在嘗試寫一個連接四AI。該函數應該返回列號,然後我的主要功能發生了變化。

    2熱度

    1回答

    我正在編寫一個關於alpha-beta prunning的項目。當我在Xcode中運行它,我得到符號引用錯誤: Undefined symbols for architecture x86_64: "Eval(Node*)", referenced from: AlphaBeta(int, int&, int, int, int, Node*) in main.o ld:

    1熱度

    2回答

    我將在我的學校參加一個棋盤遊戲AI競賽,並試圖提出一些想法來獲得優勢併發性。我很可能會處於劣勢,因爲我將在java中實現它,並且我明白c或C++會更快。 看起來好像你不能把遊戲樹分成兩半,因爲移動順序應該先保留最佳移動,看起來很難或甚至不可能傳達當前的alpha/beta在給定的深度。我將要使用換位表以及需要同步的換位表。 除了搜索,是否有第二個線程可以做的事情,這可能有助於搜索或提供某種類型的速

    0熱度

    2回答

    我理解該算法,因爲它適用於Alpha-Beta修剪。我不明白的是,因爲我沒有辦法在Java中代表∞,所以在我第一次調用Minimax方法時,Alpha和Beta應該以什麼值開始? (通常我會認爲你可以讓他們-∞和+∞)。我能想到的唯一的東西是0,但會產生一些不想要的結果嗎?謝謝!

    0熱度

    1回答

    我已經實施了跳棋alpha-beta修剪,並認爲我有它的工作,但發現計算機不需要連續多次跳轉(當它必須)。例如: AI做: O _ _ _ _ _ _ _ _ _ _ X _ X _ -> _ _ _ X _ (misses a jump because it only does a single move) _ _ _ _ _ _ _ O _ _ AI 應該做: O _ _ _

    1熱度

    1回答

    我正在設計一款國際象棋遊戲,並在其後面的AI上實現一個帶有alpha-beta修剪的搜索樹。我在設計遊戲的評估功能時遇到困難。 對於任何類型的遊戲,如何設計評估函數?

    17熱度

    5回答

    我試圖實現與α-β剪枝在Java中的跳棋遊戲極小。我的minimax算法完美運作。我的代碼與alpha-beta代碼一起運行。不幸的是,當我玩標準極小極小算法的1000場比賽時,alpha-beta算法總是落後50場左右。 由於α-β修剪不應該降低動作的質量,就需要實現它們的時候,有些事情是錯誤的。但是,我已經拿出筆和紙,繪製假設的葉節點值,並使用我的算法來預測它是否會計算正確的最佳移動,並且看起