举例说明广度优先搜索和深度优先搜索。
时间: 2023-12-11 19:32:39 浏览: 108
以下是广度优先搜索和深度优先搜索的Python实现示例:
1. 广度优先搜索
广度优先搜索(BFS)是一种图形搜索算法,它从根节点开始,逐层遍历整个图,直到找到目标节点或遍历完整个图。BFS通常使用队列来实现。
```python
from collections import deque
# 定义图
graph = {
'A': ['B', 'C'],
'B': ['D', 'E'],
'C': ['F'],
'D': [],
'E': ['F'],
'F': []
}
# 广度优先搜索函数
def bfs(graph, start):
visited = set() # 记录已经访问过的节点
queue = deque([start]) # 初始化队列
while queue:
node = queue.popleft() # 取出队列中的第一个节点
if node not in visited:
visited.add(node)
print(node, end=' ')
for neighbor in graph[node]:
if neighbor not in visited:
queue.append(neighbor)
# 测试
bfs(graph, 'A')
```
输出结果为:A B C D E F
2. 深度优先搜索
深度优先搜索(DFS)是一种图形搜索算法,它从根节点开始,沿着一条路径一直遍历到底,直到找到目标节点或者无法继续遍历为止。DFS通常使用递归来实现。
```python
# 定义图
graph = {
'A': ['B', 'C'],
'B': ['D', 'E'],
'C': ['F'],
'D': [],
'E': ['F'],
'F': []
}
# 深度优先搜索函数
def dfs(graph, node, visited):
if node not in visited:
visited.add(node)
print(node, end=' ')
for neighbor in graph[node]:
dfs(graph, neighbor, visited)
# 测试
dfs(graph, 'A', set())
```
输出结果为:A B D E F C
阅读全文