BFS解决迷宫最短路径

1、概述

第一次写文章,题材选了最近刚上手的BFS算法,博客上介绍这类算法文章很多,有很多简洁快速的算法,我采用知识普通的一种方法。我主要想分享一下在代码编写过程遇到的错误,希望能给大家一些借鉴。

2、算法的逻辑

在我刚开始想解决迷宫问题时,阅读大量代码,试图快速学习掌握这个算法(我是一新手),不但没看懂反而让我更着急,后来看了一些讲解视频,体会想要掌握新的算法,首先需要先了解这种算法的逻辑,以图表及文字形式先预演一次算法运行的过程,在这个过程中能够加深对算法原理的认识,做到心中有数。了解算法逻辑后可以开始写代码了。
介绍BFS解决迷宫问题思路是从起点出发,记录每走一步能够到达的点,并判断最新到达的点是否是终点,如果是终点则停止搜索,否者继续往下走一步。这里有两个问题要解决,先要解决任一点走一步能够到的点,创建一列表用来存储起点及潜在终点(对于每个点有上下左右四种走法,如果能够到达的点不超范围,不是墙壁并且未走过,则认为是潜在终点)。其次解决另外一个问题,完成一个点的搜索之后,将搜索下一个加入列表中的点,循环直到潜在终点就是终点。

3、代码解析

代码分为三个部分,Part 1是从一个Txt中导入迷宫的二维矩阵图,如下所示,并求取矩阵的行列值
0 0 1 1 0
0 0 0 1 0
1 1 0 0 0
1 0 1 1 0
0 0 0 0 0
1 0 1 1 0
Part 2 是建立五个列表,Dir存储每个点运行方位,x,y及s存储搜索过程中每个点x坐标,y坐标及步数,idx存储已经遍历过的点的数量。
Part 3 是代码主题部分,循环判断潜在终点是否是终点,如果是则停止循环。

#Part 1
f = open('Migong.txt','r')
Mg = []
for line in f:
    li = list(map(int,line.split()))
    Mg.append(li
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值