Đồ thị liên thông là đồ thị mà mọi cặp đỉnh củanó đều có đường đi nối chúng với nhau... Ma trận liên thuộc của đồ thị G là ma trận 1 aij nếu đỉnh vi là đỉnh đầu của cung ej nếu đỉnh vi
Trang 1Chương 4:
Trang 34.I MỞ ĐẦU
Bài toán về những cây cầu ở Konigsber
Năm 1736 Euler, cha đẻ của lý thuyết đồ thị, đã giải
được bài toán hóc búa nổi tiếng thời đó về những câycầu ở Konigberg
Thành phố Konigberg có hai hòn đảo nối với nhau vàvới 2 bờ sông bằng 7 chiếc cầu như hình vẽ
Trang 4Tìm đường đi qua tất cả 7 cây cầu, mỗi cây cầu chỉ được đi qua một lần, sau đó quay về nơi xuất phát
Trang 54.2 CÁC KHÁI NIỆM CƠ BẢN 4.2.1 Đồ thị, đỉnh, cạnh, cung:
Trang 64.2 CÁC KHÁI NIỆM CƠ BẢN
Trang 7 Cho đồ thị G = (V, E) Cạnh e E liên kết đỉnh v
và w, ta nói e liên thuộcc đỉnh v, w; đỉnh v và w gọi
Trang 8 Đồ thị hữu hạn: là đồ thị có số cạnh (cung) hữu hạn.
Đồ thị đơn: là đồ thị không có khuyên và không cócạnh song song
Đồ thị đầy đủ: là đồ thị mà mọi cặp đỉnh đều kề nhau
Bậc của đỉnh vV là tổng số cạnh liên thuộc với nó,
kí hiệu d(v) Mỗi khuyên được tính cho 2 bậc
Trang 9 Đỉnh treo: là đỉnh có bậc bằng 1.
Nửa bậc: Cho đồ thị có hướng G = (V, E)
+ Nửa bậc ra của đỉnh vV, kí hiệu dr(v) là
số cung đi ra từ đỉnh v
+ Nửa bậc vào của đỉnh vV, kí hiệu dv(v)
là số cung đi vào đỉnh v
4.2 CÁC KHÁI NIỆM CƠ BẢN
Đỉnh cô lập có bậc bằng 0
Trang 10Cho đồ thị G = (V, E) Khi đó:
Trang 124.2.2 Đường đi, chu trình, tính liên thông
Đường đi từ đỉnh v đến đỉnh w là dãy các cạnh nốitiếp nhau bắt đầu từ đỉnh v và kết thúc tại đỉnh w
Số cạnh trên đường đi là độ dài của đường đi
Đường đi có độ dài n từ đỉnh v đến đỉnh w được biểudiễn như sau:
= (v, e 1 , v 1 , e 2 , v 2 , …, v n-1 , e n , w)
Trong đó: vi (i = 1, …, n-1) là các đỉnh trên đường đi
và ei (i = 1, …, n) là các cạnh trên đường đi liên
Trang 13 Chu trình đơn là chu trình không đi qua một cạnh quá một lần.
Đường đi sơ cấp là đường đi không đi qua một đỉnh quá một lần.
Chu trình sơ cấp là chu trình không đi qua một đỉnh quá một lần.
Chu trình là đường đi có đỉnh đầu và đỉnh cuối
trùng nhau
Đường đi đơn là đường đi không đi qua một cạnh
quá một lần.
Trang 14 Đường đi có hướng trong đồ thị có hướng là dãy cáccung nối tiếp nhau (e1, e2, …, en) thỏa mãn đỉnh cuối củacung ei là đỉnh đầu của cung ei+1, i = 1, …, n-1.
Đường đi đơn (chu trình đơn) có hướng là đường đi(chu trình) có hướng không đi qua một cung quá một
Trang 15ba
Trang 16 Đồ thị liên thông là đồ thị mà mọi cặp đỉnh của
nó đều có đường đi nối chúng với nhau
Đồ thị con:
Cho đồ thị G = (V, E) Đồ thị G’ = (G’, E’) là
đồ thị con của G nếu:
(i) V’ V và E’ E và
(ii) e = (v,w) E: e E’ v, w V’
Thành phần liên thông:
Trang 174.2.3 BIỂU DIỄN ĐỒ THỊ TRÊN MÁY
Lưu ý mỗi khuyên được tính là 2 cạnh
Ma trận kề của đồ thị vô hướng luôn đối xứng qua đường chéo chính
Trang 180 0
0
v5
1 0
1 1
1
v4
0 1
2 1
0
v3
0 1
1 0
1
v2
0 1
0 1
,aa
)v(
Trang 19 Đồ thị có hướng
Cho đồ thị có hướng G = (V, E) có n đỉnh theo thứ
tự v1, v2, …, vn
Ma trận kề của đồ thị G là ma trận vuông A = (aij)n, trong đó aij là số cung đi từ đỉnh vi đến vj
Trang 200 0
0 0
0 0
v6
1 0
0 0
0 0
v5
1 1
0 0
0 0
v4
0 0
1 0
0 0
v3
0 0
1 1
0 0
v2
0 0
0 1
1 0
Trang 211 j
ij i
n
1 j
ji i
Trang 22aij nếu đỉnh vi liên thuộc cạnh ej
Trang 230 0
0 0
0
v5
0 1
1 0
1 1
0
v4
1 0
1 1
0 0
0
v3
0 0
0 1
1 0
1
v2
0 0
0 0
0 1
Trang 24V v
, a )
v (
n
1 j
Trang 25 Đồ thị có hướng
Cho đồ thị có hướng G = (V, E) có n đỉnh, V = {v1,
v2, …, vn}, m cạnh E = {e1, e2, …, em} và không cókhuyên
Ma trận liên thuộc của đồ thị G là ma trận
1
aij
nếu đỉnh vi là đỉnh đầu của cung ej
nếu đỉnh vi không kề cung ejnếu đỉnh vi là đỉnh cuối của cung ej
Trang 260 0
0 0
0 0
v5
0
1 0 0 0
e7
1 -1
0 0
0 0
0 v
0 1
-1 -1
0 0
0
v4
0 0
1 0
-1 -1
0
V3
0 0
0 1
1 0
-1
v2
0 0
0 0
0 1
Trang 28Định nghĩa
Hai đồ thị gọi là đẳng cấu nhau nếu có sự tương ứng
1 – 1 giữa các đỉnh và các cạnh (cung) với nhau
Định lý
Cho G1 = (V1, E1), G2(V2, G2) là 2 đồ thị đẳng cấu Khi đó:
(i) G1, G2 có số cạnh và số đỉnh bằng nhau
(ii) Số đỉnh bậc k của G1 và G2 bằng nhau
(iii) Số chu trình đơn, sơ cấp có chiều dài k của G1
4.2.4 ĐỒ THỊ ĐẲNG CẤU
Trang 30Ví dụ
Trang 31b
c
de
1
2
34
5Đẳng cấuĐường đi: a, b, c, d, e
Tương ứng với đường
đi: 1, 2, 3, 4, 5
Tương ứng:
a-1, b-2, c-3, d-4, e-5
Trang 32ĐỒ THỊ LƯỠNG PHÂN
Đồ thị lưỡng phân G = (V, E) là đồ thị mà tập cácđỉnh được phân làm 2 tập rời nhau V1, V2 sao chomỗi cạnh của đồ thị liên kết với 1 đỉnh thuộc V1
và 1 đỉnh thuộc V2
Kí hiệu:
G = ({V1, V2}, E)
Trang 33Ví dụ
Trang 344.3 ĐỒ THỊ EULER
4.3.1 Định nghĩa
Cho đồ thị vô hướng G = (V, E)
Đường đi Euler là đường đi đơn qua mọi cạnh vàmọi đỉnh đồ thị
Chu trình Euler là chu trình đơn qua mọi cạnh vàmọi đỉnh đồ thị
Trang 384.3.1 Điều kiện cần và đủ để đồ thị có chu
trình và đường đi Euler
Đồ thị G có đường đi Euler khi và chỉ khi G liên thông và có đúng 2 đỉnh bậc lẻ.
Đồ thị G có chu trình Euler khi và chỉ khi G liên thông và mọi đỉnh đều có bậc chẵn khác 0.
Đồ thị vô hướng:
Trang 39 Đồ thị có hướng G có chu trình có hướng Euler
khi và chỉ khi G liên thông mạnh và mọi đỉnh đều
có nửa bậc ra bằng nửa bậc vào.
Chú thích:
Đồ thị liên thông mạnh là đồ thị có hướng mà
mọi cặp đỉnh của nó đều có đường đi có hướng nốichúng với nhau
Đồ thị có hướng:
dv(v) = dr(v)
Trang 40Các thuật toán tìm chu trình Euler
Đầu vào: Đồ thị G , không có đỉnh cô lập
Đầu ra: Chu trình Euler C của G, hoặc kết luận G
không có chu trình Euler
Trang 41 Nếu không tồn tại Ck thì kết luận không có chutrình Euler Kết thúc
Loại khỏi H chu trình Ck Nếu H chứa các đỉnh cô
lập thì loại chúng ra khỏi H sang bước 4.
Nếu H = thì kết luận C là chu trình Euler Kết thúc, ngược lại sang bước 5
(3)
(4)
Nếu H và C không có đỉnh chung thì kết luận không
có chu trình Euler
H và C có đỉnh chung Chọn v là đỉnh chung của H
và C Đặt k:= k+1 Quay lại bước 2.
(5)
Trang 42Cho G là đồ thị Thanh mã tấu Mohammed
Trang 43(1) Đặt H := G, k := 1, C := , v := f.
(2) Ta xây dựng chu trình C1 trong H:
C1 := (f,g,k,h,i,e,b,c,d,f)Đặt C := C C1 = (f,g,k,h,i,e,b,c,d,f)
(3) Loại C1 ra khỏi H, ta được đồ thị H như sau
Trang 44Các đỉnh c và k là các đỉnh cô lập, vì thế ta loại
chúng ra khỏi H
(5) Chọn đỉnh chung của H và C là v := f
Đặt k := k+1 = 2 Quay lại bước (2)
(2) Ta xây dựng chu trình C2 trong H:
C2 := (f,i,j,h,g,d,b,a,e,f)Nối C2 vào C ta được chu trình C sau
C := C C2 = (f,g,k,h,i,e,b,c,d,f) (f,i,j,h,g,d,b,a,e,f)
Trang 45(3) Loại C2 ra khỏi H, ta được đồ thị H gồm toàn các
đỉnh cô lập Loại các đỉnh cô lập ta có H =
(4) Vì H = , ta kết luận C là chu trình Euler, kết thúc
Trang 46 Thuật toán 2 (Fleury)
+ Đầu vào Đồ thị G , không có đỉnh cô lập
+ Đầu ra. Chu trình Euler C của G, hoặc kết luận G không có chu trình Euler
Trang 47(3) Chọn cạnh đi tiếp:
- Trường hợp đỉnh v1 là đỉnh treo: Tồn tại duy nhấtđỉnh v2 kề v1 Chọn cạnh (v1, v2) Sang bước (4)
- Trường hợp đỉnh v1 không là đỉnh treo:
Nếu mọi cạnh liên thuộc v1 là cầu , thì không có chu
trình Euler, kết thúc
Ngược lại, chọn cạnh (v1, v2) bất kỳ không phải là
cầu trong H Thêm vào đường đi C đỉnh v2 Sang bước (4)
Trang 48(4) Xoá cạnh vừa đi qua, và xoá đỉnh cô lập:
Loại khỏi H cạnh (v1, v2) Nếu H có đỉnh cô lập, thìloại chúng khỏi H
Đặt v1 := v2 Quay lại bước (2)
Chú thích:
Cạnh v gọi là cầu nếu bỏ cạnh đó thì đồ thị
không liên thông
Trang 504.4 ĐỒ THỊ HAMINTON4.4.1 Định nghĩa
Trang 524.4.3 Điều kiện đủ
Cho G là đơn đồ thị n đỉnh (n 3) Nếu:
Gv
,2
n)
v(
thì G có chu trình Hamintơn
Cho G là đơn đồ thị n đỉnh (n 3) Nếu:
Gv
,2
1
n)
v(
Định lí 1
Định lí 2
Trang 53Định lí 3
Nếu G là đồ thị có hướng liên thông mạnh và:
Gv
,2
n)
v(d
&
2
n)
v(
thì G có chu trình có hướng Hamintơn
Trang 544.5 TÌM ĐƯỜNG ĐI NGẮN NHẤT
4.5.1 Đồ thị có trọng số:
Là đồ thị mà mỗi cạnh của nó được gán 1 số
Trong đồ thị có trọng số, độ dài trọng số của
đường đi là tổng các trọng số trên đường đi đó
4.5.2 Phát biểu bài toán:
Cho đồ thị có trọng số G = (V, E) Tìm đường đi
Trang 554.5.3 Thuật toán Dijkstra:
Tìm đường đi ngắn nhất từ đỉnh a đến đỉnh z trong
đồ thị có trọng số Trọng số của cạnh (i,j) là w(i,j) > 0
và đỉnh x sẽ mang nhãn L(x) Khi kết thúc thuật giảiL(z) chính là chiều dài đường đi ngắn nhất từ a đến z
Đầu vào: Đồ thị liên thông G = (V, E) có trọng số
w(i, j) > 0 với mọi cạnh (i, j), đỉnh a và đỉnh z
Đầu ra: Chiều dài đường đi ngắn nhất và đường đingắn nhất
Trang 57(4) Với mỗi x T kề với v gán:
L(x) min{L(x), L(v) + w(v, x)}
Nếu L(x) này thay đổi thì ghi nhớ đỉnh v cạnh x
để sau này xây dựng đường đi ngắn nhất
Quay về bước 2.
Trang 5853
Trang 59Phương pháp lập bảng ghi nhãn:
Ta lập bảng tính toán các nhãn gồm các cột ứngvới các đỉnh, và các hàng ứng với các các lần tínhnhãn ở bước 4 Các nhãn gạch dưới ứng với nhãnnhỏ nhất ở bước 2 và đỉnh bị loại ghi bên phải.Sau khi đỉnh z bị loại, từ z ta lần ngược về đỉnh a theo nhãn ghi trên bảng ta có đường đi ngắn nhất
Trang 60e
dcb
2
28
53
Trang 614.5.4 Thuật toán Floyd:
Thuật giải tìm độ dài đường đi ngắn nhất giữa mọi cặp đỉnh trong đồ thị có hướng liên thông có trọng số
+ Đầu vào: Đồ thị liên thông G = (V,E), V= {1, 2, , n},
có trọng số w(i,j) >0 với mọi cung (i,j)
+ Đầu ra: Ma trận D=[d(i,j)], trong đó d(i,j) là chiều dàiđường đi ngắn nhất từ i đến j với mọi cặp (i,j)
Trang 62+ Phương pháp:
(1) Bước khởi tạo: Ký hiệu D0 là ma trận xuất phát
D0 = [d0(i,j)]
trong đó:
d0(i,j) = w(i,j) nếu tồn tại cung (i,j)
d0 (i,j) = + nếu không tồn tại cung (i,j)
Trang 64 Định lý: Thuật toán Floyd là đúng.
Hệ quả
(i) Nếu ma trận kết quả của thuật toán Floyd có phần tửhữu hạn trên đường chéo chính thì đồ thị chứa chu trình.(ii) Nếu ma trận kết quả chứa phần tử + ngoài đườngchéo chính thì đồ thị không liên thông mạnh
Trang 662 2
2
2 7
1
6 5
4 3
2 1
Đỉnh
Áp dụng thuật toán Floyd:
Ma trận khoảng cách xuất phát D0 là (các ô trống là ):
D0
Trang 67D1 =
1
6
4 2
9 2
2
2 7
1
6 5
4 3
2 1
Đỉn h
Trang 68D2 =
10 4
2 9
2
5
5 8
2
8 2
11 7
1
6 5
4 3
2 1
Đỉn h
Trang 69D3 =
8 2
5 1
6
5 10
4 2
9 2
5
11 5
8 4
4
3
3
7 1
4
2
14 8
2 11
7
1
6 5
4 3
2 1
Đỉ nh
Trang 7011 5
8 4
4
3
3
7 1
4
2
13 7
2 10
6
1
6 5
4 3
2 1
Đỉn h
D4 =
Trang 71D5 = D
5 =
7 2
6 4
1 4
6
5 9
4 2
8 2
5
10 5
9 7
4 7
4
3
3
6 1
5 3
9 3
2
12 7
2 9
6 9
1
6 5
4 3
2 1
Đỉn h
Trang 72D = D6 =
7 2
6 4
1 4
6
5 7
4 2
6 2
5
10 5
9 7
4 7
4
3 5
9 7
4 7
3
6 1
5 3
7 3
2
12 7
2 9
6 9
1
6 5
4 3
2 1
Đỉn h
Cuối cùng, D là ma trận khoảng cách ngắn nhất giữa cácđỉnh Theo hệ quả ta thấy đồ thị liên thông mạnh và chứa
Trang 73Độ cao là 2
Trang 74Một số thuật ngữ:
Cho T là cây có gốc vo Giả sử x, y, z là các đỉnh của T
và (vo, v1, , vn) là đường đi trong T Khi đó ta gọi:
vn-1 là cha của vn
vo, ,vn-1 là tiền bối của vn
vn là con của vn-1
y là hậu thế của x, nếu x là tiền bối của y
y và z là anh em nếu chúng đều là con của đỉnh x
x là đỉnh lá nếu nó không có con
Trang 75v4 v5 v6 v7
v2 là cha của v4&v5
v1, v2 là tiền bối của v4
v4 là con của v2
v4&v5 là anh em
v4, v5, v6, v7: đỉnh lá v1, v2, v3: đỉnh trong
Trang 76Rừng là đồ thị mà mỗi thành phần liên thông là cây
Rừng gồm 3 cây
Trang 77Định lí
Cho T là đồ thị n đỉnh Các mệnh đề sau tương đương
(i) T là cây
(ii) T không chứa chu trình và có n-1 cạnh
(iii) T liên thông và có n-1 cạnh
(iv) T liên thông và mỗi cạnh là cầu
(v) Hai đỉnh bất kỳ được nối với nhau bởi một đường điduy nhất
(vi) T không chứa chu trình và nếu thêm một cạnh nốihai đỉnh thì ta thu được đúng 1 chu trình
Trang 78Ví dụ
Cho đồ thị G là rừng có t cây và n đỉnh Tìm sốcạnh của G
Đs: (n – t) cạnh
Trang 79Cây cân bằng là cây mà mọi đỉnh lá có mức là h hay
h-1, trong đó h là chiều cao của cây
Trang 80&
1
ni
c
1m
1
mln
&
1m
1
li
Trang 84Định lí
Đồ thị G = (V, E) có cây phủ G liên thông
Trang 85Các thuật toán tìm cây phủ
Duyệt cây theo chiều rộng
Trong thuật giải này ta ký hiệu S là dãy các đỉnh
+ Đầu vào. Đồ thị G=(V,E) với các đỉnh: v1, v2,…, vn
+ Đầu ra. Cây phủ T hoặc kết luận đồ thị không liênthông
+ Các bước
(1) Khởi tạo:
Đặt S := {v1} T là đồ thị gồm 1 đỉnh v1 và không
có cạnh, v1 là gốc
Trang 86(2) Thêm cạnh:
Với mỗi xS theo thứ tự, thêm cạnh (x,y) và đỉnh
y vào T sao cho không tạo thành chu trình
Nếu thêm được thì sang bước (3)
Nếu không thêm cạnh được nữa thì kết thúc Khi đónếu T chứa hết các đỉnh của đồ thị T là cây phủ, ngược lại đồ thị không liên thông
(3) Cập nhật S:
Thay S bởi các con (trong T) của các đỉnh trong
Trang 88Duyệt cây theo chiều sâu
+ Đầu vào. Đồ thị G=(V,E) với các đỉnh v1, v2,…, vn
+ Đầu ra. Cây phủ T hoặc kết luận đồ thị không liên thông
Trang 89- Nếu không tồn tại cạnh như vậy thì đến bước (4);
- Ngược lại thêm cạnh (w,vk) và đỉnh vk vào T, số
cạnh e tăng lên 1, e:=e+1, đặt w:=vk và quay lại
bước (2)
Trang 90 Nếu w = v1 , Kết thúc Đồ thị không liên thông.
Nếu w v1 sang bước (5)
(5) Quay lui:
(4) Kiểm tra điều kiện kết thúc:
Giả sử x là cha của w (trong T) đặt w := x
Quay lại bước (3)