Duyệt Đồ Thị Theo Chiều Sâu C++
Trong khi giải nhiều việc được mô hình hoá bằng đồ thị, ta nên đi qua những đỉnh và những cung của đồ dùng thị một cách tất cả hệ thống. Câu hỏi đi qua các đỉnh của vật thị một cách có khối hệ thống như vậy gọi là chú ý đồ thị. Gồm hai phép lưu ý đồ thị phổ biến đó là ưng chuẩn theo chiều sâu, tương tự như cẩn thận tiền từ bỏ một cây, và thông qua theo chiều rộng, tương tự như như phép chú ý cây theo mức.
Bạn đang xem: Duyệt đồ thị theo chiều sâu c++
1. Chăm nom theo chiều sâu (depth-first search)
Giả sử ta tất cả đồ thị G=(V,E) với những đỉnh ban sơ được đánh dấu là không duyệt (unvisited). Xuất phát từ một đỉnh v nào kia ta ban đầu duyệt như sau: ghi lại v sẽ duyệt, với từng đỉnh w không duyệt kề với v, ta tiến hành đệ qui quá trình trên cho w. Sở dĩ cách duyệt này có tên là chăm chút theo chiều sâu vày nó sẽ coi xét theo 1 phía nào đó sâu nhất có thể được. Giải thuật duyệt theo chiều sâu một thứ thị có thể được trình diễn như sau, trong các số ấy ta cần sử dụng một mảng mark tất cả n thành phần để đánh dấu các đỉnh của đồ vật thị là đã coi xét hay chưa.//đánh dấu không duyệt toàn bộ các đỉnhfor (v =1; v 1>=unvisited;//duyệt theo hướng sâu từ đỉnh đánh tiên phong hàng đầu for (v = 1; vif (mark
Ví dụ coi ngó theo chiều sâu thứ thị hình V.4 bắt đầu từ đỉnh A: thông qua A, A có những đỉnh kề là B,C,D; theo trang bị tự đó thì B được duyệt. B có một đỉnh kề không duyệt là F, yêu cầu F được duyệt. F có các đỉnh kề không duyệt là D,G; theo thiết bị tự đó thì ta săn sóc D. D có những đỉnh kề không duyệt là C,E,G; theo trang bị tự đó thì C được duyệt. Những đỉnh kề với C những đã được ưng chuẩn nên lời giải được tiếp tục duyệt E. E bao gồm một đỉnh kề chưa duyệt là G, vậy ta để ý G. Hôm nay tất cả các nút đầy đủ đã được duyệt nên đồ thị sẽ được chú tâm xong. Vậy thiết bị tự những đỉnh được chăm chút là ABFDCEG.

2. Chu đáo theo chiều rộng lớn (breadth-first search)
Giả sử ta tất cả đồ thị G với các đỉnh ban đầu được khắc ghi là chưa duyệt (unvisited). Xuất phát từ một đỉnh v nào đó ta bắt đầu duyệt như sau: khắc ghi v đã có được duyệt, kế đến là duyệt tất cả các đỉnh kề cùng với v. Lúc ta coi sóc một đỉnh v rồi đến đỉnh w thì các đỉnh kề của v được xem xét trước các đỉnh kề của w, bởi vì vậy ta dùng một hàng để lưu trữ những nút theo đồ vật tự được chuyên chú để rất có thể duyệt các đỉnh kề cùng với chúng. Ta cũng sử dụng mảng một chiều mark để đánh dấu một nút là đã coi sóc hay chưa, giống như như chăm chút theo chiều sâu. Lời giải duyệt theo chiều rộng được viết như sau://đánh dấu chưa duyệt toàn bộ các đỉnhfor (v = 1; v1> = unvisited;//n là số đỉnh của đồ thị//duyệt theo chiều rộng lớn từ đỉnh đánh số 1 for (v = 1; vif (markVí dụ để ý theo chiều rộng vật dụng thị hình V.4. Trả sử ban đầu duyệt từ A. Săn sóc A, kế đến duyệt tất cả các đỉnh kề với A; chính là B, C, D theo thứ tự đó. Tiếp nối là duyệt những đỉnh kề của B, C, D theo trang bị tự đó. Vậy những nút được duyệt tiếp sau là F, E,G. Có thể minh hoạ hoạt động của hàng trong phép lưu ý trên như sau:

Xem thêm: Soạn Bài 5 Địa Lí 11 - Bài 5: Một Số Vấn Đề Của Châu Phi




Xem thêm: Cháy Lên Đi Lửa Thiêng Cao Nguyên (Trần Tiến), Lời Bài Hát Ngọn Lửa Cao Nguyên

