Quảng cáo
1 câu trả lời 123
Chương trình Python mô phỏng thuật toán DFS theo cả hai cách đệ quy và không đệ quy:
* Đệ quy (Recursive):
def DFS_recursive(graph, vertex, visited=None):
if visited is None:
visited = set()
visited.add(vertex)
print(vertex, end=' ')
for neighbor in graph[vertex]:
if neighbor not in visited:
DFS_recursive(graph, neighbor, visited)
# Ví dụ sử dụng:
graph = {
0: [1, 2],
1: [3],
2: [4],
3: [],
4: [5],
5: [3],
6: [5],
7: [6]
}
DFS_recursive(graph, 0)
* Không đệ quy (Non-recursive):
def DFS_non_recursive(graph, start_vertex):
visited = set()
stack = [start_vertex]
while stack:
vertex = stack.pop()
if vertex not in visited:
print(vertex, end=' ')
visited.add(vertex)
# Thêm vào ngăn xếp các đỉnh kề chưa được thăm
stack.extend([neighbor for neighbor in graph[vertex] if neighbor not in visited])
# Ví dụ sử dụng:
graph = {
0: [1, 2],
1: [3],
2: [4],
3: [],
4: [5],
5: [3],
6: [5],
7: [6]
}
DFS_non_recursive(graph, 0)
Quảng cáo
Bạn cần hỏi gì?
Câu hỏi hot cùng chủ đề
-
Đã trả lời bởi chuyên gia
149615 -
Đã trả lời bởi chuyên gia
99992 -
Đã trả lời bởi chuyên gia
97600 -
Đã trả lời bởi chuyên gia
80297 -
Đã trả lời bởi chuyên gia
73088 -
Đã trả lời bởi chuyên gia
56178 -
Đã trả lời bởi chuyên gia
55554
