1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài giảng lý thuyết đồ thị chương 6 pgs ts hoàng chí thành

37 1 0

Đ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

Thông tin cơ bản

Tiêu đề Bài Giảng Lý Thuyết Đồ Thị Chương 6 PGS TS Hoàng Chí Thành
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Lý Thuyết Đồ Thị
Thể loại Bài giảng
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 37
Dung lượng 405,09 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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... - Nếu tìm được đỉnh y chưa được duyệt thì xét đỉnh nà

Trang 1

CHƯƠNG 6

CÁC THUẬT TOÁN

DUYỆT ĐỒ THỊ

Trang 2

NỘI DUNG

Các thuật toán duyệt đồ thị

Một số ứng dụng của các thuật toán duyệt đồ thị

Trang 3

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

Trang 4

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

 Duyệt đồ thị là một cách liệt kê tất cả các đỉnh của

Trang 5

Thứ tự duyệt: A, B, D, H, E, G, F, C

Trang 6

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

Cho đồ thị G = (V, E) với x 0 là một đỉnh của G

Dùng một cấu trúc dữ liệu kiểu danh sách, kí hiệu là

DS, để chứa các đỉnh

Trang 7

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

Trang 8

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

Danh sách DS được tổ chức theo kiểu stack (danh

sách vào sau – ra trước – LIFO).

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

Trang 9

VÍ DỤ 6.2

Thứ tự duyệt của các đỉnh trên đồ thị:

4 3

2

10

13 14

15

Trang 10

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

1 Bắt đầu duyệt từ một đỉnh x 0 nào đó của đồ thị

2 Chọn x là đỉnh kề nào đó của x0 và lặp lại quá trình

duyệt đối với đỉnh x Giả sử đang xét đỉnh x.

- Nếu tìm được đỉnh y chưa được duyệt thì xét đỉnh

này và bắt đầu từ đó tiếp tục quá trình duyệt

- Nếu không còn đỉnh kề với x chưa được duyệt thì nói rằng đỉnh x đã duyệt xong, quay trở lại tiếp

tục duyệt từ đỉnh mà từ đó đến được đỉnh x

- Nếu quay trở lại đúng đỉnh x 0 thì phép duyệt kếtthúc

Trang 11

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.

Trang 12

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

Trang 13

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

Trang 14

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

Trang 15

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

Thuật toán cải tiến:

Trang 16

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

Trang 18

6.4 DUYỆT ĐỒ THỊ THEO CHIỀU RỘNG

Danh sách DS được tổ chức theo kiểu hàng đợi (danh

sách vào trước - ra trước – FIFO).

- Việc duyệt có tính chất “lan rộng”

- Đỉnh được duyệt xong ngay sau khi ta đã xét hết tất cả các đỉnh kề với nó

- Đỉnh được xét càng sớm thì sớm trở thành duyệt xong

Trang 19

1 2

1 3

1 5 1

2

Trang 20

6.4 DUYỆT ĐỒ THỊ THEO CHIỀU RỘNG (tiếp)

 Thuật toán 6.3 (Breadth-First Search )

Trang 21

6.4 DUYỆT ĐỒ THỊ THEO CHIỀU RỘNG (tiếp)

Trang 22

6.4 DUYỆT ĐỒ THỊ THEO CHIỀU RỘNG (tiếp)

Trang 24

6.5 MỘT SỐ ỨNG DỤNG CỦA PHÉP DUYỆT ĐỒ THỊ

Bài toán đường đi

Bài toán tìm các mảng liên thông

Trang 25

BÀI TOÁN ĐƯỜNG ĐI

Cho G = (V, E) là một đồ thị vô hướng và hai đỉnh a,

b  V.

Bài toán: Tìm đường đi từ đỉnh a đến đỉnh b trên đồ thị G (nếu có).

Trang 26

BÀI TOÁN ĐƯỜNG ĐI (tiếp)

1 Thuật toán Warshall đã trả lời:

có đường đi từ đỉnh a đến đỉnh b  AS[a, b] = true.

