技术标签: 人智导作业
此题目要求使用深度优先搜索(DFS) 来完成吃豆人对食物的搜索,也就是完成search.py
里的DFS功能。其原理较为简单,如下图笔记所示:
参考伪代码如下:
注意图搜索与树搜索算法的区别(需不需要检索closed)
深度优先搜索要求满足先入后出的策略,因此fringe应选用栈来实现,可直接通过调用util.py
里写好的栈结构来完成。
具体python代码实现如下:
def depthFirstSearch(problem):
"""
Search the deepest nodes in the search tree first.
Your search algorithm needs to return a list of actions that reaches the
goal. Make sure to implement a graph search algorithm.
To get started, you might want to try some of these simple commands to
understand the search problem that is being passed in:
print("Start:", problem.getStartState())
print("Is the start a goal?", problem.isGoalState(problem.getStartState()))
print("Start's successors:", problem.getSuccessors(problem.getStartState()))
"""
"*** YOUR CODE HERE ***"
temp = problem.getStartState()
past = []
fringe = util.Stack()
fringe.push((temp, []))
while not fringe.isEmpty():
temp, path = fringe.pop()
past.append(temp)
if problem.isGoalState(temp):
return path
for child in problem.getSuccessors(temp):
if child[0] not in past:
fringe.push((child[0], path + [child[1]]))
util.raiseNotDefined()
值得注意的是,这里以及接下来的几个问题的past(closed)均使用了列表,从原理上讲是不对的。因为图搜索算法需要频繁的检索当前展开节点是否已经被展开过了,即该节点是否在closed集中,这里如果使用set
则可通过hash来达到O(1)
的查找时间,这对于搜索算法是至关重要的。但由于本次作业数据量不大,就懒得改了。
转载请注明作者及来源
随着计算机网络和分布式应用的不断发展,远程消息传递越来越成为应用系统中不可缺少的组成部分。商业消息中间件的出现保证了消息传输的可靠性,高效率和安全性,同时也减少了系统的开发周期。目前应用最多的消息中间件产品为IBM MQSeries。本文就针对MQ的基本操作与配置进行详细的阐述,希望对读者有所帮助。 一.MQ基本操作 MQ中有几个很重要的组件:队列管理器(QueueManager)、队...
Google谷歌需要什么样的员工?2006-10-14 22:22:00 10357 人阅读 作者:且听枫吟 编辑:且听枫吟 [复制链接] [我要爆料]在复旦·GoogleCamp成立仪式上,复旦同学与Google谷歌大中华区总裁李开复教授就Google在中国招聘员工的观点进行了简略的阐述。复旦记者:李开复博士您好,微软亚研院对应聘者提出三好——数学好、编程好、态度
下面看看,打开微信应用的小例子:flutter 端代码class FlutterCallNativeDemo extends StatelessWidget {// 声明方法通道var platform = MethodChannel(“samples.chenhang/utils”);//处理点击事件openWeChat() async {int result;try {// 通过方法调用,调用原生方法result = (await platform.invokeListMethod(
一、介绍虚拟盘有点类似于文件的快捷方式,但是又有不同。本文介绍的虚拟盘,是通过网络路径或者自己本地计算机的某个文件夹来创建一个虚拟盘,可能表述不清楚,具体您先看一下效果图:该L盘,实际是本地路径 E:\test 的文件夹映射。双击进去L盘后,看到的东西,跟E:\test下看到的东西是一样的。二、C#如何实体虚拟盘创建虚拟盘的指令是使用cmd命令程序来执行subst命令,那么C#代码,就要模拟这个过程,具体代码如下: static void Main(string[
目录目录测试类和方法标准案例系列导航测试类和方法测试方法是使用@Test、@RepeatedTest、@ParameterizedTest、@TestFactory或@TestTemplate直接或元注释的任何实例方法。测试类是包含至少一个测试方法的任何顶层或静态成员类。标准案例 注意测试类和测试方法都可以不设置为 public。...
Halcon算子–图像、区域、轮廓、测量、拟合、垂足、夹角read_image (Image,‘fabrik’)画矩形draw_rectangle1 (3600, Row1, Column1, Row2, Column2)gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)缩减图像定义域reduce_domain (Image, Rectangle, ImageReduced)阈值分割出感兴趣的部分threshold (ImageR
Earlier this year, I – along with some members of our DevOps team – noticed some interesting behavior in libmysqlclient and the MySQL CLI: no matter how hard we tried (no matter how many MYSQL_OPT_SSL...
经历重重测试,从初赛杀进综测再到去上海复测,真是一路坎坷啊!回顾电赛准备阶段,在实验室基地的我们熬了多少个夜,废寝忘食的学习…仅仅是为了能更有信心的面对电赛;在电赛的四天三夜中我们经历了太多,我们将近花了半天多的时间选题。之后的三天三夜就是精度灵敏度的比拼、理论仿真与实际的差距、算法的优劣。还有就是与时间赛跑和困意抗衡、保持精力的战斗惹。我们是做测控组的。8月7号一发布题目,我们就在半天时间内组...
使用pyinstaller打包python项目整体流程以及注意事项
自7月4日首个定制音乐漫综《Hi,泉听我的!》在抖音LiveShow霸榜后,胡海泉乘胜追击,7月15日19时将在抖音启动他的直播带货首秀,抖音搜索"海泉”即可在线围观。在线职业教育独角兽开课吧携旗下最火爆的Python课程亮相海泉直播间,作为全球最受欢迎的技术语言,人们越来越开始意识到人人都要学Python,人人都可以学Python。此次直播带货首秀,海泉携手小米、网易严选、开课吧、VI...
消息处理流程总揽(该图来源于互联网,图片很大,不过类容还是挺清楚的。不方便查看,需要下载查看):更为直观的流程描述:在线chat Test1---->test2<message id="1coTi-29" to="[email protected]/Smack" from="[email protected]
4.4的硬件渲染关键点:独立线程使用gpu rasterrize,并且ui线程合成时,也是在gpu上操作数据。http://blog.csdn.net/hongbomin/article/details/40896313原创文章,转载请以链接形式注明原始出处为http://blog.csdn.net/hongbomin/article/details/40896313摘要:从Andro