首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我正在尝试实现一个minimax算法来创建一个tic-tac-toe机器人,但是我得到了一个递归错误

递归错误通常是由于递归函数没有正确的终止条件或者递归调用的参数没有正确更新导致的。在实现minimax算法来创建一个tic-tac-toe机器人时,递归错误可能出现在评估游戏状态和选择最佳移动的过程中。

首先,确保你的递归函数有正确的终止条件。在tic-tac-toe游戏中,终止条件可以是游戏结束(胜利、平局或者无法继续下棋)。当游戏结束时,递归函数应该返回当前游戏状态的评分。

其次,确保递归调用时传递的参数正确更新。在minimax算法中,你需要交替地模拟玩家和机器人的移动,并评估每个可能的移动的得分。在递归调用时,你应该更新游戏状态,以便模拟下一个玩家的移动。

以下是一个示例的minimax算法实现来创建一个tic-tac-toe机器人的伪代码:

代码语言:txt
复制
# 评估游戏状态的得分
def evaluate(game_state):
    # 实现评估函数,根据游戏状态返回一个得分

# 递归实现minimax算法
def minimax(game_state, depth, maximizing_player):
    if 游戏结束:
        return 评估游戏状态的得分

    if maximizing_player:
        best_score = -无穷大
        for 每个可能的移动:
            更新游戏状态
            score = minimax(更新后的游戏状态, depth + 1, False)
            恢复游戏状态
            best_score = max(best_score, score)
        return best_score
    else:
        best_score = 无穷大
        for 每个可能的移动:
            更新游戏状态
            score = minimax(更新后的游戏状态, depth + 1, True)
            恢复游戏状态
            best_score = min(best_score, score)
        return best_score

# 在当前游戏状态下选择最佳移动
def get_best_move(game_state):
    best_score = -无穷大
    best_move = None
    for 每个可能的移动:
        更新游戏状态
        score = minimax(更新后的游戏状态, 0, False)
        恢复游戏状态
        if score > best_score:
            best_score = score
            best_move = 当前移动
    return best_move

这是一个基本的minimax算法实现,你可以根据具体的编程语言和游戏实现进行适当的调整。在这个示例中,你需要实现评估函数来评估游戏状态的得分,并根据得分选择最佳移动。

关于腾讯云相关产品和产品介绍链接地址,可以根据具体需求选择适合的产品,例如:

  • 云服务器(ECS):提供可扩展的计算能力,用于部署和运行应用程序。
  • 云数据库MySQL版(CDB):提供高性能、可靠的关系型数据库服务。
  • 云函数(SCF):无服务器计算服务,用于按需运行代码。
  • 人工智能机器学习平台(AI Lab):提供丰富的人工智能开发工具和服务。
  • 云存储(COS):提供安全、可靠的对象存储服务。

你可以访问腾讯云官方网站获取更详细的产品信息和文档链接。

相关搜索:我正在尝试为一个健康条创建一个while循环,但是我得到了一个除法错误我正在尝试做一个生活游戏的oop变体,但是我遇到了一个错误,代码如下。我正在尝试执行一个命令来显示discord机器人在多少台服务器上,但是我得到了错误消息"message is not defined“我正在构建一个Slack机器人,但得到了一个错误我创建了一个新的对象类型,但是我得到了一个错误"has no resolver“我正在尝试在Ubuntu 16.04中安装nginx,但是我得到了一个关于区域设置的错误我正在尝试为我正在开发的应用程序制作GUI,但是当我尝试打印一个全局变量时,我得到了一个错误。为什么?我正在尝试创建一个自动安装机器人我正在尝试在Reddit上做一个机器人,但是python给了我一个很长的错误我试图创建一个显示ms的!ping命令,但是我得到了这个错误我正在尝试使用back tick来调用包含我的id和key的函数。但是我得到了一个错误作为意外的标记我正在尝试创建一个react应用程序,但是它给出了这个错误我正在尝试在findAll中包含一个多关联,但我得到了一个错误我正在创建一个自动取款机程序,但是我遇到了有关pin验证的问题我正在尝试使用google Forms API。但是有一个引用错误我正在尝试使用Keras实现一个神经网络。我的错误如下所示:我正在尝试添加一个复选框,但是我得到了无效的钩子调用错误,我如何解决这个问题?我正在尝试创建一个公式来从案例尺寸计算单位尺寸基本上,我正在尝试编写一个python-sql连接器程序,但是现在我遇到了这个错误我正在尝试做一个函数(按钮)来上传图片到我的数据库中的CodeIgniter (PHP)。但是我得到了一个错误
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

