首页 > 其他分享 >cs50ai0----search

cs50ai0----search

时间:2023-08-18 22:55:51浏览次数:33  
标签:search return 函数 ---- state board action cs50ai0 id

cs50ai0-------Search


基础知识

(1) search problem
img
上图是搜索问题的一般形式
每个名词具体解释如下:
initial state:state是agent与environment的一个配置或者说构造,initial state就是初始的state
actions:在state下可以做出的所有action
transition model:
对在任何state下执行可执行的action所产生的状态的描述
goal test:确认当前state是否是goal state
path cost function:与某一个path相关的cost
(2) dfs与bfs
img
上图就是dfs与bfs的具体算法流程
首先 从一个包含着initial state的frontier与空的explored set开始,从frontier中安照规则移除一个node(包含parent state,当前state,以及从parent到当前node的action),拓展该node,将拓展得到的不在frontier中和explored set中的node加入frontier,重复上述操作,直到frontier为空或者到达目标state
区别就是frontier采用的数据结构不同,dfs是stack,bfs是queue
(3) greedy best-first search(gbs)与A*搜索
上面提到的dfs与bfs属于无信息搜索即盲目搜索
而贪心搜索属于有信息搜索也叫启发式搜索
具体定义为:
扩展最接近目标的节点的搜索算法,这个最接近的节点由启发式函数 h(n) 估计
img
如上图所示 在迷宫问题中的h(n)是到目标的manhattan距离

但是贪心搜索可能导致找到的是局部最优解,不是全局最优路径
而A*搜索则是使用g(n)与h(n)来计算path cost

img
相当于已经走过的cost和估计的cost之和

A*算法是最优的在如下所示的情况下:
img
要h(n)要满足不过分估计同时保持一致性
这一点我理解的不是很清楚

标签:search,return,函数,----,state,board,action,cs50ai0,id
From: https://www.cnblogs.com/dyccyber/p/17641755.html

相关文章

  • daimayuan252 | 摸鱼(状压, 枚举, 小技巧)
    题目很straightforward的,看到n范围很小考虑状压,暴力枚举所有的可能pattern.第一种做法,暴力枚举是\(O(2^n)\)的,然后check函数判断是\(O(n^2)\)的,一共是\(O(n^22^n)\)的,可以通过.第二种做法,我们考虑把判断pattern是否合法的限制条件也压成二进制串,那么我们比对条......
  • Jmeter的并发执行和顺序执行以及线程组参数说明
    效果图  下面看下勾选的情况   下面对线程组参数进行说明效果图 关于持续时间 关于启动延迟 ......
  • P9169-过河卒
    原题链接过河卒题目大意一个\(n\timesn\)的棋盘,上有一黑二红三子,黑棋每次可以从\((x,y)\)移动到\((x-1,y),(x,y-1),(x,y+1)\),红棋每次可以从\((x,y)\)移动到\((x-1,y),(x+1,y),(x,y-1),(x,y+1)\),求双方都使用最优策略的情况下谁最少要几步获胜。某一方获胜当且仅当:......
  • springboot验证码-easy-captcha工具包
    说明Java图形验证码,支持gif、中文、算术等类型,可用于JavaWeb、JavaSE等项目pom引入 <dependency> <groupId>com.github.whvcse</groupId> <artifactId>easy-captcha</artifactId> <version>1.6.2</version> </dependency> 详解参数类使用easy-cap......
  • Educational Codeforces Round 153 (Rated for Div. 2)
    EducationalCodeforcesRound153(RatedforDiv.2)这次的div2有点难度,当时b题思路对了,但是没有写好A题传送门A题意:给你一个只包含'('和')'的字符串,要求你将他的长度扩大一倍,并且使得所有括号匹配且组成的序列当中不能存在原序列的子序列A思路:这道题一开始写的时候没有注......
  • springboot验证码-kaptcha
    前言网上实现生成验证码的方式有很多,我这里只记录下使用kaptcha生成验证码的方式。实现思路1、整合kaptcha,创建kaptcha的工具类。2、编写接口,在接口中使用kaptcha工具类来生成验证码图片(验证码信息)并返回。3、登录时从session中获取验证码进行校验。4、测试获取验证码......
  • 高数---定义法求二阶偏导小感悟
    我们使用定义法求以下偏导1、我们用定义法对(x0,y0)点求关于x的偏导得到的结果是作用于(x0,y0)的领域内,一般可以得到一个具体值2、如果我们把x当作一个常量,而对(x,y0)关于x求偏导,得到的是一个关于x的表达式,它作用于y=y0的这一条直线,含义是f(x,y)沿着y=y0这条直线的所有关于x的......
  • Systrace看GPU渲染花费时间之Fence
    一、前言如上图所示的Systrace中,VSYNC-app基本上没有什么变化,但是VSYNC-sf却一直在更新有可能是什么原因?VSYNC-app的作用通知app去开始进行绘制渲染更新UI了,DispSync按照屏幕的刷新率的速率去通知app,因此app会以跟屏幕刷新率匹配的速率去绘制渲染更新UI。而在手......
  • springboot验证码-Hutool-captcha
    前言在Web应用程序中,为了保护用户信息的安全性,验证码已经成为了一个非常普遍的安全措施,而Hutool-captcha是一款非常优秀的开源图形验证码工具,简单易用,提供了丰富的特性,可以帮助我们快速实现验证码功能。本文将介绍如何使用SpringBoot整合Mybatis-Plus和Hutool-captcha实现验证码......
  • Mike and strings 题解
    题目传送门一道字符串题。由于\(n\)非常小,可以暴力枚举字符串。我们可以枚举其中一个字符串\(s_i\),然后让其他的字符串变成\(s_i\),最后记录一下次数,取一个最小值即可。在枚举第二个字符串的时候可以将它再复制一份自己到后面,然后可以用find函数来统计。当然,如果找不到,这......