首页 > 编程知识 正文

递归算法的步骤,图的遍历深度和广度

时间:2023-05-05 13:55:51 阅读:50810 作者:4419

Python是宽/宽优先搜索算法,深度优先搜索算法1 .二叉树图2 .宽/宽优先搜索算法(Breadth First Search,BSF )3.深度优先搜索算法4 .宽/宽优先搜索算法实现5

1 .二叉树图

2 .广度优先搜索算法(Breadth First Search,BSF )机制:

从图中某顶点v出发,先访问定点v,访问v,再依次访问v未访问的邻点; 并且,从这些相邻点分别依次访问它们的相邻点,"使先访问的顶点的相邻点比后访问的顶点的相邻点先访问; 直到图中被访问的所有顶点的相邻点被访问为止; 如果此时还没有访问图表的顶点,则必须选择另一个未访问的顶点作为新的起点,然后重复上述步骤,直到访问了图表的所有顶点。 换句话说,宽度优先搜索扫描图的过程是以v为起点,从近到远依次访问v与路径相通、且路径长度为1、2…的顶点。

上图中的BFS访问顺序为A-B-C-D-E-F

3 .深度优先搜索算法机制:

从顶点v出发,首先访问该顶点; 然后,从该各未被访问的相邻点开始依次搜索深度优先搜索扫描图; 直到访问了图中与v相关的所有顶点。 如果没有其他顶点访问此时尚,请选择未访问的顶点作为起点,然后重复上述步骤直到访问了图中的所有顶点。 上图中的BFS访问顺序为A-B-D-E-C-F

4 .实现宽度/宽度优先搜索算法#实现宽度优先算法defbfs(self,root ) :#首先判断根节点是否为空节点if root!=none : search _ queue=deque (search _ queue.append ) root ) visited=[ ] else 3360打印(rootisnone ) ) )。 返回-1whilesearch _ queue : person=search _ queue.pop left (self.order.append ) person ) if ) notpersoninvision visited.append(person )5.实现深度优先搜索算法#实现深度优先算法defdfs(self,root ) 3360=none : search _ queue=deque (seare ) 返回-1whilesearch _ queue : person=search _ queue.pop left (self.order.append ) person ) if ) notpersoninvision tmp.reverse ) ) forindexintmp : search _ queue.append left (index ) visited.aaadd-coding 3360 utf-8-- fromcollectend 使用邻接矩阵class Graph(object ) 3360 def _ _ init _ _ * kwargs ) : self.order=[ ] # visitedorderself.neighbor={ val=nodeiii list ) : # print (节点输入时必须是线性表)实现避免非法输入的self.neighbor[key]=val #宽度优先算法defbfs(self, root ) : )首先确定根节点是否为空节点=none : search _ queue=deque (search _ queue.append ) root ) visited=[ ] else 返回-1whilesearch _ queue : person=search _ queue.pop left (self.order.append ) person ) if ) notpersoninvision ueue=self.neighbor [ Person ] visited.append ) person ) #深度优先算法=none : search _ queue=deque (search _ queue 返回-1whilesearch _ queue : person=search _ queue.pop left (self.order.append ) person ) if ) notpersoninvision neighbor[person]tmp.reverse ) ) forindexintmp3360search_ )。 visited.append(person ) defclear ) self ) : self.order=[ ] defnode _ print ) self ) 3360 forindexinself.order 3330 二叉树图g=graph(g.add_node () (a )、(b )、(c ) ['F'] ()宽度优先搜索g.BFS(a ' ) print ) ]宽度优先搜索: ) A B C D E F g.clear ) ) ) ) n深度优先搜索: ' (打印)、end=' ) g.DFS ) ) g.node_print )、abdecfprint ) )

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。