2 Dùng phép duyệt đồ thị tìm đường đi (nếu có) từ

đỉnh a đến đỉnh b.

Trang 27

BÀI TOÁN ĐƯỜNG ĐI (tiếp)

Sau lời gọi thủ tục D_SAU(a) hoặc D_RONG(a)

- Nếu Duyet[b] = false thì không có đường đi từ

đỉnh a đên đỉnh b.

- Nếu Duyet[b] = true thì b thuộc cùng mảng liên thông với a và có đường đi từ a đến b

Dùng thêm một biến mảng Truoc để khôi phục đường

đi, Truoc [u] ghi đỉnh đến trước đỉnh u trên đường

Trang 28

BÀI TOÁN ĐƯỜNG ĐI (tiếp)

Sửa dòng lệnh 6 trong thủ tục D_SAU(a)

6 if ! Duyet [u] then

begin Truoc [u] := v ; D_SAU(u) end ;

 Sửa các dòng lệnh 11-15 trong thủ tục D_RONG (v):

11 if ! Duyet [u] then

14 Duyet [u] := true ; Truoc [u] := z

15 end ;

Trang 29

BÀI TOÁN ĐƯỜNG ĐI (tiếp)

Khôi phục đường đi cần tìm:

b  a 1 = Truoc[b]  a 2 = Truoc[a 1 ]   a

Đường đi tìm được theo thuật toán duyệt theo chiều

rộng là đường đi ngắn nhất từ đỉnh a đến đỉnh b.

Trang 31

BÀI TOÁN TÌM CÁC MẢNG

LIÊN THÔNG

Bài toán: Tìm số mảng liên thông p của đồ thị G và

xác định xem mỗi mảng liên thông bao gồm nhữngđỉnh nào

Trang 32

BÀI TOÁN TÌM CÁC MẢNG

LIÊN THÔNG (tiếp)

Do thủ tục D_SAU(v) hoặc D_RONG(v) duyệt tất

cả các đỉnh thuộc cùng mảng liên thông với đỉnh v nên

số mảng liên thông p của đồ thị G bằng số lần gọi các thủ tục D_SAU(v) hoặc D_RONG(v).

Dùng thêm biến mảng Mang[v] ghi chỉ số của mảng liên thông chứa v.

Trang 33

BÀI TOÁN TÌM CÁC MẢNG

LIÊN THÔNG (tiếp)

Dùng biến p đếm số mảng liên thông và gán chỉ số

cho các mảng liên thông tìm được

1 Khởi tạo: p := 0 ;

2 Thêm lệnh gán: Mang [v] := p ; trong thủ tục

Thăm_đỉnh(v).

Trang 34

BÀI TOÁN TÌM CÁC MẢNG

LIÊN THÔNG (tiếp)

Sửa lại chương trình chính của thuật toán duyệt:

Trang 35

BÀI TOÁN TÌM CÁC MẢNG

LIÊN THÔNG (tiếp)

Khi kết thúc chương trình:

 Biến p cho số mảng liên thông.

 Các giá trị Mang[v] , v  V cho phép liệt kê tất

cả các đỉnh trong từng mảng liên thông

Trang 36

4

3

Trang 37

VÍ DỤ 6.7 (tiếp)

Quá trình duyệt và tìm các mảng liên thông:

Ngày đăng: 21/07/2023, 16:50

HÌNH ẢNH LIÊN QUAN

Đồ thị và quá trình duyệt theo chiều sâu - Bài giảng lý thuyết đồ thị chương 6   pgs ts  hoàng chí thành
th ị và quá trình duyệt theo chiều sâu (Trang 17)
Đồ thị và quá trình duyệt theo chiều rộng: - Bài giảng lý thuyết đồ thị chương 6   pgs ts  hoàng chí thành
th ị và quá trình duyệt theo chiều rộng: (Trang 23)
Đồ thị và quá trình duyệt theo chiều rộng: - Bài giảng lý thuyết đồ thị chương 6   pgs ts  hoàng chí thành
th ị và quá trình duyệt theo chiều rộng: (Trang 30)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm