python代码实现深度优先
时间: 2023-11-08 11:02:52 浏览: 98
以下是Python代码实现深度优先搜索算法的示例:
```python
def dfs(graph, start):
visited, stack = set(), [start]
while stack:
vertex = stack.pop()
if vertex not in visited:
visited.add(vertex)
stack.extend(graph[vertex] - visited)
return visited
```
其中,`graph`是一个字典,用于存储图的邻接表;`start`是起始节点。
该算法的基本思想是从起始点开始,不断往他的下一层走,直到无法继续为止。然后回溯到上一个节点,再往他的下一层走,直到图中所有节点都被访问完为止。
相关问题
广度优先深度优先python 代码实现
好的,下面是Python实现广度优先搜索和深度优先搜索的示例代码:
广度优先搜索:
```python
from collections import deque
def bfs(graph, start, end):
queue = deque()
queue.append(start)
visited = set()
while queue:
node = queue.popleft()
if node == end:
return True
visited.add(node)
for neighbor in graph[node]:
if neighbor not in visited:
queue.append(neighbor)
return False
```
深度优先搜索:
```python
def dfs(graph, start, end, visited=None):
if visited is None:
visited = set()
visited.add(start)
if start == end:
return True
for neighbor in graph[start]:
if neighbor not in visited:
if dfs(graph, neighbor, end, visited):
return True
return False
```
这里的`graph`是一个字典,表示图的邻接表,`start`是起点,`end`是终点。广度优先搜索使用了双端队列`deque`,深度优先搜索使用了递归。
阅读全文