Beruflich Dokumente
Kultur Dokumente
01/01/2015
Đồ thị có hướng
Ví dụ
e1
e4 e3
e9
d e5 e2 c
e8
e7 e6
Hình 1: Đồ thị có hướng 4 đỉnh và 9 cạnh. Hãy xác định cạnh khuyên
và song song.
Ví dụ
d e8 c
e2 e7
e4 e5
e6 e3
a e1 b
Hình 2: Đồ thị vô hướng 4 đỉnh và 8 cạnh. Hãy xác định các cạnh
khuyên và song song
Ví dụ
d c d c
a b a b
(a) đồ thị có hướng G (b) đồ thị vô hướng G
Hình 3: Đồ thị có hướng G và đồ thị nền vô hướng G 0
Ví dụ
d c
a b
Thuật ngữ
Quan hệ giữa đỉnh và đỉnh
I Nếu hai đỉnh vi và vj được liên kết bằng một cạnh e thì hai
đỉnh này được gọi là kề (adjacent) nhau
Quan hệ giữa cạnh và cạnh
I Nếu hai cạnh ei và ej có một đỉnh chung v thì hai cạnh này
được gọi là kề (adjacent) nhau
Quan hệ giữa cạnh và đỉnh
I Khi một cạnh e là liên kết của cặp đỉnh (vi , vj ) thì đỉnh vi và
vj kề, liên thuộc (incident) với cạnh e, cạnh e kề với đỉnh vi
và đỉnh vj
Ví dụ
d e5 c
e3 e2 e4
a e1 b
Hình 5: Đồ thị vô hướng 4 đỉnh và 5 cạnh. Hãy xác định mối quan hệ
kề giữa đỉnh-đỉnh, cạnh-cạnh và liên thuộc giữa đỉnh-cạnh
Ví dụ
d
d
a h
f
f a
c
e b
c
g e
b
(a) Đồ thị vô hướng (b) Đồ thị có hướng
Hình 6: Hãy xác định bậc của các đỉnh của các đồ thị
v∈V
Chứng minh
I Nhận thấy mỗi cạnh e = (u, v) được tính một lần trong d(u)
và một lần trong d(v).
I Từ đó suy ra tổng tất cả các bậc của các đỉnh bằng hai lần số
cạnh
Hệ quả 1.1
Số đỉnh bậc lẻ của một đồ thị là một số chẵn
Chứng minh
I Gọi Veven và Vodd tương ứng là tập các đỉnh bậc chẵn và tập
các đỉnh bậc lẻ của đồ thị G = (V , E ). Khi đó
Định lý 1.2
Cho một đồ thị có hướng G = (V , E ) ta có công thức sau
v∈V v∈V
Chứng minh
Sinh viên tự chứng minh
Định lý 1.3
Cho một đồ thị đơn có số đỉnh n ≥ 2 luôn tồn tại ít nhất hai đỉnh
có cùng bậc
Chứng minh
Sinh viên tự chứng minh
Định lý 1.4
Cho một đồ thị đơn có số đỉnh n ≥ 3 có đúng hai đỉnh cùng bậc
thì hai đỉnh này không thể đồng thời có bậc 0 hoặc bậc n − 1
Chứng minh
Sinh viên tự chứng minh
{d1 , d2 , ..., dn }
là khả đồ thị
Chứng minh
Sinh viên tự chứng minh
{d1 , d2 , ..., dn }
là dãy bậc của một đồ thị đơn nếu và chỉ nếu dãy nó thỏa
k n
di ≤ k (k + 1) + min {k, dj }
X X
i=1 j=k+1
Chứng minh
Sinh viên tự chứng minh
Ví dụ
Ví dụ
Ví dụ
1 4
2 5
Ví dụ
Ví dụ
V = V + {v}
I Xóa đỉnh v khỏi đồ thị G
V = V − {v}
sau đó xóa các cạnh kề với v khỏi G
I Thêm cạnh e = (x, y) vào đồ thị G
E = E + {e}
sau đó thêm hai đỉnh x, y vào đồ thị G
I Xóa cạnh e khỏi đồ thị G
E = E − {e}
Spring 2014 Graph Theory 48
CÁC QUAN HỆ GIỮA ĐỒ THỊ
Giới thiệu
I Quan hệ con
I Quan hệ sinh
I Quan hệ bộ phận
I Quan hệ đẳng cấu
I Quan hệ bù
f : V → V0 (4)
Định lý 1.7
Điều kiện cần để hai đồ thị G và G 0 đẳng cấu là chúng phải có
I Số đỉnh bằng nhau
I Số cạnh bằng nhau
I Bậc của các đỉnh tương ứng bằng nhau
Chứng minh
Sinh viên tự chứng minh
(a) dạng hình tròn (b) dạng hình lưới (c) dạng hình cây
Hình 18: Các kiểu vẽ đồ thị
A = (aij )
1 (vi , vj ) ∈ E (5)
aij =
0 (vi , vj ) ∈
/E
Nhận xét
I Ma trận kề của đồ thị phụ thuộc vào thứ tự liệt kê các đỉnh.
Ta có n! cách liệt kê các đỉnh do đó sẽ có n! ma trận kề khác
nhau cho một đồ thị
I Ma trận kề của đồ thị vô hướng là một ma trận đối xứng
A = (aij )
1 vi kề ej (6)
aij =
0 vi không kề ej
d a b c d e f
a 0
1 1 1 0 1
f b1 0 1 0 1 0
a
c 1
1 0 0 1 1
A=
d
1 0 0 0 0 1
c e 0
1 1 0 0 1
e f 1
b 0 1 1 1 0
(a) đồ thị (b) ma trận kề
Hình 19: Biểu diễn đồ thị bằng ma trận kề
Nhận xét
Ma trận kề cũng có thể dùng để biểu diễn đồ thị vô hướng có cạnh
khuyên và cạnh song song
a b
a b c d
a 0
3 0 2
b3 0 1 1
A=
c 0
1 1 2
d c
d 2 1 2 0
(a) đa đồ thị (b) ma trận kề
Hình 20: Biểu diễn đa đồ thị bằng ma trận kề
e1
v1
e3
e1 e2 e3 e4 e5
e4 v1 1
1 1 1 0
e2 e5 A = v2 0 1 1 0 0
v2 v3 v3 0 0 0 1 1
(a) đồ thị (b) ma trận liên thuộc
Hình 21: Biểu diễn đồ thị bằng ma trận liên thuộc
Định lý 1.8
Hai đồ thị G1 và G2 với hai ma trận kề tương ứng A1 và A2 tương
ứng đẳng cấu với nhau khi và chỉ khi tồn tại một ma trận hoán vị
(permuation matrix) P sao cho
P.A1 .P T = A2 (7)
Lưu ý
Ma trận hoán vị là ma trận mà mọi dòng, mọi cột chỉ có một phần
tử ”1”, còn lại là phần tử ”0”
1 2 3 4
1 0 1 0 1
1 2 2 1 0 1 0
A1 =
3 0 1 0 1
4 3 4 1 0 1 0
(a) đồ thị G1 (b) ma trận kề A1
a b c d
a 0
0 1 1
a b b0 0 1 1
A2 =
c 1
1 0 0
d c d 1 1 0 0
(c) đồ thị G2 (d) ma trận kề A2
Hình 22: Đồ thị và ma trận kề
a b
a c
a d
d a f
a b c
f b b e
a
c c f
d c e
c e d f
e f e f
b
(a) đồ thị (b) danh sách đỉnh (c) danh sách cạnh
Hình 23: Biểu diễn đồ thị bằng danh sách cạnh & danh sách đỉnh
Việc lựa chọn biểu diễn bằng ma trận kề hay danh sách kề cho
một đồ thị ảnh hưởng đến thời gian và bộ nhớ sử dụng của các
thuật toán đồ thị
I Nếu đồ thị thưa, chọn biểu diễn nào cho đồ thị? Tại sao
I Nếu đồ thị dày, chọn biểu diễn nào cho đồ thị? Tại sao
P = v1 e1 v2 e2 v3 ...vm
I Đối với đồ thị đơn chúng ta có thể viết dây chuyền bằng một
dãy ”đỉnh”
P = v1 v2 ...vm
hoặc
P = v1 − vm
d d d
f a f a f a
c c c
e e e
b b b
(a) ”d a c b” (b) ”d f a c f a c b” (c) ”d f a c e”
Hình 25: Một số dây chuyền
Nhận xét
1. Hai dây chuyền P1 = v1 ...vk và P2 = vk ...vm có đỉnh cuối của
P1 là đỉnh đầu của P2 thì dãy P
P = P1 ⊕ P2 = v1 ...vk ...vm
P = v1 e1 v2 e2 v3 ...vm
f a
c
e
b
d d
f a f a
c c
e e
b b
(a) chu trình ”c f e c” (b) mạch ”d f a d”
Hình 27: Chu trình và mạch
Ý tưởng
Ý tưởng này do [Tarjan, 1972] đề xuất để tìm đường đi trong một
mê cung
1. Bắt đầu từ đỉnh được cho
2. Tại mỗi đỉnh bất kỳ v
I Duyệt đỉnh v
duyệt và lặp lại các thao tác trên đối với những đỉnh này
I Quay lại đỉnh trước của v
Lưu ý
I Để không một đỉnh nào liệt kê hai lần ta sử dụng kỹ thuật
”đánh dấu”
d
h
a f i
c
b e j
Hình 28: Thứ tự duyệt các đỉnh đồ thị bắt đầu từ đỉnh a
Minh họa DFS
d
h
a f i
c
b e j
Hình 28: Thứ tự duyệt các đỉnh đồ thị bắt đầu từ đỉnh a
Minh họa DFS
d
h
a f i
c
b e j
Hình 28: Thứ tự duyệt các đỉnh đồ thị bắt đầu từ đỉnh a
Minh họa DFS
d
h
a f i
c
b e j
Hình 28: Thứ tự duyệt các đỉnh đồ thị bắt đầu từ đỉnh a
Minh họa DFS
d
h
a f i
c
b e j
Hình 28: Thứ tự duyệt các đỉnh đồ thị bắt đầu từ đỉnh a
Minh họa DFS
d
h
a f i
c
b e j
Hình 28: Thứ tự duyệt các đỉnh đồ thị bắt đầu từ đỉnh a
Minh họa DFS
d
h
a f i
c
b e j
Hình 28: Thứ tự duyệt các đỉnh đồ thị bắt đầu từ đỉnh a
Minh họa DFS
d
h
a f i
c
b e j
Hình 28: Thứ tự duyệt các đỉnh đồ thị bắt đầu từ đỉnh a
Minh họa DFS
d
h
a f i
c
b e j
Hình 28: Thứ tự duyệt các đỉnh đồ thị bắt đầu từ đỉnh a
Ý tưởng
Ý tưởng này được [Moore, 1959] đưa ra để tìm đường đi trong
một mê cung
I Bắt đầu từ một đỉnh được cho
I Tại mỗi đỉnh bất kỳ v
I Duyệt đỉnh v
I Tiếp tục lặp lại chiến lược cho các đỉnh kề của nó.
d
h
a f i
c
b e j
Hình 29: Thứ tự duyệt các đỉnh đồ thị bắt đầu từ đỉnh a
Minh họa BFS
d
h
a f i
c
b e j
Hình 29: Thứ tự duyệt các đỉnh đồ thị bắt đầu từ đỉnh a
Minh họa BFS
d
h
a f i
c
b e j
Hình 29: Thứ tự duyệt các đỉnh đồ thị bắt đầu từ đỉnh a
Minh họa BFS
d
h
a f i
c
b e j
Hình 29: Thứ tự duyệt các đỉnh đồ thị bắt đầu từ đỉnh a
Minh họa BFS
d
h
a f i
c
b e j
Hình 29: Thứ tự duyệt các đỉnh đồ thị bắt đầu từ đỉnh a
Minh họa BFS
d
h
a f i
c
b e j
Hình 29: Thứ tự duyệt các đỉnh đồ thị bắt đầu từ đỉnh a
Minh họa BFS
d
h
a f i
c
b e j
Hình 29: Thứ tự duyệt các đỉnh đồ thị bắt đầu từ đỉnh a
Minh họa BFS
d
h
a f i
c
b e j
Hình 29: Thứ tự duyệt các đỉnh đồ thị bắt đầu từ đỉnh a
Minh họa BFS
d
h
a f i
c
b e j
Hình 29: Thứ tự duyệt các đỉnh đồ thị bắt đầu từ đỉnh a
Minh họa BFS
d
h
a f i
c
b e j
Hình 29: Thứ tự duyệt các đỉnh đồ thị bắt đầu từ đỉnh a
Minh họa BFS
d
h
a f i
c
b e j
Hình 29: Thứ tự duyệt các đỉnh đồ thị bắt đầu từ đỉnh a
I Trong trường hợp đồ thị được biểu diễn bằng danh sách kề,
độ phức tạp của DFS và BFS là
O (|V | + |E |)
I Trong trường hợp đồ thị được biểu diễn bằng ma trận kề thì
độ phức tạp của hai thuật toán trên là
O |V | + |V |2
Bài toán 1.4 (Bài toán tìm một đường đi có chiều dài cho
trước)
Cho đồ thị G = (V , E ) và hai đỉnh s và t và một số dương k. Hãy
tìm đường đi có chiều dài k đi từ s cho đến t
Bài toán 1.6 (Bài toán tìm tất cả chu trình sơ cấp)
Cho đồ thị G = (V , E ) và hai s. Hãy tìm tất cả chu trình sơ cấp
đi qua s.
A A
E E
F F
C C
B B
D D
A A
E E
F F
C C
B B
D D
D D
F
3km
G
8km
4km 6km
3km
E A
5km 3km
D
5km 3km
6km 9km
4km
C 5km B
Hình 32: Tìm đường đi trên bản đồ các thị trấn
Định lý 1.9
Cho G = (V , E ) là một đồ thị đơn vô hướng có n ≥ 3 đỉnh mọi
đỉnh v đều có d(v) ≥ 2 thì luôn tồn tại một chu trình sơ cấp trong
G
Chứng minh
I Vì G là một đồ thị hữu hạn nên số đường đi sơ cấp trong G là
hữu hạn.
I Giả sử P = v1 v2 ...vk là một trong các đường đi sơ cấp có độ
dài cực đại. Do bậc của mỗi đỉnh không nhỏ hơn 2 nên đỉnh
v1 phải kề với một đỉnh u nào đó. Hai tình huống xảy ra
1. Nếu đỉnh u = vi ∈ {v3 , ..., vk } thì đồ thị G sẽ có chu
trình sơ cấp Q = v1 ...vi v1
Định lý 1.10
Cho G = (V , E ) là một đồ thị đơn vô hướng có số đỉnh n ≥ 4 và
mọi đỉnh đều có bậc lớn hơn 3 thì trong G luôn tồn tại một chu
trình sơ cấp có độ dài chẵn.
Chứng minh
I Vì G là một đồ thị hữu hạn nên số đường đi sơ cấp trong G là
hữu hạn.
I Giả sử P = v1 v2 ...vk là một trong các đường đi sơ cấp có độ
dài cực đại. Do bậc của mỗi đỉnh không nhỏ hơn 3 nên đỉnh
v1 phải kề với hai đỉnh vi , vj ∈ {v3 , ..., vk }, i < j
Q1 = v1 ...vi v1
Q2 = v1 ...vj v1
I Nếu một trong hai Q1 , Q2 có độ dài chẵn thì ta có điều phải
chứng minh
R1 = v1 ...vi
R2 = vi ...vj v1
R2 = v1 vi ...vj v1
a e
a d
c c
e
d
b b
(a) liên thông (b) không liên thông
Hình 35: Đồ thị liên thông và không liên thông
a d h
c f g
b e i
Hình 36: Hãy xác định điểm cắt và cạnh cầu của đồ thị
Nhận xét
I Số thành phần liên thông của một đồ thị là số lượng các lớp
tương đương
I Các thành phần liên thông là các đồ thị con
I Một đồ thị được gọi là đồ thị liên thông nếu nó chỉ có một
thành phần liên thông
a d h
c f g
b e i
Định lý 1.11
Nếu trong đồ thị G = (V , E ) có đúng hai đỉnh bậc lẻ thì hai đỉnh
này phải liên thông với nhau
Chứng minh
I Giả sử đồ thị G = (V , E ) có đúng hai đỉnh bậc lẻ x và y
nhưng hai đỉnh này lại không liên thông với nhau. Do đó, x
và y phải thuộc vào 2 thành phần liên thông G1 , G2 khác
nhau của G
I Theo giả thuyết do G chỉ có đúng 2 đỉnh bậc lẻ nên trong mỗi
đồ thị con G1 và G2 chỉ có đúng một đỉnh bậc lẻ. Mâu thuẫn
với tính chất số đỉnh bậc lẻ trong một đồ thị là một số chẳn.
I Vậy x và y phải liên thông với nhau.
Định lý 1.12
Cho đồ thị đơn G = (V , E ) có số đỉnh n ≥ 2, nếu ∀v1 , v2 ∈ V và
d(v1 ) + d(v2 ) ≥ n thì đồ thị G liên thông
Chứng minh
Sinh viên tự chứng minh
Hệ quả 1.2
n
Cho đồ thị đơn G = (V , E ) có số đỉnh n, nếu ∀v ∈ V , d(v) ≥ 2
thì đồ thị G liên thông
Chứng minh
Sinh viên tự chứng minh
a a
e b e b
d c d c
e g
a
f
b d
Hình 39: Đồ thị có các thành phần liên thông mạnh {a},{e},{f},{g} và
{b,c,d}
a d h
c f g
b e i
e∈E
A = (aij )
0 i =j
(12)
aij = L (vi , vj ) i 6= j, (vi , vj ) ∈ E
∞ i= 6 j, (vi , vj ) ∈
/E
d a b c d e f
4 a 1 ∞ 6
1 0 5 2
f 6
b 5 0 4 ∞ 3 ∞
a
c
2 4 0 ∞ 1 3
1 A=
2 d
2 1 ∞ ∞ 0 ∞ 4
5
c e ∞ 3
3
1 ∞ 0 2
e 4
3 b f 6 ∞ 3 4 2 0
(a) đồ thị có trọng số (b) ma trận trọng số
Hình 43: Biểu diễn đồ thị bằng ma trận trọng số
e∈P e f” là 14
d d
-4 1 -4 1
f 6 a f 6 a
1 2 1
2 2 2
-5 -5
c c
e 3 0 3
3 e 0
b 3 b
(a) trọng số chu trình ”a b c (b) trọng số chu trình ”a d f
a” là -3 a” là 3
Hình 45: Trọng số các chu trình
Name
Number
Employee
ISA
Description
Price Date
License
Parts Cost Value Comission
Work
Repairs Car
seller buyer
Year Client ID
Manufacturer Model
Name Phone
Address
1,1,L
qb
0,1,L 0,1,L
1,1,R
start qa qc
0,1,R 0,1,L
qd
1,0,R 1,0,R
1,1,R
qe
identify
candidate
models
evaluate
update
candidate
model
models
is best
yes candidate
better?
no
stop
Moore, E. F. (1959).
The shortest path through a maze.
Bell Telephone System.
Tarjan, R. (1972).
Depth-first search and linear graph algorithms.
SIAM journal on computing, 1(2):146–160.