Câu hỏi:
04/10/2024 54Chương trình dưới đây duyệt đồ thị G3 (Hình 3) bắt đầu từ đỉnh B và đỉnh F. Em có nhận xét gì về thứ tự duyệt bắt đầu với đỉnh B và đỉnh F.
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:
Dựa vào mô tả hình ảnh của đồ thị G3, để duyệt đồ thị bắt đầu từ đỉnh B và đỉnh F, chúng ta sẽ sử dụng thuật toán duyệt theo chiều rộng (BFS). Thứ tự duyệt sẽ phụ thuộc vào cách các đỉnh được kết nối trong đồ thị. Khi bắt đầu từ đỉnh B, chúng ta sẽ thăm các đỉnh kề với B trước, sau đó là các đỉnh kề với những đỉnh đã thăm, và cứ tiếp tục như vậy. Tương tự, khi bắt đầu từ đỉnh F, chúng ta sẽ thăm các đỉnh kề với F theo cùng một cách thức.
Để có nhận xét chính xác về thứ tự duyệt, em cần thông tin cụ thể về cách các đỉnh được kết nối cũng như các quy tắc duyệt nếu có. Nếu bạn cung cấp thêm thông tin hoặc mã nguồn của chương trình, em có thể giúp bạn phân tích cụ thể hơn.
Code như sau:
def bft(graph, u): queue initQueue()
visited [vertices.index(u)] = True enqueue(queue, u)
while not is EmptyQueue (queue): u = dequeue(queue) print(u, end = "") for v in graph[u]:
if not visited[vertices.index(v)]:
visited[vertices.index(v)] = True enqueue(queue, v)
#Khởi tạo queue rỗng #Đánh dấu đỉnh u đã duyệt #Thêm đỉnh u vào queue #queue khác rỗng
#Lấy đỉnh u ra khỏi queue #Xử lí đỉnh u
#Xét đỉnh kề v của đỉnh u #Đỉnh v chưa duyệt
#Đánh dấu đỉnh v đã duyệt #Thêm đỉnh v vào queue
#Hàm duyệt graph dạng danh sách kề theo chiều rộng
def bfs(graph):
global visited
visited
[False] * len(graph)
for u in graph:
if not visited [vertices.index(u)]:
bft (graph, u)
#Đánh dấu các đỉnh chưa duyệt #Xét đỉnh u
#Đỉnh u chưa duyệt
#Duyệt đô thị từ đỉnh u
graph, vertices = createAdjListGraph('dothi.txt')
bfs (graph)
#Tạo đồ thị từ tập
CÂU HỎI HOT CÙNG CHỦ ĐỀ
Câu 1:
Từ đồ thị G1 trong Hình 1. Hãy thực hiện yêu cầu sau:
a. Dùng thuật toán duyệt đồ thị theo chiều rộng để tìm đường đi ngắn nhất từ đỉnh C đến tất cả các đỉnh của đồ thị.
b. Từ câu a, mô tả cách duyệt cây theo chiều rộng bắt đầu từ đỉnh C.
Câu 2:
Viết chương trình đếm số nước liên minh với nước đã cho
Yêu cầu: Có N nước, các nước được chia thành các liên minh. Quan hệ liên minh như sau:
nếu nước A liên minh với nước B, nước B liên minh với nước C thì nước A liên minh với nước C. Cho biết nước X, sử dụng thuật toán duyệt đồ thị theo chiều rộng, hãy cho biết có bao nhiêu nước liên minh với nước X.
Dữ liệu vào: Tệp lienminh.txt chứa dữ liệu của các nước. Hàng đầu tiên là danh sách các nước. Các hàng kế tiếp: mỗi hàng chứa một cạnh gồm hai nước liên minh. Hàng cuối cùng là nước X.
Dữ liệu ra: Số nước liên minh với nước X.
Câu 3:
Cho hai đồ thị G3 (Hình 3) và G4 (Hình 4). Dùng thuật toán duyệt đồ thị theo chiều rộng để
thực hiện hai yêu cầu sau:
- Liệt kê thứ tự duyệt các đỉnh của đồ thị G3 xuất phát từ đỉnh A.
- Cho biết đường đi từ đỉnh F đến đỉnh J trong đồ thị G4 ?
Câu 4:
Hãy cho biết thứ tự duyệt các đỉnh với phương pháp duyệt đồ thị theo chiều rộng xuất phát từ đỉnh X của đồ thị G, ở Hình 2.
Câu 5:
Bản đồ giao thông kết nối 8 địa điểm nổi tiếng được mô tả như đồ thị G, (Hình 1). Theo em, có tồn tại một hành trình đi từ địa điểm D đến địa điểm G sao cho phải đi qua ít địa điểm trung gian nhất không? Chỉ ra hành trình đó.
về câu hỏi!