gpt4 book ai didi

c++ - 井字游戏 AI : How to Make the Tree?

转载 作者:IT老高 更新时间:2023-10-28 22:35:35 26 4
gpt4 key购买 nike

在制作井字游戏机器人时,我在试图理解“树”时遇到了很大的困难。我理解这个概念,但我不知道如何实现它们。

有人可以向我展示一个如何为这种情况生成树的示例吗?还是生成树的好教程?我想困难的部分是生成部分树。我知道如何实现生成一整棵树,但不知道它的一部分。

最佳答案

想象一下,在井字游戏中的任何一点,每一个可能的 Action 都是一个分支。板的当前状态是根。一个 Action 是一个分支。现在假设(一次一个),每个分支都成为当前状态。每个可能的移动都成为一个新的分支。树的叶子是当最后一步完成并且棋盘已满时。

你需要一棵树的原因是,一旦它建成,你需要找出哪个分支有最多的叶子,这是“获胜”的场景。您构建所有可能结果的分支,将获胜的总数相加,然后采取最终有机会获得最多胜利的行动。

让树变成这样:

class Node {
public:
std::list< Node > m_branches;
BoardState m_board;
int m_winCount;
}

std::list< Node > tree;

现在,您遍历树中的分支列表,并为每个分支遍历其分支。这可以通过递归函数来完成:

int recursiveTreeWalk( std::list< Node >& partialTree)
{

for each branch in tree
if node has no branches
calculate win 1/0;
else
recursiveTreeWalk( branch );

partialTree.m_winCount = sum of branch wins;
}

// initial call
recursiveTreeWalk( tree )

非常伪代码。

关于c++ - 井字游戏 AI : How to Make the Tree?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2744334/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com