You are on page 1of 55

SLIDE BÀI GIẢNG

MÔN

CẤU TRÚC DỮ LIỆU VÀ


GIẢI THUẬT

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN, KHU PHỐ 6, PHƯỜNG LINH TRUNG, QUẬN THỦ ĐỨC, TP. HỒ CHÍ MINH
1
[T] 08 3725 2002 101 | [F] 08 3725 2148 | [W] www.uit.edu.vn | [E] info@uit.edu.vn
ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT


CHƯƠNG VII

GIỚI THIỆU VỀ ĐỒ THỊ

Nguyễn Trọng Chỉnh


chinhnt@uit.edu.vn
MỤC TIÊU CHƯƠNG VII

 Hiểu các khái niệm về đồ thị, các cấu trúc


đồ thị và biểu diễn đồ thị
 Hiểu các thao tác duyệt trên đồ thị.
 Áp dụng thao tác duyệt trong bài toán xác
định thành phần liên thông
 Cài đặt cấu trúc đồ thị với C++
NỘI DUNG

• Đồ thị và các khái niệm trên đồ thị


• Biểu diễn đồ thị trên máy tính
• Duyệt đồ thị theo chiều sâu và chiều rộng
• Một số ứng dụng

4
ĐỊNH NGHĨA – ĐỒ THỊ CÓ HƯỚNG

5
ĐỊNH NGHĨA – ĐỒ THỊ CÓ HƯỚNG

6
ĐỈNH KỀ

7
ĐỈNH KỀ

8
KHUYÊN, ĐỈNH TREO, ĐỈNH CÔ LẬP

9
CÁC DẠNG ĐỒ THỊ

A B

10
CÁC DẠNG ĐỒ THỊ

11
VÍ DỤ ĐỒ THỊ ĐẦY ĐỦ

K4
K3 K4

K3, 3
K2, 3

12
BẬC CỦA ĐỈNH

13
BẬC CỦA ĐỒ THỊ

14
BẬC CỦA ĐỈNH
• Đỉnh TREO là đỉnh có bậc bằng 1.
• Đỉnh CÔ LẬP là đỉnh có bậc bằng 0.

A B

15
MỐI LIÊN HỆ BẬC – SỐ CẠNH

16
ĐẲNG CẤU ĐỒ THỊ

17
ĐỒ THỊ CON

1 u1 2 1 u1 2

u5
u2 u4 u2 u3
G G1
u3
4 4
3

u6 18
ĐỒ THỊ BỘ PHẬN

1 u1 2 1 u1 2

u5
u2 u4 u2 u4
G G1
u3 u3
4 4
3 3

u6

19
DÂY CHUYỀN, CHU TRÌNH
• Một dây chuyền trong 𝐺 = (𝑋, 𝑈) là một đồ thị con
𝐶 = (𝑉, 𝐸) của 𝐺 với:
– 𝑉 = 𝑥1 , 𝑥2 , … , 𝑥𝑀
– 𝐸 = 𝑢1 , 𝑢2 , … , 𝑢𝑀−1 với 𝑢1 = 𝑥1 𝑥2 , 𝑢2 =
𝑥2 𝑥3 ,…, 𝑢M−1 = 𝑥M−1 𝑥𝑀 ; liên kết 𝑥𝑖 𝑥𝑖+1 không
phân biệt thứ tự
• Khi đó, 𝑥1 và 𝑥𝑀 được nối với nhau bằng dây
chuyền 𝐶. 𝑥1 là đỉnh đầu và 𝑥𝑀 là đỉnh cuối của 𝐶.
• Số cạnh của 𝐶 được gọi là độ dài của 𝐶.
• Khi các cạnh hoàn toàn xác định bởi cặp đỉnh kề,
dây chuyền có thể viết gọn (𝑥1 , 𝑥2 , … , 𝑥𝑀 )
20
DÂY CHUYỀN, CHU TRÌNH
• Dây chuyền SƠ CẤP: dây chuyền không có đỉnh
lặp lại.

• CHU TRÌNH: là một dây chuyền có đỉnh đầu và


đỉnh cuối trùng nhau.

21
THÀNH PHẦN LIÊN THÔNG
• Một thành phần liên thông của một đồ thị vô
hướng là một đồ thị con trong đó:
– Giữa bất kì hai đỉnh nào đều có đường đi đến
nhau, và
– Không thể nhận thêm bất kì một đỉnh nào mà vẫn
duy trì tính chất trên.

22
THÀNH PHẦN LIÊN THÔNG

H
G

23
THÀNH PHẦN LIÊN THÔNG

24
THÀNH PHẦN LIÊN THÔNG

25
BIỂU DIỄN ĐỒ THỊ BẰNG MA TRẬN

26
BIỂU DIỄN ĐỒ THỊ BẰNG MA TRẬN KỀ

4
2

27
BIỂU DIỄN ĐỒ THỊ BẰNG MA TRẬN

