Bài giảng Toán rời rạc 2 - Chương 2: Biểu diễn đồ thị trên máy tính - Ngô Xuân Bách

Học viện Công nghệ Bưu chính Viễn thông  
Khoa Công nghệ thông tin 1  
Toán ri rc 2  
Biu din đthtrên máy tính  
Ngô Xuân Bách  
Ni dung  
Biểu diễn đồ thị bằng ma trận kề  
Biểu diễn đồ thị bằng ma trận liên thuộc  
Biểu diễn đồ thị bằng danh sách cạnh  
Biểu diễn đồ thị bằng danh sách kề  
2
Ma trn kca đthvô hướng (1/2)  
Xét đồ thị vô hướng 퐺 =< 푉, 퐸 >, với tập đỉnh 푉 =  
*1,2, … , 푛+, tập cạnh 퐸 = *푒1, 푒2, . . . , 푒+. Ta gọi ma trận kề  
của đồ thị là ma trận 푛 × 푛 có các phần tử hoặc bằng 0  
hoặc bằng 1 theo qui định như sau:  
o 퐴 = *푎푖푗: 푎푖푗 = 1 푛ế푢 (, ) ∈ 퐸, 푖푗 = 0 푛ế푢 (, ) ∉ 퐸; ,  =  
1, 2, . . . , 푛+.  
(Phương ND, 2013)  
3
Ma trn kca đthvô hướng (2/2)  
Xét đồ thị vô hướng 퐺 =< 푉, 퐸 >, với tập đỉnh 푉 =  
*1,2, … , 푛+, tập cạnh 퐸 = *푒1, 푒2, . . . , 푒+. Ta gọi ma trận kề  
của đồ thị là ma trận 푛 × 푛 có các phần tử hoặc bằng 0  
hoặc bằng 1 theo qui định như sau:  
o 퐴 = *푎푖푗: 푎푖푗 = 1 푛ế푢 (, ) ∈ 퐸, 푖푗 = 0 푛ế푢 (, ) ∉ 퐸; ,  =  
1, 2, . . . , 푛+.  
1
1
0
(Phương ND, 2013)  
4
Tính chất ca ma trận kề đối với đồ thị vô hướng  
Đối xứng qua đường chéo chính  
Tổng các phần tử của ma trận bằng hai lần số cạnh  
    
=1 =1 푖푗 = 2|퐸|  
o
Tổng các phần tử của hàng là bậc của đỉnh 푢  
 
o
=1 = deg(푢)  
Tổng các phần tử của cột là bậc của đỉnh 푢  
 
o
=1  = deg(푢)  
Nếu hiệu (,  = 1,2, … , 푛) là các phần tử của ma  
trận = 퐴. 퐴. . . 퐴 ( lần), khi đó cho ta số đường đi  
khác nhau từ đỉnh  đến đỉnh  qua  − 1 đỉnh trung gian  
5
Ma trn kca đthcó hướng (1/2)  
Định nghĩa hoàn toàn tương tự với đồ thị hướng  
o Cần lưu ý tới hướng của cạnh  
o Ma trận kề của đồ thị có hướng là không đối xứng  
(Phương ND, 2013)  
6
Ma trn kca đthcó hướng (2/2)  
Định nghĩa hoàn toàn tương tự với đồ thị hướng  
o Cần lưu ý tới hướng của cạnh  
o Ma trận kề của đồ thị có hướng là không đối xứng  
(Phương ND, 2013)  
7
Tính chất ca ma trận kề đối với đồ thị hướng  
Tổng các phần tử của ma trận bằng số cạnh  
    
=1 =1 푖푗 = |퐸|  
o
Tổng các phần tử của hàng bán bậc ra của đỉnh 푢  
=1 = 푑푒ꢀ+(푢)  
 
o
Tổng các phần tử của cột bán bậc vào của đỉnh 푢  
=1  = 푑푒ꢀ(푢)  
 
