Viết chương trình in ra thứ tự các đỉnh đã được duyệt bằng thuật toán DFS theo cả hai cách đệ quy và không đệ quy, áp dụng cho đồ thị có hướng Hình 14.1b trong phần Khởi động.
Bằng cách nhấp vào Đăng nhập, bạn đồng ý Chính sách bảo mật và Điều khoản sử dụng của chúng tôi. Nếu đây không phải máy tính của bạn, để đảm bảo an toàn, hãy sử dụng Cửa sổ riêng tư (Tab ẩn danh) để đăng nhập (New Private Window / New Incognito Window).
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)
Hôm nay bạn thế nào? Hãy nhấp vào một lựa chọn, nếu may mắn bạn sẽ được tặng 50.000 xu từ Lazi
Vui | Buồn | Bình thường |