手把手教你搭建国际象棋AI机器人

王新民 编译 量子位 报道 | 公众号 QbitAI 在编程之前,我们先了解一些基本的概念,来帮助我们创建一个简单的象棋AI机器人:移动生成、棋局评估、最大最小搜索和α-β剪枝搜索过程这四个概念。...作者Lauri Hartikka提到:“我已经无法战胜我创造出来的象棋机器人。我觉得导致这个结果的原因不是因为我下棋技术太烂,就是算法已经足够优秀。”...实现这一点的最简单的方法是使用下表来计算棋局中的相对强度。 ? 通过这个评估表,我们可以创建一个算法,能够让棋子选择具有最高评估分数的移动方向。 ?...在该算法中,能将递归树的所有可能移动探索到给定深度,并且在递归树的子节点处评估该位置的好坏。 之后,我们将子节点的最小值或最大值返回给父节点,父节点通过下步将移动白棋还是黑棋来选择合适值。...结论 对于一个简单的象棋机器人,它的优点是不会产生愚蠢的错误操作。但是它仍然缺乏对象棋的战略性理解。 通过上面介绍的方法,我们能够创建一个象棋机器人,可以和你一起玩象棋。

2.3K60

技能 | 只要五步,教你撸一个缩减版国际象棋AI

首先,我们来看一些基础概念: 移动生成 棋面评估 Minimax算法 alpha beta剪枝 在每个步骤中,我们将通过一个国际象棋程序技术来改进算法。我将演示每个步骤是如何影响算法的。...,但是个不错的陪练。...通过简单的评估函数,上图黑子已经能进行对弈了,体验地址: https://jsfiddle.net/lhartikk/m5q6fgtb/1/ 步骤3:使用 Minimax 搜索树 通过Minimax算法我们创建了一个简单的搜索树...在该算法中,可将递归树的所有可能移动探索到特定的深度,并在递归树的子节点处对位置进行评估。...通过文中方法,我们已经编写了一个能进行简单对战的国际象棋程序算法。算法中涉及AI的部分仅有200行代码,可以实现象棋中的一些基本概念。你可以在GitHub上查看最终的版本。

