利用 DFS 实现有向无环图拓扑排序
时间: 2023-11-26 19:47:22 浏览: 206
数据结构6.8有向无环图及应用
利用 DFS 实现有向无环图拓扑排序的步骤如下:
1. 对于有向无环图中的每个顶点,进行 DFS 遍历。
2. 在 DFS 遍历的过程中,对每个顶点进行标记,标记其是否被访问过。
3. 在 DFS 遍历的过程中,对每个顶点进行标记,标记其结束时间。
4. 根据每个顶点的结束时间,进行排序,得到拓扑排序。
以下是具体的实现代码:
```python
visited = [False] * MAX_SIZE
finishTime = [0] * MAX_SIZE
result = []
def topologicalSortDFS(G):
for v in range(G.vexNum):
visited[v] = False
time = 0
for v in range(G.vexNum):
if not visited[v]:
DFS(G, v)
result.reverse()
return result
def DFS(G, v):
visited[v] = True
for w in range(G.vexNum):
if G.arc[v][w] != 0 and not visited[w]:
DFS(G, w)
global time
time += 1
finishTime[v] = time
result.append(v)
```
阅读全文