python 算法设计与分析
--第七讲
2020年11月14日,西京学院数据科学与人工智能协会在本学期实行线下集中自我提升活动--《python算法与设计》,活动地点为西京学院3336教室,主要安排2018级计科专业学生为协会工作室的全体成员讲解内容,第七讲由计科18级的李盼为大家讲广度优先搜索。
首先,介绍什么是广度搜索?并且用一个简单的图举例广度优先遍历。
广度优先遍历是一个解决图问题的遍历算法。但不同于深度优先遍历,广度优先遍历总是先去查询距离初始状态最近的状态,而不是一直向最“深”处查询结果。
经典案例一、艰难旅行问题
现已知一个大小为?×m格的地图,地图中只有可能出现两个数字:0或1,现规定如果位于数字为0的格子上,下一步只能往相邻四个格子中数字为1的格子走,如果位于数字为1的格子上,则下一步只能往相邻四个格子中数字为0的格子走。如果给定你的起点格子,且只能向上下左右四个方向移动,求你能在这个?×m的格的图中到达多少格子(包含自身)?
二、混乱地铁问题
在某一个城市中地铁网极度混乱。一条地铁线路上有n个地铁站,分别编号为1到n。地铁线路上的每一个站都会停靠地铁,每一个地铁站上都有一个数字m,代表从此站出发乘客必须乘坐的站数。每个地铁站都有通往两个方向的地铁。因此既可以向编号大的方向前进m站,也可以向编号小的方向前进m站。但如果前进后超出了地铁站的范围,则该地铁不可被乘坐。例如编号为1的地铁上的数字为3,那么在该地铁站上车,可以向正方向坐车到4号地铁站。但不能反方向坐车到-2号地铁站,因为-2号地铁站不存在。现在乘客从A号地铁站出发,想要到达B号地铁站,求他能否到达,最少要搭乘多少次地铁?
本次活动第七讲已完满结束啦,感谢大家的支持,同时感谢李盼的精彩讲解,希望大家与协会共同学习进步,我们协会也将推出更多的活动希望大家踊跃参加。
本次分享到这就结束了,期待我们下次再见。