1.7K70
  • 对称、群论与魔术(八)——魔术《tic tac toe》中的数学奇迹

    今天我们来继续研究tic-tac-toe这个游戏。 Tic-tac-toe的博弈树分析 当时还剩下最后一个问题,那就是,我们的策略一定能够得到平局结果吗?...总之,要保证必胜策略,得每一层往下对手可选路径内,都一直存在着必胜策略,直到到达叶子的胜局节点。而先手如果想赢,就只能期待对手会在第2步犯没有占角的错误,否则,只能是平局,下不好还有可能输。...但是,占中是一个直觉上有先手优势的人必选的策略,讲不清道理,但是直觉上它能占据最多的优势,这里我就不详细分析不占中的下法了,那样情况较多,而且看起来都是一些很傻的下法,虽然符合规则,但繁琐一点也很容易分析清楚...如果这里的议题是去研究先手和后手的必胜下法是否存在和怎么下的话,用到的数学理论则是纳什均衡以及逆向的状态固定倒推的思路,算法描述为min-max算法,这里不再展开,有机会我再单独写文章分享。...因此我们就可以尝试着结合机器人技术来让机器完成这个表演了。下面这个视频是一个demo,其实并没有完全成型,不过也算是一个机器人变魔术的小成就吧!

    1.2K40

    极大极小值算法应用于五子棋

    原文链接 Minimax for Gomoku (Connect Five) -- 作者 Ofek Gila 回顾 不知道你是否还记得上一篇文章,我们使用深度优先搜索算法来解决井字棋游戏,递归所有可能的分支...我知道这很难形象化,所以我们再次使用井字棋来类比: 你应该为 X 计算下面集合: 水平 一个 X,且只有一个开端 两个 X,但是没有开端 垂直 两个 X,且只有一个开端 一个 X,且只有一个开端 对角线...这就要解释 Minimax 这个名字,当你尝试最大化你的分数时,你的对手正在尝试最小化你的分数 -- 在对手所有最小的回应中,你选择最大值,也就是最适合你的一个位置,然后下该位置的子。...你会注意到此算法和上一篇文章中的深度优先算法很类似。 你可以使用这种极大极小值算法来构建一个相当合理的 AI,但是还有很多需要改进的地方。我们在后面的文章再讲。...你可以尝试玩下我自己的 Gomoku AI。 本文正在参加「金石计划 . 瓜分6万现金大奖」

    52920

    小白用Python | 用Python破解斗地主残局

    直接上一张朋友圈看到的残局图: 这道题我刚看到时,曾尝试用手工来破解,每次都以为找到了农民的必胜策略时,最后都发现其实农民跑不掉。...minimax 代码的核心思想是minimax。minimax可以拆解为两部分,mini和max,分别是最小和最大的意思。 直观的理解是什么呢?就有点像A、B两个人下棋。...如果对方上一手选择过牌,或者没有上一手牌,那么我这一轮必须不能过牌,但是我可以出任意的牌 如果对手上一手出了牌,则我必须要出一个比它更大的牌或者选择这一轮直接过牌(不出牌) 关键点来了,在出完我的牌或选择过牌后...,我们需要用一个递归调用来模拟对手下一步的行为。...首先,我们要用数字来表示牌的大小,这里我们用3表示3,11来表示J,12表示Q,依次类推…… 其次,我们需要求出一个手牌的所有出牌组合,这里需要get_all_hands函数,具体实现比较繁琐但是很简单

    1.8K80

    隔三岔五聊算法之极小极大算法

    具体介绍 Minimax算法又名极小化极大算法,是一种找出失败的最大可能性中的最小值的算法。Minimax算法常用于棋类等由两方较量的游戏和程序,这类程序由两个游戏者轮流,每次执行一个步骤。...Minimax也不例外,它通过对以当前格局为根的格局树搜索来确定下一步的选择。而一切格局树搜索算法的核心都是对每个格局价值的评价。...说白了,这个算法就是一个树形结构的递归算法,每个节点的孩子和父节点都是对方玩家,所有的节点被分为极大值节点和极小值节点。...“或者有一方已经确定胜利获失败 图解算法: 假设我们有如下图的游戏,我是先手,我应该如何利用Minmax算法来选出第一步怎么走呢?...当选择多的时候,就需要采取剪枝算法(Alpha-Beta)来减少运算量。

    1.8K10

    五子棋AI进阶:极大极小值搜索

    前言 上篇文章,介绍了一下五子棋 AI 的入门实现,学完之后能用,就是 AI 还太年轻,只能思考一步棋。 本文将介绍一种提高 AI 思考能力的算法:极大极小值算法。...Minimax算法 又名极小化极大算法,是一种找出失败的最大可能性中的最小值的算法(即最小化对手的最大得益)。通常以递归形式来实现。 Minimax算法常用于棋类等由两方较量的游戏和程序。...—— 百度百科 极大极小值搜索算法 算法实现原理 对于五子棋游戏来说,如果 AI 执黑子先下,那么第一步 AI 共有 225 种落子方式,AI 落子到一个点后,表示 AI 回合结束,换到对手(白子)...代码实现 我们接着上次的代码来,在 ZhiZhangAIService 类中定义一个全局变量 bestPoint 用于存放 AI 当前最佳下棋点位,再定义一个全局变量 attack 用于设置 AI 的进攻能力...方法,编写 极大极小值搜索 算法的实现代码。

    1.3K20

    用Python破解 斗地主残局 ,对王,然后3带2!

    这道题我刚看到时,曾尝试用手工来破解,每次都以为找到了农民的必胜策略时,最后都发现其实农民跑不掉。由于手工破解无法穷尽所有可能性,所以这道题究竟农民有没有妙手跑掉呢,只能通过代码来帮助我们运算了。...本文将简要讲述怎么通过代码来求解此类问题,在最后会公布残局的最后结果 minimax 代码的核心思想是minimax。minimax可以拆解为两部分,mini和max,分别是最小和最大的意思。...如果对方上一手选择过牌,或者没有上一手牌,那么我这一轮必须不能过牌,但是我可以出任意的牌 如果对手上一手出了牌,则我必须要出一个比它更大的牌或者选择这一轮直接过牌(不出牌) 关键点来了,在出完我的牌或选择过牌后...,我们需要用一个递归调用来模拟对手下一步的行为。...首先,我们要用数字来表示牌的大小,这里我们用3表示3,11来表示J,12表示Q,依次类推…… 其次,我们需要求出一个手牌的所有出牌组合,这里需要get_all_hands函数,具体实现比较繁琐但是很简单

    1.3K50

    人工智能各种技术与算法

    ,原翻译显然没有”寻路“这两个字,因为A星算法包括但不仅限于存在于人工智能的寻路中,但是既然标题是人工智能,这样也无伤大雅,在说A*之前有必要说所深度优先搜索算法DFS和广度优先搜索算法BFS,假设一个...,这个障碍堵塞了路,机器人就会不断使用寻路算法尝试,显然,这是没有效果的,因为没有正确的道路,想想如果是你你会怎么做,你会跳过去,是的,这就是一个神经网络的实现,你早就经历过这种事情,现在你需要做的就是运用之前的经验来解决这个...要想智能,没有这种经验的学习都是纸上谈兵(当然前提是你得置入跳的动作代码),当机器人用A*尝试5次都失败的情况下它就会改变策略,调整脚部神经元阀值,当调节为1,发现跳不过,就调节为8,如此在一定的区间内随机直到成功...,它吸取群体的智慧于一生,结合神经网络实现了更高层次的智能,遗传算法模拟培养第一代基因,神经网络进行尝试,然后进行优胜劣汰,如此递归,当到了一个很高的层次都无法解决问题的时候他就会考虑基因重组,也就是杂交...,因为他认为第一代的优秀基因本身就是错误的方向,只是错误的方向上的优秀基因,因此他选择其他方向的基因用神经网络尝试,遗传算法优胜劣汰 未完..

    1.3K30

    赫尔辛基大学AI基础教程:搜索和游戏(2.3节)

    在井字棋中,这意味着其中一个玩家可以获得三点一线并获胜,或者棋盘已满并且比赛以平局结束。 最小化值和最大化值 为了能够创建想去赢得游戏的AI,我们给每个可能的最终结果添加一个数值。...有时候,也会有不管选择哪一个结果都一样的选择。 Minimax算法 我们可以利用上述游戏价值的概念来理解Minimax算法。它在理论上保证了任何确定性的、双人的、完全信息的零和博弈的最佳游戏玩法。...如上所述,Minimax算法可用于在任何确定性的、双人的、完全信息的零和博弈中实现最佳游戏玩法。...如果我们只能探索游戏树的一小部分,我们需要一种方法来在到达终端节点(比如,游戏结束并且胜利者已知的节点)之前停止minimax递归。...上面提出的minimax算法需要最小的变化来获得深度受限的版本,在给定深度受限法的所有节点上返回启发式搜索:深度时指的是在应用启发式评估函数之前游戏树被展开的步数。 练习7:Max为何悲观?

    81730

    【深度】浅述:从 Minimax 到 AlphaZero,完全信息博弈之路(1)

    Minimax 算法 (来源:wikipedia) 第 4 层是结果。 然后我们使用回溯的思想,反向推导。假如到了第3层,这是对手走棋,对手会怎么走?对手一定会走使得最后结果最小的那步对吧?...幸运的是,你被允许事先尝试这些摇臂机,但是由于受到时间和精力的限制,你只能尝试一个有限的次数。...这实际上就是下棋的情景:你希望走胜率最高的那步,并且你有有限的时间来尝试不同下法(被称为 Exploration,探索),来决定最终使用哪个走法。...但是这个问题有一些麻烦之处: 如果我们把太多的选择放到一个一开始回报很大的选项上,因为尝试次数有限,我们很有可能受到统计涨落的影响,错失一个我们碰巧没有选中或者碰巧头几回价值低但是期望价值很高的选项。...这让我想到了李飞飞的得意门生,现任特斯拉人工智能规划师 Andrej Karpathy 在 Medium 上发的“软件 2.0”这篇blog。 ?

    2.5K70

    游戏人工智能 读书笔记 (二) 游戏人工智能简史

    在最早的时候,图灵和香农就尝试使用Minimax 算法来让AI下棋,强化学习+自我对弈也很快被Arthur Samuel应用到跳棋(Checker)中(1959年)。...Douglas 开发了第一个 井字棋(Tic-Tac-Toe)游戏 1992年,基于神经网络和temporal difference来进行自我对弈训练的西洋双陆棋(又称 十五子棋)的AI "TD-Gammon...但是在多人博弈的问题上,例如麻将,多人德州,并没有这样的一个纳什均衡,因此目前还没有比较好的算法。去年的时候,Libratus之父Prof....而他们也关注的领域也会窄一些,大部分的精力都投入到:游戏中的NPC要怎么用算法控制中去,但也有一些使用程序生成内容的尝试。...但是,游戏开发者会担心这样会让这些NPC不按设计那样工作,于是很可能会”破坏整个游戏”。这个其实在聊天机器人上面就出现过教训。几乎所有的没有强规则约束的聊天机器人都被网友们玩坏了。

    60730

    游戏人工智能 读书笔记 (二) 游戏人工智能简史

    在最早的时候,图灵和香农就尝试使用Minimax 算法来让AI下棋,强化学习+自我对弈也很快被Arthur Samuel应用到跳棋(Checker)中(1959年)。...Douglas 开发了第一个 井字棋(Tic-Tac-Toe)游戏 1992年,基于神经网络和temporal difference来进行自我对弈训练的西洋双陆棋(又称 十五子棋)的AI "TD-Gammon...但是在多人博弈的问题上,例如麻将,多人德州,并没有这样的一个纳什均衡,因此目前还没有比较好的算法。去年的时候,Libratus之父Prof....而他们也关注的领域也会窄一些,大部分的精力都投入到:游戏中的NPC要怎么用算法控制中去,但也有一些使用程序生成内容的尝试。...但是,游戏开发者会担心这样会让这些NPC不按设计那样工作,于是很可能会”破坏整个游戏”。这个其实在聊天机器人上面就出现过教训。几乎所有的没有强规则约束的聊天机器人都被网友们玩坏了。

    82850

    国产AI编年史,你不应该只知道DeepSeek

    我第一次听到这个词是在初中,当时在学习博弈论的相关知识,极小化极大算法(Minimax Algorithm)是零和博弈的经典决策算法,核心思想是"最小化对手造成的最大损失"。...用 MiniMax 这么一个词作为公司名,我觉得在创意上,能和字节跳动(ByteDance)并列第一。...:以「架构创新」突破 Transformer 范式,其线性注意力机制首次实现应用级长文本处理,通过开发者社区和开放平台赋能全球技术创新者,这一技术被海外开发者称为"东方技术哲学的最佳实践"; Qwen:...以及,"做一个看上去像 o1 的东西没那么难,我们不需要这样的新闻稿" 这样的观点: 这里其实也提到了「蒸馏若干 o1 数据可以得到(至少在 benchmark 上)和 o1 性能接近的模型」是业界共识...当然,如果你想图省事,也可以在来海螺 AI 的官方入口 https://hailuoai.com/ 体验,除了常规的问答以外,还有「文生视频」和「文字转语音」功能,都是免费的,而且响应速度和效果都不错,

    3600

    游戏人工智能 读书笔记 (二) 游戏人工智能简史

    在最早的时候,图灵和香农就尝试使用Minimax 算法来让AI下棋,强化学习+自我对弈也很快被Arthur Samuel应用到跳棋(Checker)中(1959年)。...Douglas 开发了第一个 井字棋(Tic-Tac-Toe)游戏 1992年,基于神经网络和temporal difference来进行自我对弈训练的西洋双陆棋(又称 十五子棋)的AI "TD-Gammon...但是在多人博弈的问题上,例如麻将,多人德州,并没有这样的一个纳什均衡,因此目前还没有比较好的算法。去年的时候,Libratus之父Prof....而他们也关注的领域也会窄一些,大部分的精力都投入到:游戏中的NPC要怎么用算法控制中去,但也有一些使用程序生成内容的尝试。...但是,游戏开发者会担心这样会让这些NPC不按设计那样工作,于是很可能会”破坏整个游戏”。这个其实在聊天机器人上面就出现过教训。几乎所有的没有强规则约束的聊天机器人都被网友们玩坏了。

    33210

    游戏人工智能 读书笔记 (二) 游戏人工智能简史

    在最早的时候,图灵和香农就尝试使用Minimax 算法来让AI下棋,强化学习+自我对弈也很快被Arthur Samuel应用到跳棋(Checker)中(1959年)。...Douglas 开发了第一个 井字棋(Tic-Tac-Toe)游戏 1992年,基于神经网络和temporal difference来进行自我对弈训练的西洋双陆棋(又称 十五子棋)的AI "TD-Gammon...但是在多人博弈的问题上,例如麻将,多人德州,并没有这样的一个纳什均衡,因此目前还没有比较好的算法。去年的时候,Libratus之父Prof....而他们也关注的领域也会窄一些,大部分的精力都投入到:游戏中的NPC要怎么用算法控制中去,但也有一些使用程序生成内容的尝试。...但是,游戏开发者会担心这样会让这些NPC不按设计那样工作,于是很可能会”破坏整个游戏”。这个其实在聊天机器人上面就出现过教训。几乎所有的没有强规则约束的聊天机器人都被网友们玩坏了。

    93452

    ROS2机器人笔记20-09-06

    使它们非常受欢迎的方面之一是,您可以应用现有的计算机视觉算法,以便从该数据中提取信息。 本教程的上一个屏幕截图中所见,我们使用了接触传感器和深度摄像头来模拟这种行为。...它当前通过一个主题输出表面法线,可以使用该主题来推断信息,例如最佳抓握,要触摸的对象的哪一部分,甚至可以尝试猜测传感器正在触摸的内容!...另外,已经以面向用户的平面正方形的形式创建了新材料。这已在Ogre1中实现,并且Ogre2实现正在进行中。该材料用于表示点。用户可以使用API​​为每个点设置独立的颜色。...结论和未来计划 在GSoC的学习过程中,我能够实现大部分目标,并且开发了一些常用的显示插件,但是还有一些重要的东西(如PointCloud和Costmap)尚不可用。...除了增加对默认插件的支持之外,我还计划开发一些插件,例如机器人伸缩,绘图和原始主题数据显示。 ign-rviz将在不久的将来以二进制形式下载。直到您好奇的时候,您可以通过从源代码构建它来进行尝试。

    1.2K20

    英伟达的Rev Lebaredian表示,合成数据可以使AI系统变得更好

    但事实是,对于我们将在未来创建的大多数人工智能,我们目前收集的数据都没有那么有用。 当我们为 [the Conference] SIGGRAPH 2017 做演示时,我注意到了这一点。...我们还对机器人进行了一些专业化。但是,如果我们不支持你的领域,因为它是一个工具包,你仍然可以使用它做你喜欢的事情。人们有许多途径可以引入自己的 3D 数据或获取数据来构建虚拟世界。...如果我们正在训练一个网络来识别人们的面部表情,但我们只在高加索男性上训练它,那么我们就会过度拟合高加索男性,当你给它更多不同的主题时,它就会失败。但是,使用合成数据,我们更容易创建数据的多样性。...如果我正在生成人类的图像并且我有一个合成数据生成器,它允许我改变人们的面部配置、他们的肤色、眼睛颜色、发型和所有这些东西。...它要求您拥有像 Omniverse 这样出色的模拟器,并且需要一个物理上准确的模拟器,这样它才能与现实世界匹配得足够好。如果我们创建一个合成数据生成器来制作看起来像卡通的图像,那还不够好。

    53540

    Python手写强化学习Q-learning算法玩井字棋

    首先,我们将通过一些必要的背景知识来快速了解强化学习,然后我们将介绍 Q-learning 算法,最后我们将介绍如何通过它来使得一个代理学会玩 tic-tac-toe。...但是需要注意的是,对于 tic-tac-toe 游戏,我们确切地知道每个动作会做什么,所以我们不会使用转移函数。 ?...通常选择 γ=0.9 Q-learning 算法实现 为了得到一个经过充分训练的代理,我们需要获得 Q(s,a) 的值,这将通过让两个代理互相比赛来完成。...在用上述算法训练代理之后,可以保存 Q(s,a) 并在想要进行比赛时加载它。然后,代理只需遵循最优策略,选择使 Q(s,a) 最大化的动作来赢得比赛。...虽然由于 tic-tac-toe 游戏并不复杂,代理并没有获得高级智能,但是尝试这个方法可以学习如何实现 Q-learning 并了解它是如何工作的。

    1.9K20

    笨办法学 Python · 续 练习 19:改善性能

    你还可以使用这个预先计算的计数,通过检查count == 0来改进其他功能的逻辑。 使用错误的数据结构。在字典中,我使用DoubleLinkedList来演示这个问题。...这是一个练习,使用现有代码从更简单的数据结构中构建数据结构,因此不一定是实现最好的 Python Dictionary(它已经有一个了)的练习。 对数据结构使用错误的算法。...但是,如果你的分析显示,你需要执行很少的插入,但是很多的访问,这是个加速的不错方式。 手写代码,而不是使用现有的代码。我们正在做练习来学习数据结构,但在现实世界中,你不会这样做。...另一个例子是 OpenSSL 项目,它几十年来一直存在 bug,因为每个人都相信“专业密码学家”创建了代码。原来,即使是所谓的专业密码学家也可以写出糟糕的代码。...只要你掌握实现技能,实现其他人已经证明的算法完全正常,运行良好。但是不要在没有一些帮助的情况下制作自己的头发数据结构。实施其他人已经证明的算法完全正常,运行良好,只要你掌握实施技能。

    55530
    领券