CÁC THUẬT TOÁN DUYỆT đồ THỊ

17 290 1
CÁC THUẬT TOÁN  DUYỆT đồ THỊ

Đ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

CHƯƠNG CÁC THUẬT TOÁN DUYỆT ĐỒ THỊ NỘI DUNG  Các thuật toán duyệt đồ thị  Một số ứng dụng thuật toán duyệt đồ thị 6.1 CÁC PHÉP DUYỆT ĐỒ THỊ  Khái niệm duyệt đồ thị  Thuật toán duyệt đồ thị  Duyệt đồ thị theo chiều sâu  Duyệt đồ thị theo chiều rộng KHÁI NIỆM DUYỆT ĐỒ THỊ  Duyệt đồ thị cách liệt kê tất đỉnh đồ thị thành danh sách tuyến tính - Cho cách “đi qua” tất đỉnh đồ thị để truy nhập, thêm bớt thông tin … - Duyệt đồ thị không phụ thuộc vào hướng cạnh VÍ DỤ 5.1 D B H A E G C F Thứ tự duyệt: A, B, D, H, E, G, F, C 6.2 THUẬT TOÁN DUYỆT ĐỒ THỊ  Cho đồ thị G = (V, E) với x0 đỉnh G  Dùng cấu trúc liệu kiểu danh sách, kí hiệu DS, để chứa đỉnh 6.2 THUẬT TOÁN DUYỆT ĐỒ THỊ (tiếp)  Thuật toán 1) Khởi đầu: DS ← {x0} 2) 3) 4) 5) 6) Lấy đỉnh x khỏi đầu DS Duyệt đỉnh x Nạp đỉnh F(x) vào DS Nếu DS ≠ ∅ quay lên bước 2) Dừng 6.3 DUYỆT ĐỒ THỊ THEO CHIỀU SÂU  Danh sách DS tổ chức theo kiểu stack (danh sách vào sau – trước – LIFO)  Mỗi lần duyệt đỉnh ta duyệt đến tận nhánh chuyển sang duyệt nhánh khác VÍ DỤ 6.2 Thứ tự duyệt đỉnh đồ thị: 13 11 12 15 14 10 6.3 DUYỆT ĐỒ THỊ THEO CHIỀU SÂU (tiếp) Bắt đầu duyệt từ đỉnh x0 đồ thị Chọn x đỉnh kề x0 lặp lại trình duyệt đỉnh x Giả sử xét đỉnh x - Nếu tìm đỉnh y chưa duyệt xét đỉnh tiếp tục trình duyệt - Nếu không đỉnh kề với x chưa duyệt nói đỉnh x duyệt xong, quay trở lại tiếp tục duyệt từ đỉnh mà từ đến đỉnh x - Nếu quay trở lại đỉnh x0 phép duyệt kết thúc 10 6.3 DUYỆT ĐỒ THỊ THEO CHIỀU SÂU (tiếp)  Thuật toán 6.1 (Depth-First Search) Dữ liệu: Biểu diễn mảng DK danh sách kề đồ thị vô hướng G Kết quả: Danh sách đỉnh đồ thị G 11 6.3 DUYỆT ĐỒ THỊ THEO CHIỀU SÂU (tiếp) Thuật toán 6.1 procedure D_SAU (v) ; begin Thăm_đỉnh (v) ; Duyet [v] := true ; for u ∈ DK[v] if ! Duyet [u] then D_SAU (u) ; end ; 12 6.3 DUYỆT ĐỒ THỊ THEO CHIỀU SÂU (tiếp) BEGIN { Chương trình } for v ∈ V Duyet [v] := false ; 10 for v ∈ V 11 if ! Duyet [v] then D_SAU (v) 12 END 13 6.3 DUYỆT ĐỒ THỊ THEO CHIỀU SÂU (tiếp) Nhận xét: - Độ phức tạp: O(n+m) - Đỉnh thăm muộn sớm trở thành duyệt xong - Dùng ngăn xếp lưu trữ đỉnh duyệt để cải tiến thuật toán 14 6.3 DUYỆT ĐỒ THỊ THEO CHIỀU SÂU (tiếp) Thuật toán cải tiến: procedure D_SAU_2 (v) ; begin S := ∅ ; Thăm_đỉnh (v) ; Duyet [v] := true ; push v onto S ; {Nạp v lên đỉnh S } 15 6.3 DUYỆT ĐỒ THỊ THEO CHIỀU SÂU (tiếp) while S ≠ ∅ begin while ∃ u ∈ DK[top(S)] 10 if ! Duyet [u] then 11 begin 12 Thăm_đỉnh (u) ; 13 Duyet [u] := true ; 14 push u onto S 15 end ; 16 pop(S) {Loại bỏ phần tử đỉnh S} 17 end 18 end ; 16 VÍ DỤ 6.3 Đồ thị trình duyệt theo chiều sâu 10 17 [...]...6.3 DUYỆT ĐỒ THỊ THEO CHIỀU SÂU (tiếp)  Thuật toán 6.1 (Depth-First Search) 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 11 6.3 DUYỆT ĐỒ THỊ THEO CHIỀU SÂU (tiếp) Thuật toán 6.1 1 procedure D_SAU (v) ; 2 begin 3 Thăm_đỉnh (v) ; 4 Duyet [v] := true ; 5 for u ∈ DK[v] do 6 if ! Duyet [u] then D_SAU (u) ; 7 end ; 12 6.3 DUYỆT ĐỒ THỊ THEO... 6.3 DUYỆT ĐỒ THỊ THEO CHIỀU SÂU (tiếp) Nhận xét: - Độ phức tạp: O(n+m) - Đỉnh được thăm càng muộn càng sớm trở thành duyệt xong - Dùng một ngăn xếp lưu trữ các đỉnh đang duyệt để cải tiến thuật toán 14 6.3 DUYỆT ĐỒ THỊ THEO CHIỀU SÂU (tiếp) Thuật toán cải tiến: 1 procedure D_SAU_2 (v) ; 2 begin 3 S := ∅ ; 4 Thăm_đỉnh (v) ; 5 Duyet [v] := true ; 6 push v onto S ; {Nạp v lên đỉnh của S } 15 6.3 DUYỆT ĐỒ... := true ; 6 push v onto S ; {Nạp v lên đỉnh của S } 15 6.3 DUYỆT ĐỒ THỊ THEO CHIỀU SÂU (tiếp) 7 while S ≠ ∅ do 8 begin 9 while ∃ u ∈ DK[top(S)] do 10 if ! Duyet [u] then 11 begin 12 Thăm_đỉnh (u) ; 13 Duyet [u] := true ; 14 push u onto S 15 end ; 16 pop(S) {Loại bỏ phần tử ở đỉnh của S} 17 end 18 end ; 16 VÍ DỤ 6.3 Đồ thị và quá trình duyệt theo chiều sâu 5 2 8 1 6 3 9 4 7 10 17 ...  Các thuật toán duyệt đồ thị  Một số ứng dụng thuật toán duyệt đồ thị 6.1 CÁC PHÉP DUYỆT ĐỒ THỊ  Khái niệm duyệt đồ thị  Thuật toán duyệt đồ thị  Duyệt đồ thị theo chiều sâu  Duyệt đồ thị. .. rộng KHÁI NIỆM DUYỆT ĐỒ THỊ  Duyệt đồ thị cách liệt kê tất đỉnh đồ thị thành danh sách tuyến tính - Cho cách “đi qua” tất đỉnh đồ thị để truy nhập, thêm bớt thông tin … - Duyệt đồ thị không phụ... Thứ tự duyệt: A, B, D, H, E, G, F, C 6.2 THUẬT TOÁN DUYỆT ĐỒ THỊ  Cho đồ thị G = (V, E) với x0 đỉnh G  Dùng cấu trúc liệu kiểu danh sách, kí hiệu DS, để chứa đỉnh 6.2 THUẬT TOÁN DUYỆT ĐỒ THỊ (tiếp)

Ngày đăng: 29/12/2015, 21:50

Từ khóa liên quan

Mục lục

  • CHƯƠNG 6 CÁC THUẬT TOÁN DUYỆT ĐỒ THỊ

  • NỘI DUNG

  • 6.1. CÁC PHÉP DUYỆT ĐỒ THỊ

  • KHÁI NIỆM DUYỆT ĐỒ THỊ

  • VÍ DỤ 5.1

  • 6.2. THUẬT TOÁN DUYỆT ĐỒ THỊ

  • 6.2. THUẬT TOÁN DUYỆT ĐỒ THỊ (tiếp)

  • 6.3. DUYỆT ĐỒ THỊ THEO CHIỀU SÂU

  • VÍ DỤ 6.2

  • 6.3. DUYỆT ĐỒ THỊ THEO CHIỀU SÂU (tiếp)

  • Slide 11

  • Slide 12

  • Slide 13

  • Slide 14

  • Slide 15

  • Slide 16

  • VÍ DỤ 6.3

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

Tài liệu liên quan