python宽度优先搜索算法并输出路径
2019独角兽企业重金招聘Python工程师标准>>>
[hadoop@iZ25s7cmfyrZ test]$ cat uda_city.py
# ----------# ----------# Grid format:
# 0 = Navigable space
# 1 = Occupied space
import numpy as npgrid = [[0, 0, 1, 0, 0, 0],[0, 0, 1, 0, 0, 0],[0, 0, 0, 0, 1, 0],[0, 0, 1, 1, 1, 0],[0, 0, 0, 0, 1, 0]]
init = [0, 0]
goal = [len(grid)-1, len(grid[0])-1]
cost = 1delta = [[-1, 0], # go up[ 0,-1], # go left[ 0, 1], # go right[ 1, 0]] # go down#delta_name = ['^', '<', 'v', '>']
delta_name = ['^', '<', '>', 'v']def search(grid,init,goal,cost):# ----------------------------------------# insert code here# ----------------------------------------closed=[[0 for _ in range(len(grid[0]))] for _ in range(len(grid))]action=[[-1 for row in range(len(grid[0]))] for col in range(len(grid))]x=init[0]y=init[1]g=0closed[x][y]=1open=[[g,x,y]]found=False resign=Falsegrid[x][y]=2n=0while found is False and resign is False:#print openn=n+1#print "*"*20#print n#print np.array(grid)if len(open)==0:resign=Trueprint "fail"else:##remove node from listopen.sort()open.reverse()next=open.pop()## take x=next[1]y=next[2]g=next[0]#print gif x==goal[0] and y==goal[1]:found=Trueprint nextelse:for i in range(len(delta)):x2=x+delta[i][0]y2=y+delta[i][1]#print i, delta[i], x2, y2#print x2, y2if x2 >= 0 and x2 < len(grid) and y2 >= 0 and y2 < len(grid[0]):if grid[x2][y2]==0 and closed[x2][y2]==0:g2=g+costopen.append([g2, x2, y2])grid[x2][y2]=2action[x2][y2]=iclosed[x2][y2]=1return action
print np.array(grid)
action=search(grid,init,goal,cost) ##注意action中存储的在上一时刻位置 t-1 经过何种动作到达本位置
print np.array(action)
policy=[[" " for row in range(len(grid[0]))] for col in range(len(grid))] ## policy 中存储的是在当前位置经过何种动作到达下一位置;即由t到t+1
x=goal[0]
y=goal[1]
policy[x][y]="*"
while x!=init[0] or y!=init[1]:x2=x-delta[action[x][y]][0]y2=y-delta[aciton[x][y]][1]policy[x2][y2]=delta_name[action[x][y]]x=x2y=y2
print np.array(policy)
转载于:https://my.oschina.net/lCQ3FC3/blog/859127
python宽度优先搜索算法并输出路径相关推荐
- 宽度优先搜索算法(BFS)详解(超级详细讲解,附有大图)
目录 一.宽度优先搜索(BFS)是什么? 二.图解宽搜(BFS) 三.对比与发现 四.工具--队列 五.模板 六.最后 一.宽度优先搜索(BFS)是什么? 百度百科这样说: 宽度优先搜索算法(又称广度 ...
- 宽度优先搜索算法解决八数码问题
宽度优先搜索算法解决八数码问题 原理 1.宽度优先搜索是指在一个搜索树中,搜索以同层邻近节点依次扩展节点.这种搜索是逐层进行的,在对下一层的任一节点进行搜索之前,必须搜索完本层的所有节点. 宽度优先搜 ...
- 算法导论:dfs深度优先搜索算法及基于dfs的拓扑排序以及宽度优先搜索算法bfs
1.dfs深度优先搜索算法 算法导论中是通过三种标记颜色来介绍dfs的,white代表还没被搜过,grey代表被搜了一些,还没结束,white表示已经搜索完成的状态. c/c++复现dfs代码 #in ...
- BFS广度优先搜索算法//宽度优先搜索算法
BFS宽度优先搜索算法,又称广度优先搜索,是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型. Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想. ...
- 【深度优先搜索算法】与【宽度优先搜索算法】
深度优先搜索算法 深度优先搜索算法(Depth-First-Search,简称DFS)是一种用于遍历或搜索树或图的算法.沿着树的深度遍历树的节点,尽可能深的搜索树的分支.当节点v的所在边都己被探寻过 ...
- 宽度优先搜索算法-BreadthFirstSearch(BFS)
package com.xch3.wide;import java.util.ArrayList; import java.util.List; import java.util.Scanner;pu ...
- 全局择优搜索、A*算法、宽度优先算法解决八数码问题
1问题描述 使用盲目搜索中的宽度优先搜索算法或者使用启发式搜索中的全局择优搜索或A算法,对任意的八数码问题给出求解结果.例如:对于如下具体的八数码问题: 通过设计启发函数,编程实现求解过程,如果问题有 ...
- (宽度优先搜索)bfs(包含所有模型)
持续更新中(点个赞吧) 首先,我们要了解什么是bfs: 宽度优先搜索算法(又称广度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型. 其实bfs是盲目的搜索周围,知道搜到目的 ...
- 宽度优先搜索与深度优先搜索
宽度优先搜索算法顺序:1-2-3-4-5-6-7 深度优先搜索算法顺序:1-2-4-5-3-6-7 宽度优先搜索算法(又称广度优先搜索)BFS,属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点 ...
最新文章
- pip list报错:DEPRECATION: The default format will switch to columns in the future.
- 2019年了,中文分词到底该怎么做?中文分词十年方法大盘点(附下载)
- Linux System Programming -- Appendix
- 基类指针调用派生类函数_C++ 多态性:虚函数--基类与派生类类型转换(第7章 05)例子问题解析(学习笔记:第8章 05)...
- 重启大法好!线上常见问题排查手册
- mysql数据库常用字段类型_快速了解MySQL数据库常用字段类型
- mvc 视图和模型的对应_通过在酒吧订购饮料来解释模型视图控制器(MVC)
- 入门云数据库Redis,满足你的高读写性能场景需求
- linux集群的启动和停止,linux平台 spark standalone集群 使用 start-all,stop-all 管理集群的启动和退出...
- 欧盟批准ATT收购时代华纳 或年底前完成交易
- iOS如何检测app从后台调回前台
- shapenet各类数据(转载)
- SCCM 2012系列13 操作系统播发②
- c语言引用win api,C调用WinAPI及窗口过程
- ueditor编辑器的坑(视频空白/保存无数据/无法删除/不能插入百度动态地图/有序列表显示问题)
- 基于CAA的CATIA二次开发环境搭建全过程(亲测可用)
- matlab亚式 期权定价,MATLAB在幂型几何亚式期权定价中的应用
- 趋势杀毒曝远程执行漏洞 可盗取用户所有密码
- 支付宝相关服务申请入口
- coreldraw梯形校正_CorelDRAW绘制等腰梯形的多种方法