1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 5 - Trường ĐH Văn Lang

51 11 1

Đ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 đề Chương 5 - Trường ĐH Văn Lang
Trường học Trường Đại học Văn Lang
Chuyên ngành Cấu trúc dữ liệu và giải thuật
Thể loại Bài giảng
Định dạng
Số trang 51
Dung lượng 2,98 MB

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

Nội dung

Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 5 Lý thuyết đồ thị, cung cấp cho người học những kiến thức như: giới thiệu đồ thị; biểu diễn đồ thị; thuật toán duyệt đồ thị; bài toán tìm đường ngắn nhất. Mời các bạn cùng tham khảo!

Trang 3

GIỚI THIỆU

• Đồ thị là một cấu trúc dữ liệu trừu tượng dựa trên các khái niệm

toán học về đồ thị

• Đồ thị được xem là tổng quát hóa của cấu trúc cây Tuy nhiên,

đồ thị có mối quan hệ phức tạp hơn là quan hệ cha-con trong

cấu trúc cây

• Đồ thị được sử dụng trong nhiều ứng dụng như cây gia phả,

mạng quản lý chuyến bay v.v…

Trang 5

GIỚI THIỆU

• Một đồ thị G có thể có hướng hoặc vô hướng

• Nếu đồ thị có hướng thì cạnh nối hai đỉnh có mũi tên đại diện

cho hướng nối

Trang 6

BIỂU DIỄN ĐỒ THỊ TRÊN MÁY TÍNH

1 SỬ DỤNG MA TRẬN KỀ

• Hai đỉnh kề nhau nếu có cạnh nối giữa chúng

• Ta dùng một ma trận với dòng, cột biểu diễn cho các đỉnh của

Trang 7

BIỂU DIỄN ĐỒ THỊ TRÊN MÁY TÍNH

Trang 8

BIỂU DIỄN ĐỒ THỊ TRÊN MÁY TÍNH

7 2

Trang 9

BIỂU DIỄN ĐỒ THỊ TRÊN MÁY TÍNH

7 2

Trang 10

BIỂU DIỄN ĐỒ THỊ TRÊN MÁY TÍNH

2 SỬ DỤNG DANH SÁCH KỀ

• Danh sách kề gồm các đỉnh của đồ thị V(G)

• Mỗi đỉnh vi là một danh sách liên kết lưu trữ những đỉnh vj , vj+1,

… nối tới vi

• Thường dùng để lưu đồ thị nhỏ và vừa

• Biểu diễn đồ thị thưa (có ít cạnh nối) trong bộ nhớ máy tính

Trang 11

BIỂU DIỄN ĐỒ THỊ TRÊN MÁY TÍNH

Trang 12

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

1 DUYỆT THEO CHIỀU RỘNG

• Duyệt theo chiều rộng (Breadth-First Search) đồ thị vô hướng

Xuất phát từ đỉnh A

Trang 13

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

1 DUYỆT THEO CHIỀU RỘNG

• Duyệt theo chiều rộng (Breadth-First Search) đồ thị vô hướng

D

B1: Xuất phát từ đỉnh AB2: Đi qua đỉnh B, D

Trang 14

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

1 DUYỆT THEO CHIỀU RỘNG

• Duyệt theo chiều rộng (Breadth-First Search) đồ thị vô hướng

B1: Xuất phát từ đỉnh AB2: Đi qua đỉnh B, D

B3: Xuất phát từ đỉnh BB4: Đi qua đỉnh C

D

Trang 15

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

1 DUYỆT THEO CHIỀU RỘNG

• Duyệt theo chiều rộng (Breadth-First Search) đồ thị vô hướng

B1: Xuất phát từ đỉnh AB2: Đi qua đỉnh B, D

B3: Xuất phát từ đỉnh BB4: Đi qua đỉnh C

B5: Xuất phát từ đỉnh D

D

Trang 16

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

1 DUYỆT THEO CHIỀU RỘNG

• Duyệt theo chiều rộng (Breadth-First Search) đồ thị vô hướng

B1: Xuất phát từ đỉnh A B2: Đi qua đỉnh B, D B3: Xuất phát từ đỉnh B B4: Đi qua đỉnh C

B5: Xuất phát từ đỉnh D B6: Đi qua đỉnh E

