Tài liệu Depth-First Search (DFS) ppt

23 423 2
Tài liệu Depth-First Search (DFS) ppt

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Các phương pháp duyệt đồ thị Các phương pháp duyệt đồ thị Duyệt theo chiều sâu (Depth-First Search) Duyệt theo chiều rộng (Breadth-First Search) ng Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dö lie va Gia thua Depth-First Search (DFS) Khái niệm DFS đồ thị vô hướng giống ng ng khám phá mê cung với cuộn thùng sơn đỏ để đánh dấu, tránh bị lạc nh ng nh Ta đỉnh s, buộc đầu cuộn vào s đánh dấu đỉnh “đã thăm” Sau ta nh đánh dấu s đỉnh hành u nh nh Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua Khái niệm Bây giờ, ta theo cạnh (u, v) nh Nếu cạnh (u, v) dẫn đến đỉnh “đã nh ng thăm” v, ta quay trở u Nếu đỉnh v đỉnh mới, ta di chuyển đến v không quên lăm cuộn theo Đánh nh dấu đỉnh v “đã thăm” Đặt v thành đỉnh nh hành lặp lại bước trước nh Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua Khái niệm Cuối cùng, ta đến điểm mà ng tất cạnh kề với dẫn đến nh ng đỉnh “đã thăm” Khi đó, ta quay lui ng cách cuộn ngược cuộn quay lại ch trở lại đỉnh kề với cạnh chưa nh khám phá Lại tiếp tục qui trình khám phá Khi trở s không cạnh kề ng nh với chưa bị khám phá lúc DFS dừng ng Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua Thuật toán Depth-First Search Algorithm DFS(v); Algorithm DFS(v); Input:Một đỉnh v đồ thị Input:Mộ đỉnh v củ đồ thị Input:Một đỉnh Output:Một cách gán nhãn cho cạnh Output:Mộ cá Output:Một cách gá nhãn cho cá cạ gán cạnh “được khám phá” “backedge” đươ khám phá” backedge” “được phá hoặ “backedge” for (mọi cạnh e kề với v) mọ cạnh e kề vớ v) for (mọi cạ kề với if cạnh e chưa khám phá then cạ chư đươ phá then if cạnh e chưa khám phá Gọi w đỉnh khác e Gọ w đỉnh củ e Gọi đỉnh khác if đỉnh w đỉnh then đỉnh w đỉnh mớ then if đỉnh đỉnh Gán nhãn e “được khám phá” Gá nhãn e “được phá Gán đươ khám phá” Gọi đệ qui DFS(w) Gọ đệ qui DFS(w) Gọi else else Gán nhãn e “backedge” Gá nhãn e “backedge” Gán backedge” Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua Thuật toán Depth-First Search Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua Xác định đỉnh kề DFS Kết DFS phụ thuộc vào cách ta chọn ch đỉnh Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua Xác định đỉnh kề DFS Nếu ta bắt đầu A thử cạnh nối đến F, sau nh đến B, đến E, C, cuối G ta được: ng Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 10 Xác định đỉnh kề DFS Nếu A theo trình tự: tập cạnh thăm, backedge điểm đệ nh qui khác trước (Hãy tự làm kiểm chứng) ng Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 11 Thuật toán Depth-First Search Bây ta xét bước DFS qua ví dụ ng trên: Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 12 Thuật toán Depth-First Search Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 13 Thuật toán Depth-First Search Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 14 Thuật toán Depth-First Search Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 15 Thuật toán Depth-First Search Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 16 Thuật toán Depth-First Search Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 17 Thuật toán Depth-First Search Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 18 Thuật toán Depth-First Search Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 19 Thuật toán Depth-First Search Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 20 10 Thuật toán Depth-First Search Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 21 Thuật toán Depth-First Search Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dö lie va Gia thua 22 11 Thuật toán Depth-First Search Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 23 Thuật toán Depth-First Search Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 24 12 Thuật toán Depth-First Search Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 25 Thuật toán Depth-First Search Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 26 13 Thuật toán Depth-First Search Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 27 Thuật toán Depth-First Search Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 28 14 Thuật toán Depth-First Search Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 29 Thuật toán Depth-First Search Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 30 15 Thuật toán Depth-First Search Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 31 Thuật toán Depth-First Search Mệnh đề: Gọi G đồ thị vô hướng, nh ng ta thực thao tác DFS với đỉnh bắt đầu s thì: Phép duyệt thăm tất đỉnh ng thành phần liên thông với s nh Các cạnh có nhãn “đã thăm” nh tối đại thành phần liên thông chứa nh s Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 32 16 Thuật toán Depth-First Search Chứng minh: ng Khẳng định hiển nhiên DSF duyệt qua ng tất đỉnh kề với đỉnh hành (Có thể nh chứng minh hoàn chỉnh phản ng ng chứng) ng Khẳng định ta đánh dấu ng ng nh cạnh đến đỉnh nên tạo nh chu trình Như DFS tạo Hơn nữa, DFS thăm tất đỉnh thuộc thành phần liên thông nên tối nh đại Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 33 Độ phức tạp thuật toán Hãy nhớ rằng: ng DFS gọi lần ứng với đỉnh ng ng Mỗi cạnh xem xét lần, lần nh ng từ đỉnh kề với Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 34 17 Độ phức tạp thuật toán Với nS đỉnh mS cạnh thuộc thành phần liên nh nh thông chứa s, phép DFS bắt đầu s chay với thời gian O(nS + mS ) nếu: Đồ thị biểåu diễn bằèng CTDL dạïng danh sáùch đươ bie ba ng da ng sa ch kềà ke Đặt nhãn cho mộät đỉnh làø “đã thăm” vàø kiểåm tra mo đỉnh la va kie xem mộät đỉnh “đã thăm” chưa tốán chi phí mo đỉnh chư to phí O(degree) Bằèng cáùch đặt nhãn cho cáùc đỉnh làø “đã thăm”, ta Ba ng ca ch ca đỉnh la cóù thểå xem xéùt mộät cáùch hệä thông cáùc cạïnh kềà vớùi co the xe mo ca ch he ca ca nh ke vơ đỉnh hiệän hàønh nên ta không xem xéùt mộät cạïnh đỉnh hie nh xe mo ca nh quáù lầàn qua la Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 35 Breadth-First Search (BFS ) 18 Khái niệm Cũng giống DFS, Breadth-First Search ng (BFS) duyệt qua toàn đỉnh thuộc thành phân liên thông đồ thị xác định nh tối đại với số thuộc tính hữu ích: Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 37 Khái niệm Đỉnh xuất phát s mức 0, DFS, xem điểm mốc trình tìm kiếm Ở lượt thứ nhất, cuộn mở dọc theo chiều dài cạnh, tất đỉnh kề với nh điểm mốc (cách điểm mốc cạnh) ch ng nh thăm Các đỉnh đặt mức (các cạnh tương nh ứng vậy) ng Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 38 19 Khái niệm Ở lượt thứ hai, tất đỉnh cách mốc ch cạnh thăm đặt mức nh Qui trình tiếp tục tất đỉnh thăm (được gán vào mức đó) ) Nhãn đỉnh v tương ứng với đường qua ng ng cạnh (ngắn nhất) từ s đến v nh Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 39 Breadth-First Search (BFS ) Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 40 20 Breadth-First Search (BFS ) Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dö lie va Gia thua 41 Breadth-First Search (BFS ) Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 42 21 Thuật toán Breadth-First Search Algorithm BFS(v); Algorithm BFS(v); Input:Một đỉnh v đồ thị Input:Mộ đỉnh vcủ đồ thị Input:Một đỉnh Output:Một cách gán nhãn cho cạnh ““đượckhám phá” Output:Mộ cá gá nhãn chocá cạ đươ khám phá” Output:Một cách gán cạnh phá hoặ ““crossedge” crossedge” crossedge” Khởûi itạïo hàøng đợi iLL để chứa đỉnh ss Khơ ta oha ng đợ đểchứ ỉnh Khở tạ hàng đỉnh i ← 0; i ← 0; while Li ≠≠ ∅ ∅ while Li Taïïo Li+1 = ∅ Ta o L Taï i+1 = ∅ for iđỉnh v ∈ Li for mỗ đỉnh v ∈ Li đỉnh if cạïnh e kềà vớùi i v then if ca nh e ke vô v then cạnh kề vớ Gọïi iw làø đỉnh kháùc củûa e Go wla đỉnh kha ccu a e Gọ đỉnh củ if đỉnh w làø đỉnh mớùi i then if đỉnh wla đỉnh mơ then đỉnh đỉnh mớ Gáùn nhãn e làø ““đượckháùm pháù”” Ga n nhãn ela kha mpha Gá đươ phá Chèøn w vàøo Li+1 Che n w va o L Chè i+1 else else Gán nhãn e ““crossedge” Gá nhãn elà crossedge” Gán crossedge” i ←i + i ←i + Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 43 Các tính chất BFS Mệnh đề: Gọi G đồ thị vô hướng nh ng thực phép duyệt BFS đỉnh s Ta có: Phép duyệt thăm tất đỉnh ng thành phần liên thông với s nh Các cạnh có nhãn “đã thăm” nh tối đại thành phần liên thông chứa s nh mà ta gọi BFS Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 44 22 Các tính chất BFS Với cạnh v mức i, đường nh ng BFS T s v qua i cạnh, đường nh ng khác G s v dài tối thiểu i cạnh nh Nếu (u, v) cạnh không nằm nh BFS, mức u v sai lệch không ch Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 45 Các tính chất BFS Mệnh đề: Gọi G đồ thị vô hướng với n nh ng đỉnh m cạnh Một phép duyệt BFS G tốn nh chi phí O(n + m) Ngoài ra, tồn thuật toán O(n + m) dựa tảng BFS để giải ng toán sau: Kiểm tra tính liên thông G Xác định tối đại G Xác định thành phần liên thông G nh Xác định, với cạnh v ∈ G, số cạnh tối nh nh thiểu cần từ s đến v Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 46 23 ... Thuật toán Depth-First Search Bây ta xét bước DFS qua ví dụ ng trên: Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 12 Thuật toán Depth-First Search. .. va Gia thua 13 Thuật toán Depth-First Search Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dö lie va Gia thua 14 Thuật toán Depth-First Search Dương Anh Đức – Nhậäp... va Gia thua 15 Thuật toán Depth-First Search Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 16 Thuật toán Depth-First Search Dương Anh Đức – Nhậäp

Ngày đăng: 25/01/2014, 13:20

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan