Câu hỏi:
04/10/2024 80Một đồ thị được gọi là liên thông nếu tồn tại ít nhất một đường đi giữa hai đỉnh bất kì của nó. Chẳng hạn, đồ thị ở Hình 6a là liên thông còn đô thị ở Hình 6b là không liên thông (không có đường đi từ đỉnh 0 tới đỉnh 3).
Yêu cầu: Áp dụng thuật toán duyệt đồ thị theo chiều sâu. Thực hiện xây dựng thuật toán kiểm tra xem đồ thị G = (V, E) cho trước có liên thông hay không.
Sách mới 2k7: Tổng ôn Toán, Lí, Hóa, Văn, Sử, Địa…. kỳ thi tốt nghiệp THPT Quốc gia 2025, đánh giá năng lực (chỉ từ 110k).
Quảng cáo
Trả lời:
Áp dụng thuật toán duyệt đồ thị theo chiều sâu. Thực hiện xây dựng thuật toán kiểm tra xem đồ thị G = (V, E) cho trước có liên thông hay không.
def dft(graph, u): stack initStack()
#Khởi tạo stack rỗng
visited [vertices.index(u)] = True #Đánh dấu đỉnh u đã duyệt
print(u, end = " ")
push(stack, u)
#In đỉnh u
#Thêm đỉnh u vào stack
while not isEmptyStack(stack): #Lặp khi stack khác rỗng
p = top(stack)
found = False
for v in graph[p]:
#Xem đỉnh p ở đỉnh stack
#Chưa tìm thấy
#Lặp để lấy các đỉnh kề v của đỉnh p
if not visited[vertices.index(v)]: #Nếu đỉnh v chưa duyệt
found = True
break
if not found:
p = pop(stack)
else:
#Tìm thấy
#Không tìm thấy đỉnh v
#Lấy đỉnh p ra khỏi stack
#Tìm thấy đỉnh v chưa duyệt
visited[vertices.index(v)] = True #Đánh dấu đỉnh v đã duyệt
print(v, end = "")
push(stack, v)
#In đỉnh v
#Thêm đỉnh v vào stack
#Hàm duyệt graph dạng danh sách kế theo chiều sâu
def dfs(graph):
global visited
visited [False]
*
len(graph)
for u in graph:
if not visited [vertices.index(u)]:
dft(graph, u)
#Đánh dấu các đỉnh chưa duyệt
#Xét đỉnh u chưa duyệt
#Duyệt đô thị theo chiều sâu từ u
graph, vertices = createAdjListGraph('dothi.txt') #Tạo đô thị từ tập dfs(graph)
#In kết quả duyệt theo chiều sâu
CÂU HỎI HOT CÙNG CHỦ ĐỀ
Câu 1:
Dùng thuật toán duyệt đồ thị theo chiều sâu xuất phát từ đỉnh 1. Hãy cho biết thứ tự duyệt các đỉnh của đồ thị ở Hình 4.
Câu 2:
Cho đồ thị G1 như ở Hình 1. Hãy tìm đường đi ngắn nhất từ đỉnh H đến đỉnh D bằng thuật toán duyệt đồ thị theo chiều rộng.
Câu 3:
Cho đồ thị G5 (Hình 5). Chỉ ra đường đi từ đỉnh F đến đỉnh J bằng thuật toán duyệt đồ thị theo chiều sâu trong đồ thị G5.
Câu 4:
Nhiệm vu: Duyệt đồ thị theo chiều sâu
Yêu cầu: Chương trình sau được viết bằng Phython duyệt đồ thị theo chiều sâu, với đồ thị Graph được biểu diễn bằng danh sách kề.
Câu 5:
Em hãy minh hoạ duyệt theo chiều sâu của đồ thị G2 ở Hình 2 (tương tự như Bảng 1) và bắt đầu từ đỉnh 2.
263 câu Trắc nghiệm tổng hợp ôn thi tốt nghiệp THPT môn Tin học Chủ đề F. Giải quyết vấn đề với sự trợ giúp của máy tính có đáp án
15 câu Trắc nghiệm Tin học 12 KNTT Bài 7: HTML và cấu trúc trang web
15 câu Trắc nghiệm Tin học 12 KNTT Bài 10: Tạo liên kết
15 câu Trắc nghiệm Tin học 12 KNTT Bài 8: Định dạng văn bản
15 câu Trắc nghiệm Tin học 12 KNTT Bài 11: Chèn tệp tin đa phương tiện và khung nội tuyến vào trang web
15 câu Trắc nghiệm Tin học 12 KNTT Bài 9: Tạo danh sách, bảng
15 câu Trắc nghiệm Tin học 12 Cánh diều Bài 1: Làm quen với ngôn ngữ đánh dấu siêu văn bản
Đề thi Học kì 1 Tin học 12 có đáp án (Đề 1)
về câu hỏi!