28
THÀNH PHẦN LIÊN THÔNG
• Ma trận của đồ thị vô hướng:
– Xét đồ thị 𝐺 = (𝑋, 𝑈) vô hướng, giả sử tập 𝑋 gồm 𝑁
đỉnh và được sắp thứ tự 𝑋 = 𝑥1 , 𝑥2 , … , 𝑥𝑁 , tập 𝑈
gồm 𝑀 cạnh và được sắp thứ tự 𝑈 =
𝑢1 , 𝑢2 , … , 𝑢𝑀 .
– Ma trận của 𝐺, ký hiệu 𝐴(𝐺), là ma trận nhị phân
𝑁x𝑀: 𝐴 = (𝐴𝑖𝑗 ) với 𝐴𝑖𝑗 được định nghĩa:
• 𝐴𝑖𝑗 = 𝐴𝑗𝑖 = 1 nếu đỉnh 𝑥𝑖 kề với đỉnh 𝑥𝑗 ,
• 𝐴𝑖𝑗 = 𝐴𝑗𝑖 = 0 nếu ngược lại.

29
BIỂU DIỄN ĐỒ THỊ BẰNG MA TRẬN KỀ

4
2

30
BIỂU DIỄN ĐỒ THỊ BẰNG MA TRẬN
TRỌNG SỐ

1
e1 e4

e2
e3 4
2

e6
e5
3

31
CÀI ĐẶT BẰNG NGÔN NGỮ C++

#define MaxV 20 // số đỉnh cực đại của đồ thị

int A[MaxV][MaxV]; //Ma trận kề

int ChuaXet[MaxV]; // sử dụng xét thành phần


liên thông

32
DUYỆT THEO CHIỀU CHIỀU SÂU - DFS

33
DUYỆT ĐỒ THỊ

Void DFS (int v)

{
Gắn nhãn v đã duyệt;
for (u = 1; u <= n; u++)
if (u tồn tại trong danh sách kề V)
if(u có nhãn là 0)
{
Xử lý đỉnh u; //Gắn nhãn 1
DFS (u);
}
}

34
DUYỆT THEO CHIỀU CHIỀU SÂU - DFS

35
DUYỆT THEO CHIỀU CHIỀU SÂU - DFS

36
DUYỆT THEO CHIỀU CHIỀU SÂU - DFS

37
DUYỆT THEO CHIỀU CHIỀU SÂU - DFS

38
DUYỆT THEO CHIỀU CHIỀU SÂU - DFS

39
DUYỆT THEO CHIỀU CHIỀU SÂU - DFS

40
DUYỆT THEO CHIỀU CHIỀU SÂU - DFS

41
DUYỆT THEO CHIỀU CHIỀU SÂU - DFS

42
DUYỆT THEO CHIỀU CHIỀU SÂU - DFS

43
DUYỆT THEO CHIỀU RỘNG - BFS
Thuật toán duyệt theo chiều rộng (BFS)
• Sử dụng một cấu trúc dữ liệu hàng đợi để lưu trữ thông
tin trung gian thu được trong quá trình tìm kiếm:
• Chèn đỉnh gốc vào hàng đợi (đang hướng tới)
• Lấy ra đỉnh đầu tiên trong hàng đợi và quan sát nó
– Nếu đỉnh này chính là đỉnh đích, dừng quá trình tìm kiếm và
trả về kết quả.
– Nếu không phải thì chèn tất cả các đỉnh kề với đỉnh vừa thăm
nhưng chưa được quan sát trước đó vào hàng đợi.
• Nếu hàng đợi là rỗng, thì tất cả các đỉnh có thể đến được
đều đã được quan sát – dừng việc tìm kiếm và trả về
"không thấy".
• Nếu hàng đợi không rỗng thì quay về bước 2.

44
DUYỆT THEO CHIỀU RỘNG - BFS

45
DUYỆT THEO CHIỀU RỘNG - BFS

46
DUYỆT THEO CHIỀU RỘNG - BFS

47
DUYỆT THEO CHIỀU RỘNG - BFS

48
DUYỆT THEO CHIỀU RỘNG - BFS

49
DUYỆT THEO CHIỀU RỘNG - BFS

50
DUYỆT THEO CHIỀU RỘNG - BFS

51
DUYỆT THEO CHIỀU RỘNG - BFS

52
DUYỆT THEO CHIỀU RỘNG - BFS

53
DUYỆT THEO CHIỀU RỘNG - BFS

54
BÀI TẬP
1. Tìm hiểu và cài đặt hàm biểu diễn đồ thị bằng danh
sách liên kết.

2. Viết hàm xác định số thành phần liên thông của đồ thị
và cho biết đồ thị có liên thông

3. Viết hàm cho biết đồ thị có chu trình không ? Nếu có


liệt kê các chu trình của đồ thị?

55

You might also like