|
发表于 2023-6-12 19:07:10
|
显示全部楼层
深度优先算法(Depth-First Search,简称DFS)和广度优先算法(Breadth-First Search,简称BFS)是两种基本的图遍历算法。
深度优先算法
原理
深度优先算法通过栈实现,首先将起始节点压入栈中。然后每次弹出一个节点,如果该节点没有访问过,则将它的邻居节点压入栈中,并将其设置为已访问。继续重复以上步骤直到栈为空时遍历结束。
实现
以下是深度优先算法的 Python 代码实现:
- def dfs(graph, start):
- stack = [start]
- visited = set()
- while stack:
- node = stack.pop()
- if node not in visited:
- visited.add(node)
- stack.extend(graph[node] - visited)
- return visited
复制代码
广度优先算法
原理
广度优先算法通过队列实现,首先将起始节点加入队列中。然后每次从队列头取出一个节点,如果该节点没有访问过,则将它的邻居节点依次加入队列尾,并将其设置为已访问。重复以上步骤直到队列为空时遍历结束。
实现
以下是广度优先算法的 Python 代码实现:
- from collections import deque
- def bfs(graph, start):
- queue = deque([start])
- visited = set()
- while queue:
- node = queue.popleft()
- if node not in visited:
- visited.add(node)
- queue.extend(graph[node] - visited)
- return visited
复制代码
以上是深度优先算法和广度优先算法的实现及其原理。需要注意的是,在实际应用中,这两种算法的使用会根据具体问题有所不同。 |
|