Dừng thuật toán

Trang 17

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

1 DUYỆT THEO CHIỀU RỘNG

GIẢI THUẬT : Duyệt theo chiều rộng (BFS)

procedure BFS(G: đồ thị với các đỉnh v1, v2, …, vn)

T := cây chỉ chứa một đỉnh ban đầu v1

L := danh sách rỗng dùng để chứa các đỉnh đã đi qua

Đặt đỉnh v1 vào danh sách L

while L không rỗng

remove đỉnh v1 từ L

for mỗi đỉnh kề w với đỉnh v1 do

if w không có trong L and không có trong T then

add w vào L

add w and cạnh {v1, w} vào T

Trang 18

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

1 DUYỆT THEO CHIỀU RỘNG

Độ phức tạp không gian

• Tất cả các đỉnh tại mức đang xét sẽ được lưu cho đến khi các

đỉnh kề được đi qua

• Độ phức tạp không gian tỉ lệ thuận với số đỉnh ở mức sâu nhất

của đồ thị

• Cho đồ thị có b là số đỉnh kề của mỗi đỉnh và chiều sâu d Độ

phức tạp không gian là số đỉnh ở mức sâu nhất O(bd)

Trang 19

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

1 DUYỆT THEO CHIỀU RỘNG

Độ phức tạp thời gian

Trường hợp xấu nhất, BFS phải duyệt tất cả đường đi tới các

đỉnh Độ phức tạp thời gian xấp xỉ O(bd)

Tính đầy đủ

BFS có tính đầy đủ vì nó sẽ tìm tất cả các đỉnh không phân biệt

loại đồ thị (vô hướng, có hướng, có trọng số…)

Trang 20

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

2 DUYỆT THEO CHIỀU SÂU

Duyệt theo chiều sâu (Depth-First Search) đồ thị vô hướng

Xuất phát từ đỉnh A

Trang 21

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

2 DUYỆT THEO CHIỀU SÂU

Duyệt theo chiều sâu (Depth-First Search) đồ thị vô hướng

B2: Đi qua đỉnh B

Trang 22

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

2 DUYỆT THEO CHIỀU SÂU

Duyệt theo chiều sâu (Depth-First Search) đồ thị vô hướng

B1: Xuất phát từ đỉnh AB2: Đi qua đỉnh B

B3: Đi qua đỉnh C

Trang 23

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

2 DUYỆT THEO CHIỀU SÂU

Duyệt theo chiều sâu (Depth-First Search) đồ thị vô hướng

B1: Xuất phát từ đỉnh AB2: Đi qua đỉnh B

B3: Đi qua đỉnh CB4: Đi qua E

E

Trang 24

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

2 DUYỆT THEO CHIỀU SÂU

Duyệt theo chiều sâu (Depth-First Search) đồ thị vô hướng

B1: Xuất phát từ đỉnh AB2: Đi qua đỉnh B

B3: Đi qua đỉnh CB4: Đi qua E

B5: Đi qua D

Trang 25

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

2 DUYỆT THEO CHIỀU SÂU

THUẬT TOÁN : Duyệt theo chiều sâu (DFS)

procedure DFS(G: đồ thị với các đỉnh v1, v2, …, vn)

T := cây chứa một đỉnh ban đầu v1

visit(v1)

procedure visit(v: đỉnh của G)

for mỗi đỉnh w kề v và không trong T do

add đỉnh w và cạnh {v, w} vào Tvisit(w)

Trang 26

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

2 DUYỆT THEO CHIỀU SÂU

Độ phức tạp không gian

Độ phức tạp không gian của DFS thấp hơn BFS

Độ phức tạp thời gian

Tỉ lệ thuận với số đỉnh và số cạnh trong đồ thị đã được duyệt Độ

phức tạp thời gian là O(|V| + |E|)

Tính đầy đủ

DFS có tính đầy đủ vì nó sẽ tìm tất cả các đỉnh không phân biệt

loại đồ thị (vô hướng, có hướng, có trọng số…)

Trang 27

THUẬT TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT

1 CÂY KHUNG TỐI THIỂU

Giới thiệu cây khung tối thiểu

• Cây khung của đồ thị G là cây kết nối tất cả các đỉnh