o
Nếu hiệu (,  = 1,2, … , 푛) là các phần tử của ma  
trận = 퐴. 퐴. . . 퐴 ( lần), khi đó cho ta số đường đi  
khác nhau từ đỉnh  đến đỉnh  qua  − 1 đỉnh trung gian  
8
Ma trn trng số  
Mỗi cạnh 푒 = (푢, 푣) của đồ thị được gán bởi một số  
푐(푒) = 푐(푢, 푣) gọi là trọng số của cạnh 푒  
o Đồ thị trong trường hợp như vậy gọi là đồ thị trọng số  
o Ma trận trọng số 푐 = 푐,푖, -, ,푖, - = 푐(, ) nếu (, ) ∈ 퐸,  
,푖, - = 휃 nếu (, ) ∉ 퐸. nhận các giá trị: 0, ∞, −∞ tuỳ theo từng  
tình huống cụ thể của thuật toán  
(Phương ND, 2013)  
9
Ưu & nhược đim ca ma trn kề  
Ưu điểm  
o Đơn giản, dễ cài đặt trên máy tính  
. Sử dụng một mảng hai chiều để biểu diễn ma trận kề  
o Dễ dàng kiểm tra được hai đỉnh 푢, 푣 có kề với nhau hay không  
. Đúng một phép so sánh (,푢-,푣- ≠ 0?)  
Nhược điểm  
o Lãng phí bộ nhớ: bất kể số cạnh nhiều hay ít ta cần 2 đơn vị bộ  
nhớ để biểu diễn  
o Không thể biểu diễn được với các đồ thị có số đỉnh lớn  
o Để xem xét đỉnh đỉnh có những đỉnh kề nào cần mất phép so  
sánh kể cả đỉnh là đỉnh cô lập hoặc đỉnh treo  
10  
Khuôn dng lưu trma trn kề  
Dòng đầu tiên ghi lại số đỉnh của đồ thị  
dòng kế tiếp ghi lại ma trận kề của đồ thị  
o Hai phần tử khác nhau của ma trận kề được viết cách nhau một  
vài khoảng trống  
11  
Ni dung  
Biểu diễn đồ thị bằng ma trận kề  
Biểu diễn đồ thị bằng ma trận liên thuộc  
Biểu diễn đồ thị bằng danh sách cạnh  
Biểu diễn đồ thị bằng danh sách kề  
12  
Ma trn liên thuc: Đthvô hướng (1/2)  
Xét đồ thị hướng 퐺 = (푉, 퐸), 푉 = *1,2, … , 푛+, 퐸 =  
*푒1, 푒2, … , 푒+. Ma trận liên thuộc đỉnh-cạnh của là ma  
trận kích thước 푛 ×  được xây dựng như sau:  
1,  
푛ế푢 đỉ푛ℎ  ê푛 푡ℎ푢ộ푐 푣ớ 푐ạ푛ℎ  
푖푗 =   
0, 푛ế푢 đỉ푛ℎ  푘ℎô푛ꢀ 푙ê푛 푡ℎ푢ộ푐 푣ớ 푐ạ푛ℎ  
6
9
1
7
3
5
2
8
4
13  
Ma trn liên thuc: Đthvô hướng (2/2)  
Xét đồ thị hướng 퐺 = (푉, 퐸), 푉 = *1,2, … , 푛+, 퐸 =  
*푒1, 푒2, … , 푒+. Ma trận liên thuộc đỉnh-cạnh của là ma  
trận kích thước 푛 ×  được xây dựng như sau:  
1,  
푛ế푢 đỉ푛ℎ  ê푛 푡ℎ푢ộ푐 푣ớ 푐ạ푛ℎ  
푖푗 =   
0, 푛ế푢 đỉ푛ℎ  푘ℎô푛ꢀ 푙ê푛 푡ℎ푢ộ푐 푣ớ 푐ạ푛ℎ  
1 2 3 4 5 6 7 8 9  
6
1 1 1 0 0 0 0 0 0 0  
2 1 0 1 0 1 1 0 0 0  
3 0 1 1 1 0 0 0 0 0  
4 0 0 0 1 1 0 1 1 0  
5 0 0 0 0 0 1 1 0 1  
6 0 0 0 0 0 0 0 1 1  
9
1
7
3
5
4
2
8
14  
Ma trn liên thuc: Đthcó hướng (1/2)  
Xét đồ thị hướng 퐺 = (푉, 퐸), 푉 = *1,2, … , 푛+, 퐸 =  
*푒1, 푒2, … , 푒+. Ma trận liên thuộc đỉnh-cung của là ma  
trận kích thước 푛 ×  được xây dựng như sau:  
1, 푛ế푢  푙à đỉ푛ℎ đầ푢 푐ủ푎 푐푢푛ꢀ 푒  
−1, 푛ế푢  푙à đỉ푛ℎ 푐푢ố 푐ủ푎 푐푢푛ꢀ 푒  
푖푗 =   
0, 푛ế푢  푘ℎô푛ꢀ 푙à đầ푢 ú푡 푐ủ푎 푐푢푛ꢀ 푒  
6
9
8
1
7
3
5
2
4
15  
Ma trn liên thuc: Đthcó hướng (2/2)  
Xét đồ thị hướng 퐺 = (푉, 퐸), 푉 = *1,2, … , 푛+, 퐸 =  
*푒1, 푒2, … , 푒+. Ma trận liên thuộc đỉnh-cung của là ma  
trận kích thước 푛 ×  được xây dựng như sau:  
1, 푛ế푢  푙à đỉ푛ℎ đầ푢 푐ủ푎 푐푢푛ꢀ 푒  
−1, 푛ế푢  푙à đỉ푛ℎ 푐푢ố 푐ủ푎 푐푢푛ꢀ 푒  
푖푗 =   
0, 푛ế푢  푘ℎô푛ꢀ 푙à đầ푢 ú푡 푐ủ푎 푐푢푛ꢀ 푒  
1 2 3 4 5 6 7 8 9  
1 1 -1 0 0 0 0 0 0 0  
2 -1 0 1 0 1 1 0 0 0  
3 0 1 -1 -1 0 0 0 0 0  
4 0 0 0 1 -1 0 1 -1 0  
5 0 0 0 0 0 -1 -1 0 1  
6 0 0 0 0 0 0 0 1 -1  
6
9
8
1
7
3
5
4
2
16  
Ni dung  
Biểu diễn đồ thị bằng ma trận kề  
Biểu diễn đồ thị bằng ma trận liên thuộc  
Biểu diễn đồ thị bằng danh sách cạnh  
Biểu diễn đồ thị bằng danh sách kề  
17  
Danh sách cnh (cung)  
Trong trường hợp đồ thị thưa ( ≤ 6푛), ta thường biểu  
diễn đồ thị dưới dạng danh sách cạnh  
o Ta lưu trữ danh sách tất cả các cạnh (cung) của đồ thị vô hướng  
(có hướng). Mỗi cạnh (cung) 푒(푥, 푦) được tương ứng với hai biến  
푑푎푢,푒-, 푐푢표푖,푒-.  
o Như vậy, để lưu trữ đồ thị, ta cần 2 đơn vị bộ nhớ  
o Nhược điểm: để nhận biết những đỉnh nào kề với đỉnh nào chúng  
ta cần  phép so sánh trong khi duyệt qua tất cả  cạnh (cung)  
của đồ thị  
o Nếu là đồ thị có trọng số, ta cần thêm  đơn vị bộ nhớ để lưu trữ  
trọng số của các cạnh  
18  
Biu din đthvô hướng  
bng danh sách cnh  
Chỉ cần liệt kê cạnh (푢, 푣), không cần liệt kê cạnh (푣, 푢)  
Nên liệt kê các cạnh theo thứ tự tăng dần của đỉnh đầu  
mỗi cạnh  
Số cạnh có giá trị (phải hoặc trái) của danh sách cạnh  
là bậc của đỉnh 푢  
(Phương ND, 2013)  
19  
Biu din đthcó hướng  
bng danh sách cnh  
Mỗi cạnh là bộ có tính đến thứ tự các đỉnh  
o Đỉnh đầu không nhất thiết phải nhỏ hơn đỉnh cuối mỗi cạnh  
Số cạnh có giá trị thuộc vế trái là 푑푒ꢀ+(푢)  
Số cạnh có giá trị thuộc vế phải 푑푒ꢀ(푢)  
(Phương ND, 2013)  
20  
Tải về để xem bản đầy đủ
pdf 35 trang myanh 27/04/2022 12880
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Toán rời rạc 2 - Chương 2: Biểu diễn đồ thị trên máy tính - Ngô Xuân Bách", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_toan_roi_rac_2_chuong_2_bieu_dien_do_thi_tren_may.pdf