alpha-beta-pruning

    1熱度

    1回答

    我仍然在學習Scala,並決定實施一個黑白棋遊戲。我使用Alpha Beta修剪,基於這個algorithm來實現AI組件。 但是我意識到我的執行效率不高。如果我將算法的最大深度增加到5以上,我會開始注意性能問題。我意識到搜索空間是指數級的,所以我希望能夠幫助我指出優化此代碼的方法。 下面是如何實現的算法: trait MaxMin case class Max() extends MaxMin

    3熱度

    1回答

    我對PLINQ有一些奇怪的結果,我似乎無法解釋。我一直在嘗試對Alpha Beta樹進行並行化搜索以加速搜索過程,但是它正在有效地減緩搜索速度。我期望提高並行度,我會每秒線性地增加節點數......並且在修剪被推出之前處理額外的節點。當節點數量相匹配的期望,我的時間不: 非PLINQ,參觀 節點:61418, 運行時間:0:00.67 並行度:1,參觀 節點:61418, 運行時:0:01.48

    6熱度

    2回答

    我想開發一個簡單的國際象棋引擎,但我正在努力與它的表現。我已經實施了alpha-beta修剪和迭代深化(沒有任何額外的啓發式)的Negamax,但我無法獲得超過第3-4層的合理搜索時間。下面是我的程序日誌摘錄從遊戲的開頭: 2013-05-11 18:22:06,835 [9] INFO CoevolutionaryChess.Engine.MoveSearchers.NegamaxMoveSea

    2熱度

    2回答

    我一直在尋找一個叫公爵夫人http://www.cse.unsw.edu.au/~blair/duchess/rules.html 我考慮α+β修剪遊戲算法/方法,但我不知道它適用於兩個以上玩家的遊戲。

    0熱度

    2回答

    我正在嘗試瞭解人工智能以及如何在程序中實現它。開始的最簡單的地方可能是簡單的遊戲(在這種情況下是Tic-Tac-Toe)和遊戲搜索樹(遞歸調用;不是實際的數據結構)。 I found this關於該主題的演講非常有用的視頻。 我遇到的問題是,算法的第一個調用需要非常長的時間(約15秒)才能執行。我在整個代碼中放置了調試日誌輸出,看起來好像它正在調用算法的部分過多的時間。 下面是選擇最佳的移動計算機

    1熱度

    2回答

    我必須創建一個AI,它必須與其他AI進行競爭。 兩個AI都將在相同的硬件上運行,具有相同數量的處理時間和內存。我知道對手AI將使用alpha beta修剪的minimax算法。 現在我的問題是 - 有什麼辦法打這樣的對手?如果我自己使用minimax - 那麼AI就完全預測對方的動作,並根據遊戲的固有屬性(首先移動勝利等)來解決遊戲。 明顯的解決方案是以某種方式進一步提前考慮可能的更好的評估方法

    5熱度

    2回答

    我必須做一個項目,我們需要實現mancala棋盤遊戲,然後還爲它實現AI。 我們已指示,我們需要修改或改變極小樹能夠與寶石棋工作,因爲在遊戲中,可以爲玩家已經連續多圈。 我已經實現了我的遊戲邏輯和GUI不已,但現在我才與AI開始我想嘗試,並獲得其背後的理論有所瞭解。我在網上搜索了基於非回合的迷你最大樹,我似乎找不到任何東西。但是我看到很多人在談論使用超級極小馬卡拉。 現在我明白了正常的極小樹,以及

    0熱度

    1回答

    我想開發一個國際象棋程序。它會定期對一棵樹進行強力搜索,唯一不同的是評估。最初,我將使用Claude Shannon設計的標準評估器,以便更容易測試它是否能在基礎上正常工作。移動列表生成和所有其他基地周圍工作正常。 現在進行搜索:我想使用wikipedia的alpha/beta修剪代碼示例。 這就是一個問題:關於一件事情是模棱兩可的;從誰的角度來看評估應該完成?我一直在Google上搜索幾天(字面

    3熱度

    2回答

    我明白殺手啓發式背後的想法以及爲什麼它有幫助。我正在努力的是如何在Alpha-Beta搜索例程中實現它。特別是如何確保只有兄弟節點的殺手動作首先被試用?僞代碼將非常有幫助。

    2熱度

    1回答

    我已經實現了alpha迭代加深的搜索,我已經閱讀了幾種技術,通過搜索先前深度搜索出現的最佳移動來進一步優化算法。 據我所知,我可以在動態長度列表中存儲上一次深度搜索的主要變化嗎?例如,假設我已搜索到深度爲4的PV:[1,0,2,3]表示在深度1處選擇移動數字1,在深度2處選擇移動數字0,在深度3處選擇移動數字2等...,然後進行深度5搜索,該算法將首先從該先前深度PV搜索節點的孩子。 這就是你所說