1
TRƯỜNG ĐẠI HỌC CẦN THƠ KHOA CNTT & TRUYỀN THÔNG BỘ MÔN KHOA HỌC MÁY TÍNH
TOÁN RỜI RẠC (DISCRETE MATHEMATICS)
GV: Trần Nguyễn Minh Thư (tnmthu@ctu.edu.vn)
08/2013
2
ĐẠI CƯƠNG VỀ ĐỒ THỊ
ĐỒ THỊ VÔ HƯỚNG
3
G = (X,U), trong đó: X: tập hợp các đỉnh U: tập hợp các cạnh u=(i, j) = (j,i) Đỉnh kề: chung cạnh (vd đỉnh 1,2) Cạnh kề: chung đỉnh (vd cạnh u1, u3) u5
4 1
5 u6 u1 Đỉnh cô lập u3
u10
3 2
6 Đỉnh treo
ĐỒ THỊ VÔ HƯỚNG
4
Đa đồ thị: tồn tại cặp đỉnh phân biệt (i,j) có nhiều hơn
một cạnh và không có khuyên
Đồ thị đơn (đơn đồ thị): tất cả các cặp đỉnh (i,j) phân
biệt có nhiều nhất một cạnh và không có khuyên
u4
u1
u7
u6
u3
1
2 4
u8
u5
u2
6
3 5
ĐỒ THỊ VÔ HƯỚNG
Đồ thị đầy đủ là đồ thị luôn tồn tại cung/cạnh nối hai
đỉnh bất kỳ
Đồ thị con
A là tập hợp con của X Đồ thị con GA của đồ thị G sinh ra bởi A có đỉnh là A có cung/cạnh là cung/cạnh của G mà đỉnh của chúng thuộc A.
5
ĐỒ THỊ VÔ HƯỚNG
6
Đồ thị bộ phận
V là tập hợp con của U Đồ thị bộ phận sinh ra bởi V là đồ thị có đỉnh thuộc X
và các cung/cạnh là V
Đồ thị bộ phận con là đồ thị vừa là đồ thị con vừa là
đồ thị bộ phận
Đồ thị bộ phận của G Đồ thị đầy đủ G Đồ thị con của G
ĐỒ THỊ VÔ HƯỚNG
Đường đi và chu trình:
Đường đi (vô hướng): một dãy các cạnh kề nhau
Đỉnh đầu: đỉnh bắt đầu của đường đi Đỉnh cuối: đỉnh kết thúc của đường đi Độ dài: số cạnh trên đường đi
Đường đi sơ cấp: đường đi có các đỉnh khác nhau từng đôi
một
a
b
c
a - b - e - f - b - c: đường đi a - d - e - f - b: đường đi sơ cấp
e
f
d
7
ĐỒ THỊ VÔ HƯỚNG
Đường đi và chu trình:
Chu trình: một đường đi có đỉnh đầu và đỉnh cuối trùng
nhau
Chu trình sơ cấp: một chu trình có các đỉnh khác nhau từng
đôi một, trừ đỉnh đầu và đỉnh cuối a
b
c
e
f
d
a - b - c - f - b - e - a: chu trình b - c - d - e - a - b: chu trình sơ cấp
ĐỒ THỊ VÔ HƯỚNG
Xét đồ thị vô hướng G = (X, U) Đồ thị liên thông: với mỗi cặp đỉnh i, j bất kỳ thì
luôn tìm được đường đi từ i đến j Nhận xét: đồ thị vô hướng G = (X, U) 1. Đồ thị G là liên thông khi và chỉ khi G chỉ có một
bộ phận liên thông
2. Mỗi bộ phận liên thông là một đồ thị liên thông 3. Mỗi đỉnh cô lập là một bộ phận liên thông
ĐỒ THỊ VÔ HƯỚNG
Đồ thị vô hướng có 9 đỉnh, 6 cạnh và 4 bộ phận
liên thông
4 1 6
9
8 3 7 2 5
ĐỒ THỊ CÓ HƯỚNG
Ví dụ: Đồ thị có hướng: G = (X,U)
Khuyên u8
5
u5 u7
1 4
u9 u2 u6
u1 u4
2
3 u3 Đỉnh cô lập
u10 7 Cung treo
Đỉnh treo 6
11
ĐỒ THỊ CÓ HƯỚNG
G = (X,U), trong đó : X: tập hợp các đỉnh U: tập hợp các cặp đỉnh có thứ tự u=(i, j) - cung Khuyên: Cung u=(i, i) Đỉnh treo: chỉ có một cung duy nhất (đi tới hoặc đi ra từ)
đỉnh đó
Cung treo: cung duy nhất (đi tới hoặc đi ra từ) đỉnh treo Đỉnh cô lập: không có cung nào từ đỉnh đó đi ra và cũng
không có cung nào đi tới đỉnh đó
12
ĐỒ THỊ CÓ HƯỚNG
Đa đồ thị: tồn tại cặp đỉnh có thứ tự (i,j) có nhiều hơn
một cung và có thể có khuyên
Đồ thị đơn (đơn đồ thị): tất cả các cặp đỉnh có thứ tự
(i, j) có nhiều nhất một cung
Đồ thị có hướng: G = (X,U), cung u=(i, j) U
13
ĐỒ THỊ CÓ HƯỚNG
Nửa bậc
Nửa bậc trong của đỉnh x, ký hiệu là
, là số cung
có ngọn là x, là số cung đi vào x
Nửa bậc ngoài của đỉnh x, ký hiệu là
, là số cung
có gốc là x, là số cung từ x đi ra
Bậc là số cung/cạnh chứa x
14
ĐỒ THỊ CÓ HƯỚNG
Đường đi và chu trình
Đường đi (có hướng): một dãy liên tiếp các cung
Đỉnh đầu: đỉnh bắt đầu của đường đi Đỉnh cuối: đỉnh kết thúc của đường đi Độ dài: số cung trên đường đi
Đường đi sơ cấp: đường đi có các đỉnh khác nhau từng
a
b
c
đôi một
e
f
d
15
a - d - c - f - e: đường đi sơ cấp
ĐỒ THỊ CÓ HƯỚNG
Đường đi và chu trình
Chu trình: một đường đi có đỉnh đầu và đỉnh cuối
trùng nhau
Chu trình sơ cấp: một chu trình có các đỉnh khác nhau
từng đôi một, trừ đỉnh đầu và đỉnh cuối
a
b
c
e
f
d
b - c - f - e - d - a - b: chu trình sơ cấp
ĐỒ THỊ CÓ HƯỚNG
Đồ thị có hướng liên thông Xét đồ thị có hướng G = (X, U) Đồ thị liên thông yếu: đồ thị vô hướng tương ứng
với G là liên thông
Đồ thị liên thông một chiều: nếu với hai đỉnh i , j bất kỳ hoặc là tồn tại đường đi từ i đến j , hoặc là tồn tại đường đi từ j đến i
Đồ thị liên thông mạnh: nếu với hai đỉnh i và j bất kỳ tồn tại đường đi đi từ đỉnh i đến đỉnh j và ngược lại
BIỂU DIỄN ĐỒ THỊ
Biểu diễn đồ thị bằng ma trận Ma trận đỉnh – cung
Ma trận đỉnh – cạnh
Ma trận đỉnh – đỉnh
Ma trận trọng số
BIỂU DIỄN ĐỒ THỊ
Biểu diễn đồ thị bằng ma trận Ma trận đỉnh – cung
u4
u1 2 u7 4
u6
u3 6 1 u8
u5
u1 1
1
u2 1
u3 0
u2 u4 0 3 u5 0
u6 0
5 u7 0
u8 0
-1
2
0
1
1
0
0
0
0
0
3
-1
-1
0
1
0
0
0
0
4
0
0
-1
0
1
1
0
0
5
0
0
0
-1
-1
0
1
0
6
0
0
0
0
0
-1
-1
BIỂU DIỄN ĐỒ THỊ
u4
u1
u7
Biểu diễn đồ thị bằng ma trận Ma trận đỉnh – cạnh
u6
u3
2 4
u8
u5
u2
1 6
3 5
u5 0
u6 0
u7 0
u8 0
u1 1
1
u2 1
u3 0
u4 0
0
0
0
0
1
2
0
1
1
1
0
0
0
0
3
1
1
0
0
1
1
0
0
4
0
0
1
1
1
0
1
0
5
0
0
0
0
0
1
1
0
6
0
0
0
BIỂU DIỄN ĐỒ THỊ
u4
Biểu diễn đồ thị bằng ma trận Ma trận kề đỉnh – đỉnh
u1 2 u7 4
u6
1
u3 6 u8
u5 u2 3 5
5
4
6
1
2
3
0
0
0
0
1
1
1
0
1
0
0
2
0
1
1
0
0
0
3
0
0
1
0
1
0
4
0
0
0
0
1
0
5
0
0
0
0
0
0
6
0
0
BIỂU DIỄN ĐỒ THỊ
u4
Biểu diễn đồ thị bằng ma trận Ma trận kề đỉnh – đỉnh
u1 2 u7 4
u6
1
u3 6 u8
u5 u2 3 5
5
4
6
1
2
3
0
0
0
0
1
1
1
0
1
0
0
2
0
1
1
0
0
0
3
0
0
1
0
1
0
4
0
0
0
0
1
0
5
0
0
0
0
0
0
6
0
0
BIỂU DIỄN ĐỒ THỊ
4
7
Biểu diễn đồ thị bằng ma trận Ma trận trọng số
2 1 4
6
8
5
3 6 1
3
2 5
1
5
6
3
4
2
2
1
1
3
2
3
4
7
4
5
6
8
5
6
24
ĐỒ THỊ EULER, HAMILTON
tnmtnhu@cit.ctu.edu.vn 8/2/2015
Đồ thị Euler và nửa Euler
mỗi cạnh của đồ thị đúng một lần Đồ thị Euler: Đồ thị có chu trình Euler
Chu trình Euler: chu trình trong đồ thị G đi qua
cạnh của nó đúng một lần
Đường đi Euler: đường đi đơn trong G đi qua mỗi
Đồ thị nửa Euler: Đồ thị có đường đi Euler Mọi đồ thị Euler đều là đồ thị nửa Euler
Đồ thị Hamilton và nửa Hamilton
26
Chu trình bắt đầu tại một đỉnh v nào đó qua tất cả các đỉnh còn lại mỗi đỉnh đúng một lần sau đó quay trở lại v được gọi là chu trình Hamilton. => Đồ thị được gọi là đồ thị Hamilton nếu nó chứa chu trình Hamilton.
Đường đi qua tất cả các đỉnh của đồ thị mỗi đỉnh
đúng một lần được gọi là đường đi Hamilton. => Đồ thị chứa đường đi Hamilton được gọi là đồ thị nửa Hamilton.
Như vậy, đồ thị Hamilton bao giờ cũng là đồ thị nửa Hamilton nhưng điều ngược lại không luôn luôn đúng.
Đồ thị Hamilton và nửa Hamilton
Ví dụ. Xét các đồ thị G1, G2, G3 trong hình sau:
a
b
c
d
G3
Ta có: đồ thị nửa Hamilton G2, Hamilton G1 và G3
27
28
ĐƯỜNG ĐI NGẮN NHẤT
tnmtnhu@cit.ctu.edu.vn 8/2/2015
BÀI TOÁN ĐƯỜNG ĐI NGẮN NHẤT
29
Đường đi ngắn nhất: Xét đồ thị có hướng G=(X, U) Với mỗi cung u=(i,j)=l(u) hay lij R: độ dài cung hay
là trọng số của cung.
Độ dài l của đường đi (có hướng) đi từ đỉnh i đến đỉnh j là tổng của tất cả các độ dài của các cung nằm trên đường đi đó.
Bài toán đường đi ngắn nhất là: với hai đỉnh i và j của
đồ thị hãy xác định đường đi ngắn nhất từ i đến j. Ứng dụng thực tiễn: độ dài cung được hiểu cụ thể
như là độ dài, chi phí, thời gian, lưu lượng ….
Giải thuật Moore – Dijkstra
30
Giải thuật Moore-Dijkstra tìm đường đi ngắn nhất từ
một đỉnh chọn trước s đến các đỉnh còn lại. G=(X,U) là đồ thị liên thông có trọng số dương
lij là độ dài của cung u= (i,j) với uU. *(i) là độ dài đường đi ngắn nhất từ đỉnh s đến đỉnh i. *(s)= 0
Giải thuật lặp n-1 lần (n: số đỉnh) Với mỗi đỉnh iX người ta gán cho i nhãn (i) theo cách
như sau:
thì (i) = *(i) thì (i) = min {(k) +lki , kS}.
Giải thuật Moore - Dijkstra
31
Khởi tạo Thực hiện bước lặp:
Tìm đường đi ngắn nhất từ đỉnh 1 đến các đỉnh còn lại của đồ thị sau:
4
7
5
2
2 4
1
5
3
1
7
5 1
2
3 6
Tìm đường đi ngắn nhất từ đỉnh 1 đến các đỉnh còn lại của đồ thị sau
33
4
5
7
2
2 4
1
5
Khởi tạo : S = {1}
3
1
= {2, 3, 4, 5, 6}
3
7
5 1
2
6
4 4 4 4
5 5 5 5
1 1 1 1
G G G G
2 2 2 2
3 3 3 3
6 6 6 6
2,3 2,3 2,3
4,6 4,6 4,6
2,5,6 2,5,6 2,5,6
5 5 5
2,4 2,4 2,4
i i i i
0 0
(i) (i) (i) (i)
7 7
1 1
p(i) p(i) p(i) p(i)
1
1
4
2 4
2
3
5
4
7
5
2
1
5
5 1
6 1 2,3 4,6 2,5,6 2,4 5 0
3
34
G i (i) p(i)
7 1
1 1
1
7
2
3 6
4
5
2
3
6 1 2,3 4,6 2,5,6 2,4 5 8 0 3
3 3
G i (i) p(i)
6 3
1 1
1)- Với Chọn i có (i) nhỏ nhất => i = 3 Tập đỉnh cần cập nhật khoảng cách
(2) = min {(2), (3) + l32} = min {7,1+5} = 6 (5) = min {(5), (3) + l35} = min {, 1+2} = 3 (6) = min {(6), (3) + l36} = min {, 1+7} = 8
4
2 4
3
7
5
2
1
5 1
1 2,3 0
5
3
35
5 4 2,5,6 2,4 3 3
6 5 8 3
G i (i) p(i)
2 4,6 6 3
1 1
1
7
2
3 6
3
1 2,3 0
5 4 2,5,6 2,4 3 8 3 5
6 5 8 3
2 4,6 5 5
1 1
G 2)- Với i Chọn i có (i) nhỏ nhất (i) => i = 5 p(i) Tập đỉnh cần cập nhật khoảng cách
(2) = min {(2), (5) + l52} = min {6,3+2} = 5 (4) = min {(4), (5) + l54} = min {, 3+5} = 8
4
2 4
3
7
5
2
1
5 1
1 2,3 0
5
3
36
5 4 2,5,6 2,4 3 8 3 5
6 5 8 3
G i (i) p(i)
2 4,6 5 5
1 1
1
7
2
3 6
3
1 2,3 0
5 4 2,5,6 2,4 3 8 3 5
6 5 6 2
G i (i) p(i)
2 4,6 5 5
1 1
3)- Với Chọn i có (i) nhỏ nhất => i = 2 Tập đỉnh cần cập nhật khoảng cách
(4) = min {(4), (2) + l24} = min {8,5+4} = 8 (6) = min {(6), (2) + l26} = min {8, 5+1} = 6
4
2 4
3
7
5
2
1
5
5 1
1 2,3 0
3
37
5 4 2,5,6 2,4 3 8 3 5
6 5 6 2
G i (i) p(i)
2 4,6 5 5
1 1
1
7
2
4)- Với Chọn i có (i) nhỏ nhất => i = 6 Tập đỉnh cần cập nhật khoảng cách
3 6
4
2 4
3
7
5
2
1
5
5 1
1 2,3 0
3
38
5 4 2,5,6 2,4 3 8 3 5
6 5 6 2
G i (i) p(i)
2 4,6 5 5
1 1
1
7
2
5)- Với Chọn i có (i) nhỏ nhất => i = 4 Tập đỉnh cần cập nhật khoảng cách
3 6
4
7
5
2 4
3
2
1
5
5 1
39
3
1 2,3 0
1
3
5 4 2,5,6 2,4 3 8 3 5
6 5 6 2
G i (i) p(i)
2 4,6 5 5
1 1
7
2
6
1
1
3
2
5
2 5
2 4
1
6
BÀI TẬP
40
Xét đồ thị vô hướng có trọng lượng, được cho bởi ma trận kề gia trọng như bảng sau, Tìm đường đi ngắn nhất từ đỉnh A đến các đỉnh còn lại
Đề thi năm 2012, lần 2
BÀI TẬP
41
Đề thi năm 2012, lần 2
Khởi tạo S = {A} X = {A,B,C,D,E,F,G,H} = X – S = {B,C,D,E,F,G,H}
E
F
G
H
A
B
C
D
B,C,D B,D,E C,E,F C, F, G B,C,F,H B,D,E,G,H D, F, H E,F,G
6 0 8 3
i (i) p(i)
A A A
BÀI TẬP
42
A
B
C
D
E
F
G
H
B,C,D B,D,E C,E,F C, F, G B,C,F,H B,D,E,G,H D, F, H E,F,G
8 8 7 0 7 3 4 5
i (i) p(i)
C A C C B D E
BÀI TẬP
43
Đề thi năm 2011, lần 1
BÀI TẬP
44
Đề thi năm 2011, lần 1
Khởi tạo S = {A} X = {A,B,C,D,E,F,G,H,K} = X – S = {B,C,D,E,F,G,H,K}
A
B
C
D
E
F
G
H
K
i
G, H, K D,K D,F D,E,G,H B, F, H B,D,F,G, B,C,D,H
B,C, K C,E, F, H, K K
0 1 1 4
(i) p(i)
A A A
BÀI TẬP
Đề thi năm 2011, lần 1
45
A B C D E F G H K
G, H, K D,K D,F D,E,G,H B, F, H B,D,F,G, i B,C,D,H
B,C, K C,E, F, H, K K
(i) 6 7 6 8 3 0 1 1 3
p(i)
A
A
K
D
H
H
B
C
Đề thi năm 2013, đợt 1
BÀI TẬP
46
Tìm đường đi ngắn nhất từ đỉnh A đến các đỉnh còn lại của đồ thị được cho bởi ma trận trọng số sau
BÀI TẬP
47
Đề thi năm 2013, đợt 1
Khởi tạo S = {A} X = {A,B,C,D,E,F,G,H,K} = X – S = {B,C,D,E,F,G,H,K}
A
B
C
D
E
F
G
H
K
B,F,G C,G,H B,D,H,K C,E,K D,F,H,K E,G,H B, F, H B,C,E,F,G,K C,D,E,H
1 7 0 2
i (i) p(i)
A A A
BÀI TẬP
Đề thi năm 2013, lần 1
48
F
G
H
K
A
B
C
D
E
B,F,G C,G,H B,D,H,K C,E,K D,F,H,K E,G,H B, F, H B,C,E,F,G,K C,D,E,H
1 5 3 6 8 11 9 0 2
i (i) p(i)
A B B H A B C F
8
F E 1
C
A 3
D 6 2
3
G B
1 3
K H