• Cây khung tối thiểu là cây có tổng trọng số của các cạnh nhỏ nhất

Trang 28

THUẬT TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT

2 THUẬT TOÁN PRIM

B1: Xuất phát đỉnh T: {A}

Trang 29

THUẬT TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT

2 THUẬT TOÁN PRIM

Trang 30

THUẬT TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT

2 THUẬT TOÁN PRIM

B1: Xuất phát đỉnh T:= {A}

B2: chọn đỉnh B vì có trọng số nhỏ

trong những đỉnh kề với AB3: Từ tập {A, B} xét các đỉnh kềVới chúng {C, D}, chọn đỉnh C

3

Trang 31

THUẬT TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT

2 THUẬT TOÁN PRIM

B1: Xuất phát đỉnh T: = {A}

B2: chọn đỉnh B vì có trọng số nhỏ

trong những đỉnh kề với AB3: Từ tập {A, B} xét các đỉnh kềVới chúng {C, D}, chọn đỉnh CB4: Chọn D

Trang 32

THUẬT TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT

2 THUẬT TOÁN PRIM

GIẢI THUẬT : PRIM

procedure Prim(G: đồ thị gồm các đỉnh v1, v2, …, vn)

T := {v1}

for i := 0 to n – 2 do

e := chọn cạnh có trọng số nhỏ nhất nối tớiđỉnh trong T và không tạo chu trình trong T

T := T U e

return T

Trang 33

THUẬT TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT

3 THUẬT TOÁN KRUSKAL

B1: Chọn cạnh có trọng số nhỏ nhất

CD = 2 và thêm vào T := {(C, D)}

Trang 34

THUẬT TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT

3 THUẬT TOÁN KRUSKAL

Trang 35

THUẬT TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT

3 THUẬT TOÁN KRUSKAL

Trang 36

THUẬT TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT

3 THUẬT TOÁN KRUSKAL

THUẬT TOÁN : KRUSKAL

procedure Kruskal(G: đồ thị gồm các đỉnh v1, v2, …, vn)

T := ∅

for i := 1 to n – 1 do

e := chọn bất kỳ cạnh trong G có trọng số nhỏnhất nhưng không tạo chu trình trong T

T := T U e

return T

Trang 37

THUẬT TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT

4 THUẬT TOÁN DIJKSTRA

• Tìm đường đi ngắn nhất giữa 2 đỉnh trong một đồ thị

• Chỉ thực hiện trên trọng số dương

• Áp dụng cho đồ thị vô hướng và có hướng

Trang 38

THUẬT TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT

4 THUẬT TOÁN DIJKSTRA

e

c b

Trang 39

THUẬT TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT

4 THUẬT TOÁN DIJKSTRA

e

c b

Trang 40

THUẬT TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT

4 THUẬT TOÁN DIJKSTRA

e

c b

d(f) = min d f , d a + w a, f =min ∞, 0 + 2 = 2

d(c) = ∞d(e) = ∞

Trang 41

THUẬT TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT

4 THUẬT TOÁN DIJKSTRA

e

c b

Trang 42

THUẬT TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT

4 THUẬT TOÁN DIJKSTRA

e

c b

d(e) = min(5, d(b)+w(b, e)) =min(5, 4 + 3) = 5

Trang 43

THUẬT TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT

4 THUẬT TOÁN DIJKSTRA

e

c b

d(c) = 7d(e) = 5d(d) = min ∞, 𝑑 𝑒 + 𝑤 𝑒, 𝑑 =min ∞, 5 + 1 = 6

Trang 44

THUẬT TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT

4 THUẬT TOÁN DIJKSTRA

e

c b

d(c) = min(7, d(d) + w(d, c))=min(7, 6 + 2) = 7

d(e) = 5 (đã đi qua)

Trang 45

THUẬT TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT

4 THUẬT TOÁN DIJKSTRA

e

c b

Trang 46

THUẬT TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT

4 THUẬT TOÁN DIJKSTRA

e

c b

Trang 47

THUẬT TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT

4 THUẬT TOÁN DIJKSTRA

THUẬT TOÁN DIJKSTRA

Trang 49

3 2

2

4

5

1 3

2

Ngày đăng: 27/01/2023, 08:44

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

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

w