蓝桥杯搜索算法python
时间: 2024-03-02 17:47:20 浏览: 95
蓝桥杯是中国最大的IT技能竞赛之一,搜索算法是其中一个常见的考点。在蓝桥杯中,搜索算法主要包括深度优先搜索(DFS)和广度优先搜索(BFS)两种常见的算法。
深度优先搜索(DFS)是一种用于遍历或搜索树或图的算法。它从根节点开始,沿着一条路径一直向下搜索,直到达到叶子节点或无法继续向下搜索为止,然后回溯到上一个节点,继续搜索其他路径。DFS通常使用递归或栈来实现。
广度优先搜索(BFS)是一种用于遍历或搜索树或图的算法。它从根节点开始,逐层地向外扩展搜索,先访问离根节点最近的节点,然后是离根节点更远的节点。BFS通常使用队列来实现。
在Python中,可以使用递归或者队列来实现DFS和BFS算法。以下是一个简单的DFS和BFS的示例代码:
DFS算法示例代码:
```python
def dfs(graph, start, visited):
visited.add(start)
print(start, end=" ")
for neighbor in graph[start]:
if neighbor not in visited:
dfs(graph, neighbor, visited)
# 示例图的邻接表表示
graph = {
'A': ['B', 'C'],
'B': ['A', 'D', 'E'],
'C': ['A', 'F'],
'D': ['B'],
'E': ['B', 'F'],
'F': ['C', 'E']
}
visited = set()
dfs(graph, 'A', visited)
```
BFS算法示例代码:
```python
from collections import deque
def bfs(graph, start):
visited = set()
queue = deque([start])
visited.add(start)
while queue:
node = queue.popleft()
print(node, end=" ")
for neighbor in graph[node]:
if neighbor not in visited:
queue.append(neighbor)
visited.add(neighbor)
# 示例图的邻接表表示
graph = {
'A': ['B', 'C'],
'B': ['A', 'D', 'E'],
'C': ['A', 'F'],
'D': ['B'],
'E': ['B', 'F'],
'F': ['C', 'E']
}
bfs(graph, 'A')
```
阅读全文