Python使用MINIMAX实现自动吃豆人

news/2024/5/3 7:50:21/文章来源:https://blog.csdn.net/newlw/article/details/126907679

使用MINIMAX实现自动吃豆人

一、实现 MINIMAX

说白了这题就是要实现 MINIMAX,算法的伪代码如下(借用 PPT 的内容):

在这里插入图片描述

图 1 算法伪代码流程 算法的核心在于 MIN 和 MAX 的套娃调用,以及判断退出的条件,这也是我自己在实现的时候遇到的坎。 遇到的问题:

MAX 和 MIN 相互调用的返回值是什么 由于算法本身只是计算每一层树的最佳状态,因此只需要进行值的传递就可以了,但在处理这个问题的时候,由于想着需要在得到最佳值的同时,也要得到最佳的行动 (action),因此我就在每次递归的时候以(value,action)的形式进行值的返回,但这样就导致递归的过程中值会变成这种形式:(((value,action) ,action) ,action),这样就会一来在求 max 和 min 的时候出现值比较的问题,二来在扒开括号的时候也会出现问题,因此在思考这种数据结构的时候想了很长时间。后来发现伪代码中还有 MINIMAX-DECISION 这个函数是专门处理我的这个疑惑的,也就是只在最外面一层返回 action,在下面别的层只需要返回值就可以了。

递归深度

在这里插入图片描述

在运行测试的时候发现自己递归的深度并没有达到预期深度,因此在这上面也花费了一些时间来思索。

空节点的情况

当吃豆人四周都被包围住的时候,那么能够走得 action 列表就是空,因此需要对这种情况进行特殊处理,即直接

返回该状态的值。 图 2 递归深度不够

二、结果展示

在这里插入图片描述

图 3 运行 python autograder.py -q q2 --no-graphics 的结果展示

最终吃豆人还是死了 hhh,不过和同学交流后发现都死了,并且得到的分数都是 84 分,因此应该可以说明是一个普遍性的情况(毕竟原文也说了可能会死)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_9640.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nodejs+vue+elementui人才信息招聘网python java

注册登录 系统管理员模块:用户的管理、公司管理(审核)、职位管理(审核),简历的管理(审核)、修改密码。 企业管理模块:公司信息、发布招聘、修改密码、搜索简历.收藏简历,. 审核 个人申请的位置,邀请面试 个人管理模块:修改密码 我的简历、搜索…

Opencv项目——信用卡数字识别Python代码实现

一、模板图像处理 (1)灰度图、二值图转化 template cv2.imread(C:/Users/bwy/Desktop/number.png) template_gray cv2.cvtColor(template, cv2.COLOR_BGR2GRAY) cv_show(template_gray, template_gray)# 形成二值图像,因为要做轮廓检测 r…

doris环境部署(小白上手+部署适用)

重要:doris不支持单机部署,至少三副本 集群部署策略: 节点1配置FE(Leader):192.168.30.37节点2配置 BE:192.168.30.40节点4配置BE:192.168.30.41节点3配置BE:192.168.30.42 环境部署开始 1、需要安装 Java 运行环境(JDK最低版本要求是8),要检查你所安装的 Java 版本安…

机器学习入门一

应用领域监督学习和无监督学习监督学习回归问题分类问题无穷的处理无监督学习概念聚类算法鸡尾酒会算法模型描述代价函数代价函数是什么简化代价函数进行可视化理解完整代数函数图像(高线图表示)梯度下降算法过程梯度函数表达式梯度下降函数的更新规则线…

Android修行手册 - TabLayout全解析(上)-常用方法

往期文章分享点击跳转>《导航贴》- Unity手册,系统实战学习点击跳转>《导航贴》- Android手册,重温移动开发 👉关于作者 众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过…

BP神经网络简单应用实例,bp神经网络的应用案例

BP神经网络在地面沉降预测中的应用 地面沉降是多种自然和人为因素共同作用的结果。 各种要素发生作用的时空序列、影响强度和方向以及它们之间的关系处于不断变化之中,同时各因素的变化及其影响并不是单方面的,各变量之间相互形成制约关系,…

牛掰!完美诠释Netty!腾讯强推599页Netty进阶神技

Netty 作为一个学Java的,如果没有研究过Netty,那么你只能算一个初等Java程序员。如果你想知道Nginx是怎么写出来的,如果你想知道Tomcat和Jetty是如何实现的,如果你想实现一个简单的Redis服务器,那都应该好好理解一下Ne…

