BFS算法:利用队列进行搜索
DFS算法:利用栈进行搜索
1.BFS算法
##建立字典:表征该点的临接点
graph={
"A":["B","C"],
"B":["A","C","D"],
"C":["A","B","D","F"],
"D":["B","C","E","F"],
"E":["C","D"],
"F":["D"]
}
##BFS用队列解决搜索问题
def BFS(start_node):
queue=[]
queue.append(start_node)
seen=set()
seen.add(start_node)
while len(queue)>0:
now_node=queue.pop(0)
for node in graph[now_node]:
if node not in seen:
queue.append(node)
seen.add(node)
print(now_node)
2.DFS算法
##DFS 用栈解决搜索问题
def DFS(start_node):
stack=[]
stack.append(start_node)
seen=set()
seen.add(start_node)
while len(stack)>0:
now_node=stack.pop()
for node in graph[now_node]:
if node not in seen:
stack.append(node)
seen.add(node)
print(now_node)
#DFS("A")
3.最短路径
##求最短路径
def BFS(start_node):
queue=[]
queue.append(start_node)
seen=set()
seen.add(start_node)
parent={start_node:None}
while len(queue)>0:
now_node=queue.pop(0)
for node in graph[now_node]:
if node not in seen:
queue.append(node)
parent[node]=now_node
seen.add(node)
#print(now_node)
print(parent)
全部代码:
##建立字典:表征该点的临接点
graph={
"A":["B","C"],
"B":["A","C","D"],
"C":["A","B","D","F"],
"D":["B","C","E","F"],
"E":["C","D"],
"F":["D"]
}
##BFS用队列解决搜索问题
def BFS(start_node):
queue=[]
queue.append(start_node)
seen=set()
seen.add(start_node)
while len(queue)>0:
now_node=queue.pop(0)
for node in graph[now_node]:
if node not in seen:
queue.append(node)
seen.add(node)
print(now_node)
#BFS("A")
##DFS 用栈解决搜索问题
def DFS(start_node):
stack=[]
stack.append(start_node)
seen=set()
seen.add(start_node)
while len(stack)>0:
now_node=stack.pop()
for node in graph[now_node]:
if node not in seen:
stack.append(node)
seen.add(node)
print(now_node)
#DFS("A")
##求最短路径
def BFS(start_node):
queue=[]
queue.append(start_node)
seen=set()
seen.add(start_node)
parent={start_node:None}##存储路径
while len(queue)>0:
now_node=queue.pop(0)
for node in graph[now_node]:
if node not in seen:
queue.append(node)
parent[node]=now_node
seen.add(node)
#print(now_node)
print(parent)
##搜索A--E的路径
v='E'
while v!=None:
print(v)
v=parent[v]
BFS("A")
本文介绍了使用BFS(广度优先搜索)和DFS(深度优先搜索)算法在图中进行搜索,并展示了如何通过BFS实现最短路径查找。通过实例演示了这两种算法在字典表示的图结构中的应用。
700

被折叠的 条评论
为什么被折叠?



