Bài giảng Lý thuyết đồ thị

TRƯỜNG ĐẠI HỌC SƯ PHẠM TP.HCM  
KHOA TOÁN – TIN HỌC  
TÓM TẮT BÀI GIẢNG  
Môn  
LÝ THUYẾT ĐỒ THỊ  
Giảng viên biên soạn: Nguyễn Ngọc Trung  
TP.HCM 9.2006  
MỤC LỤC  
Chương 1. Đại cương về đồ thị...............................................................................3  
1.1  
1.2  
1.3  
1.4  
1.5  
Giới thiệu ..................................................................................................3  
Định nghĩa đồ thị.......................................................................................3  
Một số thuật ngữ cơ bản ............................................................................6  
Đường đi, chu trình và đồ thị liên thông ....................................................8  
Biểu diễn đồ thị trên máy tính .................................................................11  
1.5.1  
1.5.2  
Biểu diễn đồ thị bằng ma trận kề ......................................................11  
Ma trận liên thuộc đỉnh – cạnh .........................................................13  
Chương 2. Đồ thị Euler và đồ thị Hamilton...........................................................15  
2.1  
2.2  
Đồ thị Euler.............................................................................................15  
Đồ thị Hamilton.......................................................................................17  
Chương 3. Đồ thị có trọng số và bài toán đường đi ngắn nhất...............................20  
3.1  
3.2  
Đồ thị có trọng số....................................................................................20  
Bài toán đường đi ngắn nhất....................................................................21  
3.2.1  
3.2.2  
Đường đi ngắn nhất xuất phát từ một đỉnh........................................22  
Thuật toán Dijkstra – Trường hợp đồ thị không có cạnh/cung âm.....25  
Chương 4. Cây.......................................................................................................27  
4.1  
4.2  
Định nghĩa và tính chất của cây...............................................................27  
Cây khung và bài toán cây khung nhỏ nhất..............................................29  
4.2.1  
4.2.2  
Thuật toán Kruskal:..........................................................................30  
Thuật toán Prim................................................................................31  
TÀI LIỆU THAM KHẢO...................................................................................34  
Tóm tắt bài giảng – Lý thuyết đồ thị  
Trường ĐHSP TP.HCM  
1 Chương 1.  
Đại cương về đồ thị  
1.1 Giới thiệu  
Lý thuyết đồ thị là một lĩnh vực nghiên cứu đã có từ lâu và có nhiều ứng dụng trong  
ngành công nghệ thông tin. Những tư tưởng cơ bản của lý thuyết đồ thị được đề  
xuất vào những năm đầu của thế kỷ 18 bởi nhà toán học lỗi lạc người Thụy Sỹ:  
Leonhard Euler. Chính ông là người đã sử dụng đồ thị để giải bài toán nổi tiếng về  
7 cái cầu ở thành phố Konigberg.  
Những ứng dụng cơ bản của đồ thị như:  
- Xác định tính liên thông trong một mạng máy tính: hai máy tính nào đó có  
thể truyền dữ liệu cho nhau được không.  
- Tìm đường đi ngắn nhất trên mạng giao thông  
- Giải các bài toán tối ưu: lập lịch, phân bố tần số cho các trạm phát thanh,  
truyền hình.  
- Giải bài toán tô màu trên bản đồ: tìm số màu ít nhất để tô các quốc gia sao  
cho hai quốc gia kề nhau phải được tô khác màu.  
- …  
1.2 Định nghĩa đồ thị  
Một cách trực quan, ta có thể hình dung đồ thị là một cấu trúc rời rạc gồm tập hợp  
các đỉnh và tập hợp các cạnh nối các đỉnh đó. Có nhiều loại đồ thị khác nhau biểu  
diễn cho những đối tượng khác nhau và trong các ứng dụng khác nhau.  
Người ta phân loại đồ thị dựa trên đặc điểm của các cạnh nối. Cụ thể hơn ta xét một  
bài toán cụ thể trong đó có sử dụng đồ thị để mô hình hóa bài toán: “Mô hình hệ  
thống giao thông tại một thành phố và xây dựng các ứng dụng như tìm đường đi,  
tìm kiếm địa chỉ, …”.  
Để mô hình hệ thống giao thông trên, ta có thể biểu diễn mỗi địa điểm (giao lộ,  
trung tâm, …) là một điểm và các con đường nối các giao lộ sẽ là các cạnh như  
trong hình dưới đây:  
Trang 3  
Tóm tắt bài giảng – Lý thuyết đồ thị  
Trường ĐHSP TP.HCM  
Trong cách biểu diễn này, ta thấy nhiều nhất chỉ có một con đường nối hai địa điểm  
trực tiếp với nhau, các con đường đều là hai chiều và không có con đường nào nối  
một địa điểm với chính nó. Và đồ thị biểu diễn mô hình này cũng phải thỏa mãn các  
tính chất trên. Dạng đồ thị như vậy là gọi là: đơn đồ thị vô hướng.  
Định nghĩa 1.1. Một đơn đồ thị vô hướng là một bộ G=<V,E>, trong đó:  
- V  là tập hợp hữu hạn gồm các đỉnh của đồ thị.  
- E là tập hợp các cặp không có thứ tự gồm hai phần tử khác nhau của V  
gọi là các cạnh.  
Như vậy, theo định nghĩa trên, trong một đơn đồ thị không thể có các cặp cạnh nối  
cùng một cặp đỉnh (do E là tập hợp nên không thể có 2 cặp trùng nhau), các cạnh  
đều không phân biệt thứ tự nên cạnh [u,v] và cạnh [v,u] đều được coi là một cạnh  
duy nhất, điều này phù hợp với việc biểu diễn các con đường 2 chiều, và hiển nhiên  
là không có cặp [u,u] nào đó trong E.  
Ví dụ 1.1.  
b. Không phải đơn đồ thị vô  
hướng do có các cặp  
cạnh nối cùng một cặp  
đỉnh  
a. Đơn đồ thị vô hướng  
c. Không phải đơn đồ thị vô  
hướng do có cạnh nối  
một đỉnh với chính nó.  
Tuy nhiên, trên thực tế, cũng có thể trong một hệ thống giao thông vẫn tồn tại nhiều  
con đường đi nối cùng hai địa điểm, hoặc cũng có thể có một con đường để đi từ  
một địa điểm nào đó rồi lại quay về chính nó (đây có thể là một con đường nội bộ  
của một trung tâm mua sắm, …). Khi đó, tính chất của đơn đồ thị vô hướng như  
định nghĩa trên không cho phép nó biểu diễn được hệ thống giao thông trong trường  
hợp này. Muốn vậy, ta phải dùng một loại đồ thị tổng quát hơn một chút: đa đồ thị  
vô hướng.  
Định nghĩa 1.2. Đa đồ thị vô hướng là một bộ G=<V,E>, trong đó  
- V  là tập hợp hữu hạn gồm các đỉnh của đồ thị.  
- E là một họ các cặp không có thứ tự của V gọi là các cạnh.  
Lưu ý:  
- Khi ta nói E là một họ nghĩa là nó có thể có những cặp trùng nhau (khác với  
khái niệm tập hợp).  
- Các cạnh nối cùng một cặp đỉnh được gọi là các cạnh song song.  
Trang 4  
Tóm tắt bài giảng – Lý thuyết đồ thị  
Trường ĐHSP TP.HCM  
- Các cạnh nối từ một đỉnh với chính nó được gọi là khuyên.  
Ví dụ 1.2.  
e2  
e1  
e
a. Đa đồ thị vô hướng. e1 và  
e2 là các cạnh song song.  
b. Đa đồ thị vô hướng. e là  
khuyên  
Điểm chung của hai loại đồ thị đã được định nghĩa ở trên là tính chất vô hướng (hai  
chiều) của các cạnh. Trong thực tế, cũng có khi ta phải chú trọng đến tính có hướng  
của các cạnh nối này (chẳng hạn như biểu diễn các con đường một chiều). Từ đó, ta  
có thêm loại đồ thị: Đơn đồ thị có hướng và đa đồ thị có hướng. Về cơ bản, hai  
loại này cũng tương tự như hai loại mà ta định nghĩa ở trên, chỉ thêm sự khác biệt là  
tính chất có thứ tự của các cạnh.  
Định nghĩa 1.3. Đơn đồ thị có hướng là một bộ G=<V,E>, trong đó:  
- V  là tập hợp hữu hạn gồm các đỉnh của đồ thị.  
- E là tập hợp các cặp có thứ tự gồm hai phần tử khác nhau của V gọi là  
các cung.  
Ví dụ 1.3.  
Định nghĩa 1.4. Đa đồ thị có hướng là một bộ G=<V,E>, trong đó  
- V  là tập hợp hữu hạn gồm các đỉnh của đồ thị.  
- E là một họ các cặp có thứ tự của V gọi là các cung.  
Các cung nối cùng một cặp đỉnh được gọi là các cung song song.  
Trang 5  
Tóm tắt bài giảng – Lý thuyết đồ thị  
Ví dụ 1.4.  
Trường ĐHSP TP.HCM  
e2  
e1  
e
a. Đa đồ thị có hướng. e1 và  
e2 là các cung song song.  
b. Đa đồ thị có hướng. e là  
khuyên  
Chú ý:  
- Đồ thị sau vẫn được coi là đơn đồ thị có hướng vì e1 và e2, e3 và e4 không  
phải là 2 cung song song (do khác hướng).  
e4  
e2  
e3  
e1  
- Một số tài liệu tách đa đồ thị thành 2 loại: đa đồ thị (chỉ có cạnh/cung song  
song mà không có khuyên) và giả đồ thị (có cạnh/cung song song và có cả  
khuyên). Tuy nhiên, để bớt phức tạp, chúng ta gộp cả hai loại này thành một  
và gọi tên chung là đa đồ thị.  
- Đa đồ thị là dạng tổng quát hơn đơn đồ thị, nghĩa là một đơn đồ thị vẫn có  
thể được coi là đa đồ thị, nhưng ngược lại thì không đúng.  
- Mặc dù tổng quát hơn nhưng đa đồ thị lại rất khó biểu diễn và xử lý trên máy  
tính. Chính vì thế trong phần lớn các ứng dụng người ta tìm cách biến các đa  
đồ thị bằng cách thêm một số đỉnh vào giữa các cạnh/cung song song hay các  
khuyên. Khi đó, đa đồ thị sẽ trở thành đơn đồ thị.  
- Cũng chính vì lý do trên, các nội dung giới thiệu trong học phần này chủ yếu  
là trên đơn đồ thị. Để đơn giản, chúng ta sẽ gọi là “đồ thị” thay cho “đơn  
đồ thị”.  
Phần tiếp theo sau đây sẽ giới thiệu cho chúng ta một số thuật ngữ cơ bản thường  
dùng trên đồ thị.  
1.3 Một số thuật ngữ cơ bản  
Định nghĩa 1.5. Cho đồ thị vô hướng G=<V,E>.  
- Hai đỉnh u và v của đồ thị được gọi là kề nhau nếu (u,v) là một cạnh của đồ  
thị.  
- Nếu e=(u,v) là cạnh của đồ thị thì ta nói cạnh này là liên thuộc với hai đỉnh u  
và v. Cạnh được nói là nối đỉnh u và v. Đỉnh u và v được gọi là đỉnh đầu của  
cạnh e.  
Trang 6  
Tóm tắt bài giảng – Lý thuyết đồ thị  
Trường ĐHSP TP.HCM  
Định nghĩa 1.6. Cho đồ thị vô hướng G=<V,E>. Bậc của đỉnh v trong đồ thị, ký  
hiệu là deg(v), là số cạnh liên thuộc với nó. Đỉnh có bậc 0 được gọi là đỉnh cô lập,  
đỉnh có bậc 1 gọi là đỉnh treo.  
Ví dụ 1.5. Cho đồ thị vô hướng G = <V,E> sau:  
2
1
3
6
4
5
V = {1, 2, 3, 4, 5, 6}  
E = {(1,2), (2,3), (1,4), (1,5), (2,5), (4,5), (2,4)}  
Bậc của các đỉnh:  
. deg(1) = 3  
. deg(4) = 3  
deg(2) = 4  
deg(5) = 3  
deg(3) = 1  
deg(6) = 0  
Đỉnh 3 là đỉnh treo  
Đỉnh 6 là đỉnh cô lập  
Định lý sau sẽ đề cập đến tính chất của bậc các đỉnh.  
Định lý 1.1. Cho G = <V,E> là đồ thị vô hướng. Khi đó ta có tổng số bậc của các  
đỉnh của đồ thị sẽ bằng hai lần số cạnh của nó. Nói cách khác, ta có:  
deg(v) 2 | E |  
vV  
Việc chứng minh định lý này không khó. Ý tưởng chính của nó là trong quá trình  
xác định bậc của các đỉnh thì mỗi cạnh được đếm 2 lần.  
Hệ quả 1.1. Trong đồ thị vô hướng, số đỉnh bậc lẻ là một số chẵn.  
Chứng minh.  
Theo định lý trên, tổng bậc của tất cả các đỉnh là một số chẵn (2|E|), do đó  
tổng bậc của các đỉnh bậc lẻ cũng là một số chẵn. Và do vây, số đỉnh bậc lẻ  
phải là một số chẵn.   
Định nghĩa 1.7. Cho đồ thị có hướng G=<V,E>.  
- Hai đỉnh u và v của đồ thị được gọi là kề nhau nếu (u,v) là một cung của đồ  
thị.  
- Nếu e=(u,v) là cung của đồ thị thì ta nói cung này đi ra khỏi đỉnh u vào đi  
vào đỉnh v. Đỉnh u được gọi là đỉnh đầu của cung e và đỉnh v được gọi là  
đỉnh cuối của cung e.  
Trang 7  
Tóm tắt bài giảng – Lý thuyết đồ thị  
Trường ĐHSP TP.HCM  
Định nghĩa 1.8. Cho đồ thị có hướng G=<V,E>.  
- Bán bậc ra của đỉnh v trong đồ thị, ký hiệu là deg+(v), là số cạnh đi ra khỏi  
v.  
- Bán bậc vào của đỉnh v trong đồ thị, ký hiệu là deg-(v), là số cạnh vào v.  
Ví dụ 1.6. Xét đồ thị có hướng G = <V,E> sau:  
1
2
3
4
5
6
V = {1, 2, 3, 4, 5, 6}  
E = {(1,2), (2,3), (1,4), (5,1), (5,2), (2,6), (6,3), (4,5), (6,5), (3,4)}  
Bậc của các đỉnh:  
. Bán bậc ra:  
deg+(1)=2  
deg+(4)=1  
deg-(1)=1  
deg-(4)=2  
deg+(2)=2  
deg+(5)=2  
deg-(2)=2  
deg-(1)=2  
deg+(3)=1  
deg+(6)=2  
deg-(3)=2  
deg-(1)=1  
. Bán bậc vào:  
Tương tự như đồ thị vô hướng, đối với đồ thị có hướng ta cũng có kết quả gần  
tương tự về bậc của các đỉnh của đồ thị.  
Định lý 1.2. Cho G = <V,E> là đồ thị có hướng. Tổng bán bậc ra của các đỉnh bằng  
tổng bán bậc vào của các đỉnh và bằng số cạnh của đồ thị.  
deg(v) deg(v) | E |  
vV  
vV  
Cách chứng minh và ý nghĩa định lý này cũng tương tự như định lý đối với đồ thị  
vô hướng.  
Trong các ứng dụng về đồ thị, các bài toán về đường đi, tính liên thông chiếm vị trí  
rất lớn. Phần kế tiếp sẽ đề cập đến một số khái niệm mở đầu về các nội dung này.  
1.4 Đường đi, chu trình và đồ thị liên thông  
*
Định nghĩa 1.9. Cho đồ thị G = <V,E>. Đường đi độ dài n từ đỉnh u đến đỉnh v  
(n là số nguyên dương) là dãy:  
x0, x1, …, xn-1, xn  
trong đó u = x0, v = xn, (xixi+1)E, i = 0, 1, …, n-1.  
* Ta sẽ dùng thuật ngữ đồ thị để chỉ chung cho cả đồ thị vô hướng và đồ thị có hướng  
Trang 8  
Tóm tắt bài giảng – Lý thuyết đồ thị  
Trường ĐHSP TP.HCM  
Đường đi nói trên còn có thể được biểu diễn bằng dãy các cạnh/cung:  
(x0, x1), (x1, x2), …, (xn-1, xn)  
Đỉnh u gọi là đỉnh đầu của đường đi, đỉnh v gọi là đỉnh cuối của đường đi.  
Đường đi có đỉnh đầu và đỉnh cuối trùng nhau (u=v) gọi là chu trình.  
Ví dụ 1.7. Cho đồ thị vô hướng sau:  
1
3
2
4
7
5
6
Một số đường đi từ đỉnh 2 đến đỉnh 7:  
- Đường đi d1: 2 3 4 7 (đường đi độ dài 3)  
- Đường đi d2: 2 3 4 1 3 6 7 (đường đi độ dài 6)  
- Đường đi d3: 2 3 4 1 3 4 7 (đường đi độ dài 6)  
Một số chu trình trên đồ thị trên:  
- Chu trình C1: 1 2 3 1 (chu trình có độ dài 3)  
- Chu trình C2: 1 2 3 7 6 3 4 1 (chu trình có độ dài 7)  
- Chu trình C3: 1 3 4 7 3 4 1 (chu trình có độ dài 6)  
Định nghĩa 1.10.Cho đồ thị G = <V,E>.  
- Đường đi hay chu trình trên G được gọi là đơn nếu như không có cạnh nào  
bị lặp lại trên đường đi.  
- Đường đi hay chu trình trên G được gọi là sơ cấp nếu như không có đỉnh nào  
bị lặp lại trên đường đi.  
Ví dụ 1.8. Xét các đường đi và chu trình ở ví dụ trên, ta thấy:  
- Đường đi d1 là đường đi sơ cấp (cũng là đường đi đơn).  
- Đường đi d2 là đường đi đơn (chỉ bị lặp đỉnh 3, nhưng không lặp cạnh).  
- Đường đi d3 không là đường đi đơn (cũng không là đường đi sơ cấp) do  
có lặp lại cạnh (3,4).  
- Chu trình C1 là chu trình sơ cấp (cũng là chu trình đơn).  
- Chu trình C2 là chu trình đơn (chỉ bị lặp lại đỉnh 3, nhưng không lặp  
cạnh).  
- Chu trình C3 không là chu trình đơn (cũng không là chu trình sơ cấp) do  
có lặp lại cạnh (3,4).  
Trang 9  
Tóm tắt bài giảng – Lý thuyết đồ thị  
Trường ĐHSP TP.HCM  
Khi dùng đồ thị để biểu diễn một hệ thống nào đó, chẳng hạn hệ thống các máy tính  
kết nối với nhau, một trong những điều ta quan tâm nhất là liệu hai máy tính nào đó  
có thể được nối với nhau hay không? Đây là tính chất liên thông của một mạng, nếu  
tính liên thông không được đảm bảo thì mạng máy tính sẽ không thể hoạt động  
được.  
Định nghĩa 1.11.Đồ thị vô hướng G = <V,E> được gọi là liên thông nếu luôn tìm  
được đường đi giữa hai đỉnh bất kỳ của nó.  
Ví dụ 1.9. Xét các đồ thị vô hướng sau:  
1
2
1
2
3
3
4
5
6
4
5
Đồ thị G1  
Đồ thị G2  
Trong 2 đồ thị trên thì G1 là đồ thị liên thông, còn G2 không phải là đồ thị liên  
thông vì giữa hai đỉnh 1 và 2 không tồn tại một đường đi nào.  
Định nghĩa 1.12. Cho đồ thị G = (V,E). Đồ thị H = <W,F> được gọi là đồ thị con  
của G nếu và chỉ nếu W V và F E.  
Trong trường hợp một đồ thị vô hướng G không liên thông, nó sẽ được phân thành  
các đồ thị con độc lập nhau và chúng đều liên thông. Mỗi đồ thị con như vậy được  
gọi là một thành phần liên thông của G.  
Ví dụ 1.10. Đồ thị G2 trong ví dụ trên là đồ thị có 2 thành phần liên thông. Thành  
phần liên thông thứ nhất gồm 3 đỉnh: 1, 4, và 5. Thành phần liên thông thứ hai gồm  
hai đỉnh: 2 và 3.  
Định nghĩa 1.13.Cho đồ thị vô hướng G = <V,E>. Đỉnh v của đồ thị được gọi là  
đỉnh rẽ nhánh nếu việc loại bỏ v và các cạnh liên thuộc với nó ra khỏi đồ thị sẽ  
làm tăng số thành phần liên thông của đồ thị. Cạnh e của đồ thị được gọi là cầu nếu  
việc loại bỏ nó ra khỏi đồ thị sẽ làm tăng số thành phần liên thông của đồ thị.  
Ví dụ 1.11. Xét đồ thị sau:  
1
2
3
4
5
6
Trang 10  
Tóm tắt bài giảng – Lý thuyết đồ thị  
Trường ĐHSP TP.HCM  
Trong đồ thị trên, đỉnh 2 là đỉnh rẽ nhánh vì việc loại đỉnh này cùng với các  
cạnh (2,3), (2,1), (2,6) sẽ làm đồ thị có 2 thành phần liên thông. Cạnh (2,3) là cầu.  
Các cạnh còn lại đều không phải là cầu.  
Đối với đồ thị có hướng khái niệm liên thông khó thỏa mãn hơn do các cung bị hạn  
chế về chiều. Từ đó, bên cạnh khái niệm liên thông như đề cập trong đồ thị vô  
hướng, ta sẽ đưa thêm khái niệm liên thông nhẹ hơn: liên thông yếu.  
Định nghĩa 1.14.Cho G = <V,E> là đồ thị có hướng.  
a. G được gọi là liên thông mạnh nếu luôn tìm được đường đi giữa hai  
đỉnh bất kỳ của nó.  
b. G được gọi là liên thông yếu nếu đồ thị vô hướng tương ứng với nó (đồ  
thị vô hướng có được bằng cách biến các cung một chiều thành các  
cạnh hai chiều) là đồ thị vô hướng liên thông.  
Ví dụ 1.12. Xét các đồ thị có hướng sau:  
- Đồ thị G1 là đồ thị liên thông mạnh.  
- Đồ thị G2 không là đồ thị liên thông mạnh và từ đỉnh 1 đến đỉnh 2  
không tồn tại đường đi nào. G2 là đồ thị liên thông yếu vì nếu biến các  
cung có hướng thành các cạnh vô hướng thì nó là đồ thị liên thông.  
1.5 Biểu diễn đồ thị trên máy tính  
Lý thuyết đồ thị được ứng dụng trong rất nhiều lĩnh vực khác nhau. Để sử dụng  
được đồ thị hiệu quả và nhanh chóng hơn, chúng ta phải biểu diễn và xử lý được đồ  
thị với máy tính. Cách biểu diễn thông thường bằng hình vẽ và mô tả tập hợp sẽ  
không phù hợp với cách thức lưu trữ dữ liệu và xử lý trên máy tính. Chúng ta phải  
tìm một cấu trúc dữ liệu thích hợp để biểu diễn đồ thị trên máy tính.  
Có nhiều phương pháp khác nhau để biểu diễn đồ thị trên máy tính. Sau đây chúng  
ta sẽ lần lượt tìm hiểu một số phương pháp thông dụng.  
1.5.1 Biểu diễn đồ thị bằng ma trận kề  
Trang 11  
Tóm tắt bài giảng – Lý thuyết đồ thị  
Trường ĐHSP TP.HCM  
Định nghĩa 1.15.Cho đồ thị G = <V,E>, với tập đỉnh V = {v1, v2, ..., vn}. Ta gọi ma  
trận kề của đồ thị là ma trận A, kích thước nxn được xác định như sau:  
1, (vi ,vj ) E  
A   
ij  
0, (vi ,v j ) E  
Ví dụ 1.13.  
a. Xét đồ thị vô hướng sau:  
2
1
3
6
4
5
Ma trận kề của đồ thị trên sẽ là:  
1 2 3 4 5 6  
1 0 1 0 1 1 0  
2 1 0 1 1 1 0  
3 0 1 0 0 0 0  
A   
4 1 1 0 0 1 0  
5 1 1 0 1 0 0  
6 0 0 0 0 0 0  
b. Xét đồ thị có hướng sau:  
Ma trận kề của đồ thị trên sẽ là:  
1 2 3 4  
1
0 0 0 0  
1 0 1 1  
1 0 0 0  
0 0 1 0  
2
3
4
A   
Nhận xét.  
- Chúng ta có thể nhận thấy rằng, ma trận kề của đồ thị vô hướng luôn luôn là  
mà trận đối xứng. Còn ma trận của đồ thị có hướng thì có thể không có tính  
chất này.  
Trang 12  
Tóm tắt bài giảng – Lý thuyết đồ thị  
Trường ĐHSP TP.HCM  
- Đối với đồ thị vô hướng, tổng các phần tử trên dòng i (hay trên cột i) sẽ là  
bậc của đỉnh vi của đồ thị  
- Đối với đồ thị có hướng, tổng các phần tử trên dòng i (tương ứng, trên cột i)  
sẽ là bán bậc ra (bán bậc vào) của đỉnh vi của đồ thị.  
1.5.2 Ma trận liên thuộc đỉnh – cạnh  
Định nghĩa 1.16.Cho G = <V,E> là đồ thị vô hướng với tập đỉnh V = {v1, v2, ..., vn}  
và tập cạnh E = {e1, e2, .., em}. Ma trận liên thuộc đỉnh cạnh biểu diễn đồ thị G là  
ma trận có kích thước nxm được xác định như sau:  
1, nếu vi là đỉnh đầu của cạnh ej  
Aij =  
0, nếu vi không là đỉnh đầu của cạnh ej  
Ví dụ 1.14. Ma trận liên thuộc đỉnh-cạnh của đồ thị dưới đây là:  
e1 e2 e3 e4 e5 e6 e7  
e1  
e4  
2
e2  
e6  
1
3
1
2
3
4
5
6
1
1
0
0
0
0
0
1
1
0
0
0
1
0
0
1
0
0
0
1
0
1
0
0
0
1
0
0
1
0
0
1
0
0
0
1
0
0
0
1
1
0
e3  
e5  
A   
6
e7  
4
5
Định nghĩa 1.17.Cho G = <V,E> là đồ thị có hướng với tập đỉnh V = {v1, v2, ..., vn}  
và tập các cung E = {e1, e2, .., em}. Ma trận liên thuộc đỉnh-cạnh biểu diễn đồ thị G  
là ma trận có kích thước nxm được xác định như sau:  
1, nếu vi là đỉnh đầu của cung ej (cung ej đi ra từ vi)  
-1, nếu vi là đỉnh cuối của cung ej (cung ej đi vào vi)  
0, nếu vi không là đỉnh đầu mút nào của cung ej  
Aij =  
Ví dụ 1.15. Ma trận liên thuộc đỉnh-cạnh của đồ thị vô hướng dưới đây là:  
e1 e2 e3 e4 e5  
e1  
e3  
e5  
1
2
3
4
1 1  
0
1
0
1
0
0
e2  
e4  
1
0
0
0
1
0
A   
1  
0
0
1  
1  
1
Trang 13  
Tóm tắt bài giảng – Lý thuyết đồ thị  
Trường ĐHSP TP.HCM  
Nhận xét.  
- Ma trận liên thuộc đỉnh-cạnh sẽ tiết kiệm bộ nhớ hơn khi đồ thị có ít  
cạnh/cung.  
- Trong ma trận của đồ thị vô hướng, số số 1 trên dòng i sẽ là bậc của đỉnh vi.  
- Trong ma trận của đồ thị có hướng, số số 1 trên dòng i sẽ là bán bậc ra của  
đỉnh vi, còn số số -1 trên dòng i sẽ là bán bậc vào của đỉnh vi.  
Ngoài hai phương pháp biểu diễn đồ thị đã trình bày, còn một số cách khác như  
dùng danh sách cạnh/cung hoặc sử dụng danh sách kề, ... (xin xem thêm chi tiết  
trong tài liệu tham khảo).  
Trang 14  
Tóm tắt bài giảng – Lý thuyết đồ thị  
Trường ĐHSP TP.HCM  
2 Chương 2.  
Đồ thị Euler và đồ thị Hamilton  
2.1 Đồ thị Euler  
Định nghĩa 2.1. Cho đồ thị G = <V,E>. Chu trình đơn trong G đi qua tất cả các  
cạnh của nó được gọi là chu trình Euler. Đường đi đơn đi qua tất cả các cạnh của đồ  
thị được gọi là đường đi Euler.  
Đồ thị G được gọi là đồ thị Euler nếu nó có chứa chu trình Euler. G được gọi  
là đồ thị nửa Euler nếu nó có chứa đường đi Euler.  
Ví dụ 2.1. Xét các đồ thị dưới đây:  
1
2
1
2
5
1
3
2
4
3
3
4
5
4
5
G1  
G2  
G3  
- Đồ thị G1 là đồ thị Euler (hiển nhiên cũng là nửa Euler) vì nó có chứa  
chu trình Euler: 1 2 3 5 4 3 1  
- Đồ thị G2 không là đồ thị Euler cũng không phải là đồ thị nửa Euler.  
- Đồ thị G3 dù không có chứa chu trình Euler nhưng nó là đồ thị nửa  
Euler do có chứa đường đi Euler: 1 2 3 1 4 2 5 4 3.  
Rõ ràng đồ thị Euler có một tính chất rất hay là chúng ta có thể đi qua tất cả các  
cạnh của đồ thị, mỗi cạnh chỉ đi qua một lần và quay trở về đỉnh ban đầu. Đồ thị  
Euler có rất nhiều ứng dụng như: giải bài toán 7 cái cầu ở thành phố Konigsberg,  
bài toán vẽ hình bằng 1 nét, ... Để giải được các bài toán này, ta phải mô hình chúng  
thành đồ thị và xác định xem liệu đó có phải là đồ thị Euler hay không. Câu hỏi đặt  
ra là “khi nào thì một đồ thị là Euler? ’’. Thật may mắn câu trả lời trọn vẹn đã  
được Euler tìm ra vào năm 1736 thể hiện qua định lý dưới đây:  
Định lý 2.1. (Định lý Euler) Đồ thị vô hướng liên thông G là đồ thị Euler khi và chỉ  
khi mọi đỉnh của G đều có bậc chẵn.  
Để chứng minh định lý này, trước hết ta sẽ chứng minh bổ đề sau:  
Trang 15  
Tóm tắt bài giảng – Lý thuyết đồ thị  
Trường ĐHSP TP.HCM  
Bổ đề. Nếu đồ thị vô hướng G có bậc các đỉnh không nhỏ hơn 2 thì G có chứa ít  
nhất một chu trình đơn.  
Chứng minh bổ đề.  
Gọi v là một đỉnh nào đó. Xuất phát từ v, ta bắt đầu đi qua các đỉnh khác theo các  
cạnh của đồ thị. Do bậc của các đỉnh đều lớn hơn hay bằng 2 nên tại mỗi đỉnh ta đều  
có thể đi vào bằng một đường và đi ra bằng một đường khác. Do số đỉnh của đồ thị  
là hữu hạn nêu đến một lúc nào đó, ta sẽ phải đi lại 1 đỉnh đã đi trước đó, và như  
vậy thì ta đã có một chu trình đơn trong đồ thị.  
Sau đây ta sẽ chứng minh định lý.  
Chứng minh định lý.  
Cần. Nếu G là đồ thị Euler thì các đỉnh trong G đều có bậc chẵn.  
Giả sử G là đồ thị Euler, khi đó tồn tại chu trình Euler C trong G. Như vậy, cứ mỗi  
lần chu trình này đi qua một đỉnh thì bậc của đỉnh này sẽ tăng lên 2. Mặt khác, do  
chu trình C đi qua tất cả các đỉnh nên trong quá trình đi như trên sẽ không còn sót  
cạnh nào. Vậy các đỉnh của đồ thị đều phải có bậc chẵn.  
Đủ. Nếu các đỉnh trong G đều có bậc chẵn thì G là đồ thị Euler.  
Ta phải chứng minh G có chứa 1 chu trình Euler. Việc chứng minh phần này cũng  
chính là cách tìm chu trình Euler của G.  
Trước hết, do G liên thông và các đỉnh đều là bậc chẵn nên các đỉnh của G đều có  
bậc lớn hơn hay bằng 2. Do đó trong G phải có chứa một chu trình đơn C1. Nếu C1  
đã đi qua hết tất cả các cạnh của G thì C1 chính là chu trình Euler cần tìm. Nếu  
không, thì loại bỏ các cạnh đã đi qua (trong C1) ra khỏi đồ thị, ta được đồ thị H với  
số bậc các đỉnh cũng đều là bậc chẵn. Trong mỗi thành phần liên thông của H, làm  
tương tự ta cũng thu được các chu trình đơn C2, C3, ... Quá trình cứ tiếp tục cho đến  
khi tất cả các đỉnh được đi qua. Giả sử cuối cùng, ta có được k chu trình đơn: C1,  
C2, ..., Ck. Ta sẽ tìm cách kết nối chúng thành một chu trình đơn duy nhất. Trong số  
các chu trình trên, có ít nhất 2 chu trình có chung một đỉnh (vì nếu không, G không  
phải là đồ thị liên thông). Giả sử Ci và Cj là 2 chu trình có điểm chung, gọi điểm  
chung đó là x. Ta sẽ “mở“ 2 chu trình này ra tại x và nối chúng lại thành một chu  
trình đơn lớn hơn theo hình vẽ dưới đây:  
y
x
z
x
Ci  
Cji  
Trang 16  
Tóm tắt bài giảng – Lý thuyết đồ thị  
Trường ĐHSP TP.HCM  
Theo hình trên, ta thấy rằng quá trình kết nối không bỏ mất cạnh nào, và chu trình  
thu được cũng là một chu trình đơn.  
Tiếp tục làm như trên (tìm 2 chu trình có điểm chung, kết nối thành chu trình lớn  
hơn) cho đến khi ta được một chu trình đơn duy nhất. Đó chính là chu trình Euler  
cần tìm. Vậy G là đồ thị Euler.  
Định lý trên cho ta một công cụ hữu hiệu để xác định một đồ thị có là Euler hay  
không: chỉ việc đếm bậc của các đỉnh.  
Hệ quả sau đây sẽ đề cập đến việc nhận biết đồ thị nửa Euler.  
Hệ quả 2.1. Đồ thị vô hướng liên thông G là nửa Euler khi và chỉ khi nó có không  
quá đỉnh bậc lẻ.  
Chứng minh. Thật vậy G chỉ có thể có 0 đỉnh bậc lẻ hoặc 2 đỉnh bậc lẻ. Nếu G  
không có đỉnh bậc lẻ nào thì G là đồ thị Euler và do đó hiển nhiên nó là đồ thị nửa  
Euler. Nếu G có đúng 2 đỉnh bậc lẻ, khi đó, tưởng tượng rằng ta sẽ thêm vào 1 cạnh  
ảo nối hai đỉnh này. Và như vậy thì tất cả các đỉnh sẽ đều có bậc chẵn và ta có thể  
tìm được chu trình Euler theo định lý 2.1. Bây giờ loại bỏ cạnh ảo ra khỏi chu trình,  
ta sẽ có đường đi Euler của đồ thị ban đầu.  
Nhận xét. Theo cách chứng minh của hệ quả trên, ta thấy rằng đường đi Euler trong  
đồ thị nửa Euler phải luôn luôn bắt đầu và kết thúc từ các đỉnh bậc lẻ.  
Tương tự như đồ thị vô hướng, tư tưởng của định lý Euler vẫn đúng cho đồ thị có  
hướng. Chỉ có điều, ta phải điều chỉnh một chút các điều kiện cho phù hợp với đồ  
thị có hướng.  
Định lý 2.2. Đồ thị có hướng liên thông mạnh là đồ thị Euler khi và chỉ khi mọi  
đỉnh của nó đều có bán bậc ra bằng bán bậc vào. Nghĩa là:  
v V,deg(v) deg(v)  
2.2 Đồ thị Hamilton  
Trong phần trên, chúng ta đã khảo sát một loại đồ thị đặc biệt: đồ thị mà ta có thể đi  
qua tất cả các cạnh của nó, mỗi cạnh một lần. Cũng tương tự ý tưởng như vậy, trong  
phần này, chúng ta sẽ xét các đồ thị mà ta có thể đi qua tất cả các đỉnh của nó, mỗi  
đỉnh một lần.  
Trang 17  
Tóm tắt bài giảng – Lý thuyết đồ thị  
Trường ĐHSP TP.HCM  
Định nghĩa 2.2. Cho đồ thị G = <V,E>. Chu trình sơ cấp† trong G đi qua tất cả các  
đỉnh của nó được gọi là chu trình Hamilton. Đường đi sơ cấp đi qua tất cả các đỉnh  
của đồ thị được gọi là đường đi Hamilton.  
Đồ thị G được gọi là đồ thị Hamilton nếu nó có chứa chu trình Hamilton. G  
được gọi là đồ thị nửa Hamilton nếu nó có chứa đường đi Hamilton.  
Dễ thấy rằng đồ thị Hamilton cũng là đồ thị nửa Hamilton, ngược lại thì không luôn  
đúng.  
Ví dụ 2.2. Xét các đồ thị dưới đây:  
1
2
1
2
1
2
4
3
4
3
4
3
G1  
G2  
G3  
- G1 không là đồ thị Hamilton cũng không là đồ thị nửa Hamilton.  
- G2 là đồ thị nửa Hamilton vì có chứa đường đi Hamilton: 3 1 2 4. Nhưng G2  
không là đồ thị Hamilton.  
- G3 là đồ thị Hamilton vì có chứa chu trình Hamilton: 1 2 4 3  
Trong phần trên, khi khảo sát đồ thị Euler, chúng ta được giới thiệu một định lý rất  
hiệu quả và đầy đủ. Nó thể hiện được điều kiện cần và đủ (hai chiều) để một đồ thị  
liên thông là đồ thị Euler. Và như vậy, lớp các đồ thị Euler đã được xác định rất rõ  
ràng. Rất tiếc, đối với việc nhận dạng đồ thị Hamilton, cho đến bây giờ chúng ta  
vẫn chưa có được một kết quả hoàn hảo như vậy. Phần lớn các kết quả nghiên cứu  
cho đến thời điểm này chủ yếu cung cấp điều kiện đủ để một đồ thị là Hamilton.  
Sau đây chúng ta giới thiệu một số định lý về điều kiện đủ để một đồ thị là đồ thị  
Hamilton.  
Định lý 2.3. (Dirak, 1952). Nếu đồ thị vô hướng G với n đỉnh (n>2), mỗi đỉnh có  
bậc không nhỏ hơn n/2 thì G là đồ thị Hamilton.  
Định lý 2.4. (Dirak, tổng quát) Nếu G là đồ thị có hướng liên thông mạnh với n  
đỉnh. Nếu các đỉnh đều có bán bậc ra và bán bậc vào không nhỏ hơn n/2 thì G là đồ  
thị Hamilton.  
Nghiên cứu đồ thị Hamilton và các tính chất của nó vẫn là một hướng mở hiện nay.  
Các nhà nghiên cứu vẫn đang tìm kiếm một công cụ hữu hiệu để nhận biết các đồ  
† Không lặp lại đỉnh  
Trang 18  
Tóm tắt bài giảng – Lý thuyết đồ thị  
Trường ĐHSP TP.HCM  
thị Hamilton cũng như xác định đầy đủ lớp các đồ thị Hamilton. Đây thực sự là một  
thách thức trong lĩnh vực lý thuyết đồ thị.  
Trang 19  
Tóm tắt bài giảng – Lý thuyết đồ thị  
Trường ĐHSP TP.HCM  
3 Chương 3.  
Đồ thị có trọng số và bài toán đường đi ngắn  
nhất  
3.1 Đồ thị có trọng số  
Trong các phần vừa qua, chúng ta đã khảo sát các khái niệm cơ bản trên đồ thị. Cho  
đến thời điểm này, chúng ta đã nói đến đồ thị như là một bộ gồm có tập các đỉnh và  
tập các cạnh nối các đỉnh với nhau. Trên thực tế trong một số các ứng dụng, việc sử  
dụng đồ thị với các đỉnh và các cạnh để biểu diễn là chưa đủ. Chẳng hạn như đối  
với bài toán giao thông, người ta không chỉ quan tâm một địa điểm này có nối với  
một địa điểm khác hay không mà người ta còn quan tâm đến cả đường nối ấy xa hay  
gần, khoảng cách bao nhiêu. Rõ ràng, trong các hệ thống giao thông, việc đưa thêm  
được yếu tố khoảng cách vào đồ thị có ý nghĩa rất lớn, nó làm tăng thêm khả năng  
ứng dụng của lý thuyết đồ thị.  
Trong phần này, chúng ta sẽ tìm hiểu loại đồ thị có khả năng đáp ứng yêu cầu trên:  
đồ thị có trọng số.  
Định nghĩa 3.1. Đồ thị có trọng số là đồ thị mà mỗi cạnh (hay cung) của nó được  
gán thêm một số thực, gọi là trọng số của cạnh (cung), thể hiện chi phí phải tốn  
(khoảng cách, thời gian, tiền bạc, ...) khi đi qua cạnh (cung) đó.  
Ví dụ 3.1. Xét một mô hình kết nối điện thoại được mô phỏng trên đồ thị có trọng  
số dưới đây: các đỉnh tương ứng với các trạm điện thoại, các cạnh tương ứng với  
đường dây kết nối giữa các trạm và trọng số các cạnh thể hiện chi phí phải tốn khi  
thực hiện một kết nối liên lạc giữa hai trạm.  
5
2
7
1
3
3
6
2
8
6
1
4
5
Để biểu diễn đồ thị có trọng số trên máy tính, ta dùng ma trận kề trọng số. Về cơ  
bản, ma trận kề trọng số của đồ thị cũng gần giống với ma trận kề, chỉ có điều, trong  
khi ma trận kề chỉ gồm các số 0 hay 1 thì ma trận kề trọng số sẽ bao gồm trọng số  
của các đỉnh, cũng như các giá trị vô cực, ...  
Trang 20  
Tải về để xem bản đầy đủ
pdf 34 trang Mãnh Khiết 15/01/2024 15480 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lý thuyết đồ thị", để 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_ly_thuyet_do_thi.pdf