【问题标题】:is this pseudocode for tic tac toe is correct?这个井字游戏的伪代码是否正确?
【发布时间】:2014-01-20 16:20:34
【问题描述】:

我是 AI 新手,我正在尝试使用 minimax 算法实现井字游戏,但在开始之前,我想检查一下我对实现的理解:

首先在移动的每一步根据我的网格的当前状态创建决策树,在决策树完成后,我将应用 minmax 来标记树,然后根据该标记进行选择,然后再次找到最佳下一步从头开始为所选移动制作决策树,并再次应用 minmax 并选择最佳移动。 这是我设计的伪代码:

move(current state)
{
  tree=make_decision-tree(current state);
  maxminalg(tree);
  choose the best move according to the returned max or min from the tree
  foreach (choice in choosen state)
    move(choice)        
}
make_decision-tree(current state)
{
    ....
}
maxminAlg(decisiontree t)
{
   return max or min
}

我的问题是我设计的这个程序是否正确(因为如果它正确,那么我可以开始编写代码),如果不是,您的建议是什么?

【问题讨论】:

  • 适合学习正确的 AI 概念,但对于只有大约 20,000 种可能游戏状态的游戏,您可能不需要极小极大 :-)
  • 只是为了确保我的理解,当我为每一个新动作制定决策树时是否合理?

标签: artificial-intelligence decision-tree


【解决方案1】:

minimax 变得如此复杂,如此之快。

这篇文章确实为这个话题提供了很多启示:Simple tic-tac-toe AI

【讨论】:

  • 只是为了确保我的理解,当我为每一个新动作制定决策树时是否合理?
  • 我会说是的,否则你真的会让我每一步“做出决定”吗?
  • 例如,做一次决策树然后在每次新动作中使用它来做决策有什么问题?(虽然我认为在每一步重新创建决策树更合理)
  • 现在你在谈论创建一个单独的抽象决策树函数并调用它吗?这真的更像是一个效率问题,对吧?
  • 取决于语言,在大多数解释语言中通常是这样,但在像 C++ 这样你严格控制范围的地方,它可能一直重新创建它会更有效。此外,如果您的决策树概念非常动态,则无论您是否通过引用调用它,您每次都可能在内存中重新创建它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-15
  • 1970-01-01
  • 2015-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多