1. 深度优先搜索介绍
图的深度优先搜索(Depth First Search),和树的先序遍历比较类似。
它的思想:假设初始状态是图中所有顶点均未被访问,则从某个顶点v出发,首先访问该顶点,然后依次从它的各个未被访问的邻接点出发深度优先搜索遍历图,直至图中所有和v有路径相通的顶点都被访问到。 若此时尚有其他顶点未被访问到,则另选一个未被访问的顶点作起始点,重复上述过程,直至图中所有顶点都被访问到为止。
显然,深度优先搜索是一个递归的过程。
2. 广度优先搜索介绍
广度优先搜索算法(Breadth First Search),又称为"宽度优先搜索"或"横向优先搜索",简称BFS。
它的思想是:从图中某顶点v出发,在访问了v之后依次访问v的各个未曾访问过的邻接点,然后分别从这些邻接点出发依次访问它们的邻接点,并使得“先被访问的顶点的邻接点先于后被访问的顶点的邻接点被访问,直至图中所有已被访问的顶点的邻接点都被访问到。如果此时图中尚有顶点未被访问,则需要另选一个未曾被访问过的顶点作为新的起始点,重复上述过程,直至图中所有顶点都被访问到为止。
换句话说,广度优先搜索遍历图的过程是以v为起点,由近至远,依次访问和v有路径相通且路径长度为1,2...的顶点。
# -*- coding: utf-8 -*- """ Created on Wed Sep 27 00:41:25 2017 @author: my """ from collections import OrderedDict class graph: nodes=OrderedDict({})#有序字典 def toString(self): for key in self.nodes: print key+'邻接点为'+str(self.nodes[key].adj) def add(self,data,adj,tag): n=Node(data,adj) self.nodes[tag]=n for vTag in n.adj: if self.nodes.has_key(vTag) and tag not in self.nodes[vTag].adj: self.nodes[vTag].adj.append(tag) visited=[] def dfs(self,v): if v not in self.visited: self.visited.append(v) print v for adjTag in self.nodes[v].adj: self.dfs(adjTag) visited2=[] def bfs(self,v): queue=[] queue.insert(0,v) self.visited2.append(v) while(len(queue)!=0): top=queue[len(queue)-1] for temp in self.nodes[top].adj: if temp not in self.visited2: self.visited2.append(temp) queue.insert(0,temp) print top queue.pop() class Node: data=0 adj=[] def __init__(self,data,adj): self.data=data self.adj=adj g=graph() g.add(0,['e','c'],'a') g.add(0,['a','g'],'b') g.add(0,['a','e'],'c') g.add(0,['a','f'],'d') g.add(0,['a','c','f'],'e') g.add(0,['d','g','e'],'f') g.add(0,['b','f'],'g') g.toString() print '深度优先遍历的结构为' g.dfs('c') print '广度优先遍历的结构为' g.bfs('c')
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
白云城资源网 Copyright www.dyhadc.com
暂无“python深度优先搜索和广度优先搜索”评论...
更新日志
2025年04月23日
2025年04月23日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]