首页 文章
  • 12 votes
     answers
     views

    Minimax的Alpha-beta修剪

    我花了一整天的时间试图在没有真正了解它的情况下实现minimax . 现在,我想我理解minimax是如何工作的,但不是alpha-beta修剪 . 这是我对minimax的理解: 生成所有可能移动的列表,直到深度限制 . 评估底部每个节点的游戏区域有多优惠 . 对于每个节点(从底部开始),如果图层为最大,则该节点的得分是其子节点的最高得分 . 如果图层是min,则该节点的得分是其子项...
  • 4 votes
     answers
     views

    Minimax算法解释

    我正在寻找Minimax算法的伪代码: Function Minimax-Decision(state) returns an action ;inputs: state (current game state) ;'E' means element of, 'a' is the action return a E Actions(state) maximizing Min-Value...
  • 3 votes
     answers
     views

    minimax算法中的min玩家是否发挥最佳效果?

    在minimax算法中,第一个玩家最佳地玩,这意味着它想要最大化其得分,第二个玩家试图最小化第一个玩家的获胜机会 . 这是否意味着第二位玩家也能以最佳方式赢得比赛?试图选择一些路径以最小化第一个玩家的获胜机会也意味着试图获胜? 我实际上是试图从TopCoder解决这个任务:EllysCandyGame . 我想知道我们是否可以在这里应用minimax算法 . 那句话"both to pl...
  • 1 votes
     answers
     views

    游戏中的Minimax算法

    我试图使用minimax算法创建我的第一个游戏,但我不知道如何使用树实现这一点 . 游戏规则如下: 在 table 上有M个立方体(例如40个),每个玩家必须从表1或L立方体中获取(L在程序中定义,例如L = 5) . 获胜者是从表中获取最后一个立方体的玩家 . 首先播放的播放器是MAX(电脑),第二播放MIN(人) . 首先,我们必须运行minimax算法,然后播放器MAX播放最...
  • 0 votes
     answers
     views

    在选择的下一个状态下运行Minimax / Expectimax

    如果我为当前状态或开始状态运行minimax / expectimax,并假设根有三个子节点(偶然节点)并运行minimax / expectimax算法 . 假设,它找到最佳终端节点,然后获得根的最佳子节点 . 这意味着它将选择导致具有最佳效用的终端状态的特定移动 . 我们称之为从根到终端状态的路径,路径P. 并且我们假设相反的玩家也按照expectimax / minimax树的预测进行移动并...
  • 1 votes
     answers
     views

    使用Minimax算法的NIM游戏和AI玩家 - AI会失去动作

    我已经完成了与人类玩家和AI玩家一起编写NIM游戏的任务 . 该游戏是“Misere”(最后一个必须选择一根棒) . 人工智能应该是使用Minimax算法,但它正在进行移动,使其失去更快,我无法弄清楚为什么 . 我已经连续几天走到了尽头 . Minimax算法的目的是不输,如果它处于失败状态,延迟失去尽可能多的动作,对吧? 考虑以下: NIMBoard board =新的NIMBoard(34,...
  • 0 votes
     answers
     views

    Minimax算法澄清

    对不起,这可能是一个糟糕的问题,我正在尝试实现minimax算法,而我对如何创建'得分'感到困惑 . 我是否需要从一个状态一直到一个胜利状态,或者只是一个层,或者根本不需要制作一个包含各种可能组合的树? EX . X 0 _ #1 0 0 _ #2 X X _ #3 各州会是 (X1),(X2),(X3) 还是 (X2,01,X3),(X1,02,X3),(X3),(X2,03,X1) ?对于得...
  • 1 votes
     answers
     views

    无法接近Mancala自由移动到Minimax Node

    我正在编写Minimax算法,用于在python中播放Mancala . 我对代码没有问题,但使用算法 .在Mancala你可以获得自由移动,我不知道如何为该游戏状态创建Node . 对于极小极大,假设min在max之后移动,反之亦然,但是当max获得自由移动时,max进行两次连续移动 .我不知道如何实现这一点,因为当max获得自由移动时,你必须在不同的可能性之间再次选择最大值 . 有人能帮帮我吗...
  • 1 votes
     answers
     views

    C#Tic Tac Toe Minimax算法

    我正在使用Minimax算法在WPF C#中制作Tic Tac Toe游戏 . 我认为我的算法工作正常,但我无法理解我应该怎样做才能从调用函数Minimax获得下一个状态 . 现在它只返回最终状态 . 算法的代码如下: Move MiniMax(char[,] state, bool playerMAX, int depth) { if (depth == 0 || Cou...
  • 1 votes
     answers
     views

    Connect4 minimax算法做出了愚蠢的动作

    我正在尝试实现一种算法,它将为Connect 4的游戏选择最佳的下一步 . 我只是想确保基本的 minimax 正常工作,我实际上是在4x4字段上测试它就像一个Connect 3 . 这样,当算法做出愚蠢的举动时,我就更加明显了 . 问题是算法 always 以最左边的移动开始游戏,并且在游戏中它也会看到最好的移动 . 我已经彻底测试了方法 makeMove() , undoMove() , ge...
  • 17 votes
     answers
     views

    Java Minimax Alpha-Beta修剪递归返回

    我正在尝试使用alpha-beta修剪为Java中的跳棋游戏实现minimax . 我的minimax算法运行得很好 . 我的代码运行时使用了alpha-beta代码 . 不幸的是,当我使用标准的极小极大算法玩1000场比赛时,alpha-beta算法总是落后50场左右 . 由于alpha-beta修剪不应该降低移动的质量,只需要实现它们所需的时间,因此必定是错误的 . 但是,我已经拿出笔和纸并绘...
  • -1 votes
     answers
     views

    Minimax / alphabeta算法与重复播放器

    我想知道当玩家(最小或最大)可以连续多次玩时,是否有正确的方法来使用这些算法 . 例如在像UNO(澳门)这样的游戏中: --------------------- root5 --------------- / ---------------- \ ------- MAX6 ------------------- MAXA ----- / --------- \ -----------------...
  • 4 votes
     answers
     views

    为什么我的Minimax没有扩展并且正确地进行移动?

    我在Pacman的基本游戏中在Python 2.7.11中实现了minimax . Pacman是最大化剂,并且一个或多个鬼(取决于测试布局)是最小化剂 . 我必须实现minimax,以便可能有最小化代理,以便它可以创建 n plies (深度)的树 . 例如,Ply 1将是每个幽灵轮流最小化其可能移动的终端状态效用,以及pacman轮流最大化鬼魂已经最小化的内容 . 从图形上看,ply 1看起...
  • 0 votes
     answers
     views

    Alpha-beta修剪同一玩家的连续动作

    我已经为Checkers实现了alpha-beta修剪,并认为我有它工作,但发现计算机不会连续多次跳转(必须时) . 例如: AI确实: O _ _ _ _ _ _ _ _ _ _ X _ X _ -> _ _ _ X _ (misses a jump because it only does a single move) _ _ _ _ _ _ _ O _ _...
  • 1 votes
     answers
     views

    带有Alpha Beta Pruning的MiniMax让Othello无法正常工作

    我有一个用于othello(reversi)游戏的alpha beta minimax的以下实现 . 不知何故,这从未真正回归正确的行动 . 它似乎返回我在函数(0,0)中放置的默认操作和辅助值-32768,这意味着它在MAX子例程中被修剪 . 关于我可以通过这些改进以及如何解决这个问题的任何提示? 注意:我已经确定了大部分时间正确返回的后继者 . 现在的最大深度为8.计算机播放器的pn(播放器编...
  • 1 votes
     answers
     views

    将Minimax算法应用于存储为数组的决策树,Python

    我正在尝试创建一个Tic-Tac-Toe游戏,允许用户对抗该程序 . 该程序将使用Minimax算法修剪决策树并输出最佳移动 . 下面我将代码发布到我正在开发Game Ai的类 . 函数“create_tree”返回从根节点开始的所有可能移动的决策树以及状态将发生的深度 . 我试图通过一个应用minimax修剪方法的模块来传递它,以找到应该进行的下一个最佳移动但是它不起作用,因为当我尝试评估游戏状...
  • -1 votes
     answers
     views

    为什么我的极小极大不起作用

    我已经尝试修改我的算法以更好地工作,但我没有取得任何结果 . 我的问题是,在第一次移动后,如果我有,例如: XX. OO. ... 计算机,而不是选择0 2,选择例如1 2,有时尝试去寻找它不能的位置 . 我的代码: #include "game.hpp" pair<int,int> winner; int m = INT_MAX; pair<i...
  • 0 votes
     answers
     views

    Minimax算法中的线程化

    我正在设计一个3D Tic-Tac-Toe游戏,并且找时间限制我的Minimax算法的深度 . 虽然高达6的深度在很大程度上是无关紧要的(<1s),但对于更高的深度,它确实需要时间 . >Depth 7 = 6 seconds >Depth 8 = 49 seconds >Depth 9 = 314 seconds 我没有时间(哈!)检查更高的深度 . 最大深度为22,这...
  • 0 votes
     answers
     views

    Tic-Tac-Toe的Minimax没有返回正确的值

    我正在尝试编写Tic-Tac-Toe游戏并决定使用MiniMax算法,但我在实现它时遇到了麻烦 . 例如:在a board = [ "E", "E", "X", "E", "E", "X", "E",...
  • 2 votes
     answers
     views

    击败极小极大的对手

    我必须创建一个必须与其他AI竞争的AI . 两个AI都将在相同的硬件上运行,具有相同的处理时间和内存 . 我知道对手AI将使用带有alpha beta修剪的minimax算法 . 现在我的问题是 - 打败这样一个对手有哪些方法?如果我自己使用minimax - 那么AI完全预测对方的动作,游戏根据游戏的固有属性(首先获胜等)来解决 . 显而易见的解决方案是以某种方式进一步看到可能的移动,这将允许...
  • 1 votes
     answers
     views

    Minimax alpha-beta修剪深度

    我已经实现了一个连接4 AI,可以在我的课程中参加锦标赛 . 我用alpha-beta修剪实现了深度限制的极小极大值 . 我们被允许给出一个深度作为比赛的参数 . 我的计划将采取行动,然后另一名学生将采取行动,这将一直持续到有赢家为止 . 它也是一个改进的连接4,其中6×7游戏板中的整个42个点被填充,并且每个4-a-row是一个点,并且最多的点获胜 . 我的问题是关于alpha-beta修剪 ....
  • 2 votes
     answers
     views

    用Java实现用于Connect 4的Minimax算法

    我正在尝试使用minimax(和alpha beta修剪)构建Connect 4游戏,主要是为了向自己证明我能做到 . 然而,我遇到的一个重大概念问题是如何实际使用minimax算法 . 我这样做的方法是我有一个AI类,它有一个函数可以执行返回int的minimax算法 . public int minimax(Board board, int depth, int alpha, int beta...
  • 0 votes
     answers
     views

    Minimax vs Alpha Beta修剪算法

    我最近实现了Minimax和Alpha Beta修剪算法,我100%肯定(自动编程器)我正确实现了它们 . 但是当我执行我的程序时,他们的行为却不同 . 我确定minimax和Alpha beta的最终状态应该相同 . 我对吗?他们在实现结果的道路上有所不同吗?因为我们忽略了一些值,所以min将选择哪个不会被max选择,反之亦然 .
  • 0 votes
     answers
     views

    如何使用Alpha Beta选择节点

    我正在使用带有Alpha Beta修剪的MiniMax为奥赛罗游戏实现AI . 我已经实现了一个Alpha Beta算法,告诉我我可以获得的值,但不是我应该选择哪个节点?所以我的问题是如何使用Alpha-Beta告诉我应该选择哪个节点,而不是结果值 . 这是我的Alpha-Beta算法的伪代码 . 01 function alphabeta(node, depth, α, β, maximizin...
  • 4 votes
     answers
     views

    如何使用alpha beta修剪实现迭代深化

    我正在编写一个程序来播放Dots和Boxes,我希望通过在迭代深化方案中根据他们的启发式值在alphaBeta中考虑我考虑的移动来提高我的时间效率 . 基本上,我想进入搜索树,每次迭代都会增加深度,并使用alphaBeta评估每个节点 . 在每次连续迭代中,我考虑节点的顺序将由来自前一次迭代的节点的启发式值决定 . 但是,我无法理解如何实现这一点 . 有人可以为标准alphaBeta程序如何使用迭...
  • 0 votes
     answers
     views

    在Minimax路径寻找解决方案中找到路径和最大权重边缘?

    我目前正在编程分配:给定一个大的加权未连接图(1 <V <2000,0 <E <100 000) . 找到沿“最小加权路径”从“源”到“目标”的最大加权边 . 到目前为止我所拥有的是将图存储在AdjacencyList中(IntegerPair的Vector of Vector,其中第一个整数是邻居,第二个是边的权重) . 我还使用Prim算法获得了最小生成树: priva...
  • 1 votes
     answers
     views

    游戏AI遗传算法中的适应度函数

    我使用Alpha-Beta Pruning创建了一个Gomoku(连续5个)AI . 它使得行动在一个不那么愚蠢的水平上 . 首先,让我模糊地描述Alpha-Beta算法的分级功能 . 当它收到一块板作为输入时,它首先找到所有重复的石头,并根据其作为威胁的有用性给出4个可能值的分数,这取决于长度 . 它将返回所有重复分数的总和 . 但是,问题在于我明确地决定了分数(总共4个),并且它们似乎不是最好...

热门问题