[需求管理-3]:什么是需求分析?常用的需求分析的流程与方法

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:https://blog.csdn.net/HiWangWenBing/article/details/126855421 目录 第1章 什么是需求分析 1.1 概述 1.2 需求分析的本质 1.…

go-cqhttp调用接口

目录调用接口一、 概述1、 简介2、 接口二、 接入权限系统1、 智能聊天2、 戳一戳3、 新成员三、 调用接口1、 查找接口2、 调用接口3、 接入机器人 调用接口 一、 概述 1、 简介 在我们实现了权限控制功能后,那么我们就在也不用担心机器人话太多,同时,平时又没时间,电脑又…

openSmile 在 Linux 下的安装教程与使用示例

目录openSMILE 工具简介Linux 上的安装步骤使用示例后续openSMILE 工具简介 一款以命令行形式运行的工具,通过配置config文件,主要用于音频特征的提取。官网:https://www.audeering.com/research/opensmile/ (当前是3.0版本&…

Oracle中的用户和表空间

文章目录Oracle中的用户和表空间一、用户和表空间简介二、用户1、系统用户登录1.1、数据库在本机时1.2、数据库在远程时1.3、案例2、查看登录用户2.1、命令2.2、案例3、解锁与锁定用户3.1、命令3.2、案例4、使用scott用户登录4.1、命令4.2、案例三、表空间1、表空间数据字典2、…

解决从PDF复制文字后乱码问题

背景 需要从PDF复制文字出来做笔记,可是谁知道PDF通过adobe打开后复制出来后是乱码,如下图所示: 解决 尝试过安装字体,可惜没卵用。 方法1-CAJViewer打开 用该软件打开后复制,可以完美复制,但是有个小问题…

Fastformer: Additive Attention Can Be All You Need

创新点:本文根据transformer模型进行改进,提出了一个高效的模型,模型复杂度呈线性。 主要改进了注意力机制,出发点在于降低了注意力矩阵的重要程度,该方法采用一个(1*T)一维向量替换了原始T*T大小的注意力矩阵。注意力结构图: 在这里,输入同样通过不同的线性映射得到Q…

Vue23全面知识总结七(2)

感兴趣的朋友可以去我的语雀平台进行查看更多的知识。 https://www.yuque.com/ambition-bcpii/muziteng 7.8 路由的props配置 props作用:让路由组件更方便的收到参数 {name:detail,path:detail/:id,component:Detail,//第一种写法:props值为对象&…

Java内存模型:创建对象在堆区如何分配内存

一、Heap堆区 Heap堆是JVM所管理的内存中最大的一块区域,被所有线程共享的一块内存区域。堆区中存放对象实例和数组,“几乎”所有的对象实例以及数组都在这里分配内存。 新生代、老年代 二、创建对象的内存分配 初始创建对象会在新生代的Eden区生成&…

行为型设计模式之策略模式

行为型设计模式之策略模式策略模式应用场景优缺点主要角色策略模式的基本使用创建抽象策略角色创建具体策略角色创建上下文角色客户端执行策略模式实现支付方式的选择创建抽象策略角色创建具体策略角色创建上下文角色客户端执行策略模式 策略模式(Strategy Pattern)…

线程安全集合:CopyOnWriteArrayList源码分析

目录 一、基本思想 二、源码分析 add()方法 set()方法 remove()方法 get()方法 三、小结 一、基本思想 首先CopyOnWrite 简称 COW ,是一种用于对集合并发访问的优化策略。基本思想是:当我们往一个集合容器中写入元素时(比如添加…

C++左值右值、左值引用右值引用、移动语义move

目录 1.什么是左值、右值 2.什么是左值引用&、右值引用&& 2.1左值引用& 2.2右值引用&& 2.3对左右值引用本质的讨论 2.3.1右值引用有办法指向左值吗? 2.3.2左值引用、右值引用本身是左值还是右值? 2.4 右值引用使用场景…

51单片机学习:静态数码管实验

实验名称:静态数码管实验 接线说明: 实验现象:下载程序后“数码管模块”最左边数码管显示数字0 注意事项: ***************************…

神经体液调节网络,神经网络能干嘛

神经网络的发展趋势如何? 神经网络的云集成模式还不是很成熟,应该有发展潜力,但神经网络有自己的硬伤,不知道能够达到怎样的效果,所以决策支持系统中并不是很热门,但是神经网络无视过程的优点也是无可替代…