python算法分析与设计实验:宽度优先查找最短路径

本文介绍了Python环境下,使用宽度优先搜索(BFS)算法求解无向图中最短路径的实验过程。实验目的包括熟悉图的表示方法、掌握BFS算法及其复杂度分析。通过邻接列表存储图,设计Graph类和BFSResult类,并详细描述了BFS算法的实现步骤。实验结果显示,BFS按照层序遍历图,逐步找到所有结点的最短路径。
摘要由CSDN通过智能技术生成

python算法分析与设计实验:宽度优先查找最短路径

一、实验目的
1、熟悉图的两种常见表示方法,熟练掌握如何在计算机中存储图。了解图在计算机应用领域常见的应用场景。
2、熟练掌握图上宽度优先搜索算法及其算法复杂度分析,了解利用宽度优先搜索解决计算问题的建模过程。
3、熟练掌握图上深度优先搜索算法及其算法复杂度分析,了解深度优先算法的建模过程。

二、实验工具
Win10操作系统、python3.7编译环境、IDLE编译器

三、实验内容
给定无向图G=(V,E),求从源点s到图中各个结点v∈V的最近距离。如图1所示,从源点s到结点d,c和z的最短距离均为2,而到结点f和v的最短距离则为3。

四、实验过程
图的存储依然采用邻接列表的方式存储,通过设计一个Graph类来表示图。Graph类中的成员变量为字典类型变量adj,用于存储图中每一个结点的邻边,成员函数add_edge(u,v)将两个结点u和v建立连接。设计一个BFSResult类来存储BFS的输出结果,一个字典类型的变量level来存储各层结点。level的key对应层的结点,level的value则是层的标号。使用一个字典变量parent来记录结点的父结点。
BFS的实现的函数bfs的输入参数为图G和初始结点s。bfs先初始化输出对象r。变量i索引参数,列表变量frontier存储当前层的结点,列表变量next存储frontier中的所有下一层的结点。
五、实验结果分析
按照BFS遍历该图的过程如下:首先,将初始结点s设置为第0层,然后找出结点s的所有邻居结点,其中还没有被遍历到的结点就将它们作为第1层的结点。再找出第1层的结点的邻居结点,所有未遍历的结点作为第2层的结点。依次遍历完图中所有结点,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值