Đang chuẩn bị nút TẢI XUỐNG, xin hãy chờ
Tải xuống
Các thuật toán duyệt đồ thị Phép duyệt đồ thị là một cách liệt kê tất cả các đỉnh của đồ thị này thành một danh sách tuyến tính. Hay nói một cách khác, phép duyệt đồ thị cho ta một cách “đi qua” tất cả các đỉnh của đồ thị để truy nhập, thêm bớt thông tin ở các đỉnh của đồ thị đó. Phép duyệt đồ thị không phụ thuộc vào hướng của các cạnh. Do vậy, với đồ thị có hướng thì ta vô hướng hoá trước khi duyệt. . | BÀI 11 Chương 6 Các thuật toán duyệt đồ thị Phép duyệt đồ thị là một cách liệt kê tất cả các đỉnh của đồ thị này thành một danh sách tuyến tính. Hay nói một cách khác phép duyệt đồ thị cho ta một cách đi qua tất cả các đỉnh của đồ thị để truy nhập thêm bớt thông tin ở các đỉnh của đồ thị đó. Phép duyệt đồ thị không phụ thuộc vào hướng của các cạnh. Do vậy với đồ thị có hướng thì ta vô hướng hoá trước khi duyệt. 6.1. Các thuật toán duyệt đồ thị 6.1.1. Thuật toán duyệt đồ thị Giả sử G V E là đồ thị đã cho và Vo là một đỉnh nào đó của G. Ký hiệu DS là một cấu trúc dữ liệu kiểu danh sách dùng để chứa các đỉnh. 1 Khởi đầu DS x0 2 Lấy đỉnh X ra khỏi đầu DS 3 Duyệt đỉnh X 4 Nạp các đỉnh của F x vào DS 5 Nếu DS 0 thì quay lên bước 2 6 Dừng 6.1.2. Duyệt theo chiều sâu Depth-First Search Nếu trong thuật toán trên danh sách DS được tổ chức theo kiểu stack danh sách vào sau - ra trước - LIFO thì ta có phương pháp duyệt theo chiều sâu. Trong phương pháp này mỗi lần duyệt một đỉnh ta duyệt đến tận cùng mỗi nhánh rồi mới chuyển sang duyệt nhánh khác. Giả sử G V E là một đồ thị vô hướng. Ta bắt đầu duyệt từ một đỉnh x0 nào đó của đồ thị. Sau đó chọn X là đỉnh kề nào đó của Xo và lặp lại quá trình duyệt đối với đỉnh X. Giả sử ta đang xét đỉnh X. Nếu trong số các đỉnh kề với X ta tìm được đỉnh y chưa được duyệt thì ta sẽ xét đỉnh này và bắt đầu từ đó ta tiếp tục quá trình duyệt. Ngược lại nếu không còn đỉnh nào kề với x chưa được duyệt thì ta nói rằng đỉnh x đã duyệt xong và quay trở lại tiếp tục duyệt từ đỉnh mà từ đó ta đến được đỉnh x. Nếu quay trỏ lại đúng đỉnh x0 thì phép duyệt kết thúc. Thuật toán 6.1 Duyệt đồ thị theo chiều sâu Dữ liệu Biểu diễn mảng DK các danh sách kề của đồ thị vô hướng G. Kết quả Danh sách các đỉnh của đồ thị G. 1 procedure D_SAU v 2 begin 3 Thăm_đỉnh v 4 Duyet v true 5 for u G DK v do 6 if Duyet u then D_SAU u 7 end 8 BEGIN 9 for v G V do Duyet v false 10 for v G V do 11 if Duyet v then D_SAU v 12 END. Chương trình chính Độ phức tạp của thật toán là O n