Professional Documents
Culture Documents
Chapter05 Path
Chapter05 Path
1/1/2019
Nội dung
P = v1 e1 v2 e2 v3 ...vm
P = v1 v2 v3 ...vm
F
D B C D
C
K A G I E F C F
E
B G G K K E F K
G
I G K K
(a) đồ thị (b) cây đường đi bắt đầu từ đỉnh A
F
D B C D
C
K A G I E F C F
E
B G G K K E F K
G
I G K K
(a) đường đi trên đồ thị (b) đường đi trên cây đường đi
F
D B C D
C
K A
G I E F C F
E
B G G K K E F K
G
I G K K
(a) đường đi trên đồ thị (b) đường đi trên cây đường đi
F
D B C D
C
K A G I E F C F
E
B G G K K E F K
G
I G K K
(a) đường đi trên đồ thị (b) đường đi trên cây đường đi
F
D B C D
C
K A G I E F C F
E
B G G K K E F K
G
I G K K
f
g
e
d
b
c
Hình 5.6: Hãy vẽ cây đường đi sơ cấp cho đồ thị có hướng trên bắt đầu
từ đỉnh a
f
g
e
d
b
c
Hình 5.7: Hãy vẽ cây đường đi sơ cấp cho đồ thị vô hướng trên bắt đầu
từ đỉnh a
I Đồ thị đường đi tổng quát nhằm mục đích biểu diễn các
đường đi không phải sơ cấp hay đơn
d e e e e e e
a d d d d d d
e c
c c c c c c
b
a a a a a a
Một số lưu ý
I Các thuật toán tìm đường đi ngắn nhất trên đồ thị là các
thuật toán tối ưu rời rạc
I Các thuật toán nói chung đều có thể áp dụng cho cả đồ thị
có hướng và vô hướng
I Khi giải bài toán đường đi ngắn nhất
I Bỏ đi các cạnh song song và chỉ giữ lại cạnh có trọng số
nhỏ nhất
I Bỏ đi các cạnh khuyên và chỉ giữ lại cạnh khuyên có
trọng số âm bé nhất
Nguyên lý
I P là đường đi từ đỉnh s đến đỉnh t
I P1 và P2 , đường đi con của P từ đỉnh s đến k và từ k đến t
với k là một đỉnh nằm trên đường đi P
Nếu P là đường đi ngắn nhất thì P1 và P2 cũng là những đường
đi ngắn nhất.
P1 P2
s k t
Chứng minh
I Giả sử tồn tại một đường đi P10 từ s đến k ngắn hơn đường đi
P1 . Nghĩa là
L(P10 ) < L(P1 )
I Suy ra
L(P10 ⊕ P2 ) < L(P1 ⊕ P2 ) = L(P)
I Trái với giả thiết P là con đường ngắn nhất để đi từ s cho
đến t
Lưu ý
I Nguyên lý Bellman không có phát biểu ngược lại
I Các đường đi P, P1 , P2 là những đường đi bất kỳ
VT = VT + {y}
ET = ET + {(x, y)}
d (y) = d (x) + l(x, y)
I Bước 3: Nếu không tìm được đỉnh y nào thì DỪNG ngược lại
quay lại bước 2
Áp dụng thuật toán cây đường đi ngắn nhất để tìm đường đi ngắn
từ đỉnh a đến các đỉnh còn lại
12 f
g
6
a 17
4
2
3
e
8
9 d
4 5
1
b
8 c
Hình 5.11: Tìm các đường đi ngắn nhất từ đỉnh a đến các đỉnh còn lại
12 f
g
6
a d=0 17
4
2
3
e
8
9 d
4 5
1
b
8 c
12 f
g
6
a d=0 17
4
2
3
e
8
9 d d=3
4 5
1
b
8 c
12 f
g
6
a d=0 17
4
2
3
e
8
9 d d=3
4 5
1
b
8 c d=4
f
g d=6 12
6
a d=0 17
4
2
3
e
8
9 d d=3
4 5
1
b
8 c d=4
f
g d=6 12
6
a d=0 17
4
2
3
e
8
9 d d=3
4 5
1
b d=7
8 c d=4
f
g d=6 12
6
a d=0 17
4
2
3
e d=9
8
9 d d=3
4 5
1
b d=7
8 c d=4
f d=26
g d=6 12
6
a d=0 17
4
2
3
e d=9
8
9 d d=3
4 5
1
b d=7
8 c d=4
12 f
g
6
a 17
4
2
3
e
8
9 d
4 5
1
b
8 c
Hình 5.20: Tìm các đường đi ngắn nhất từ đỉnh a đến các đỉnh còn lại
Bảng 5.1: Bảng tính trọng số đường đi từ 1 đến Hình 5.21: Đồ thị và
các đỉnh các đỉnh được chọn
Bảng 5.1: Bảng tính trọng số đường đi từ 1 đến Hình 5.21: Đồ thị và
các đỉnh các đỉnh được chọn
Bảng 5.1: Bảng tính trọng số đường đi từ 1 đến Hình 5.21: Đồ thị và
các đỉnh các đỉnh được chọn
Bảng 5.1: Bảng tính trọng số đường đi từ 1 đến Hình 5.21: Đồ thị và
các đỉnh các đỉnh được chọn
Bảng 5.1: Bảng tính trọng số đường đi từ 1 đến Hình 5.21: Đồ thị và
các đỉnh các đỉnh được chọn
Bảng 5.1: Bảng tính trọng số đường đi từ 1 đến Hình 5.21: Đồ thị và
các đỉnh các đỉnh được chọn
Bảng 5.1: Bảng tính trọng số đường đi từ 1 đến Hình 5.21: Đồ thị và
các đỉnh các đỉnh được chọn
Bảng 5.1: Bảng tính trọng số đường đi từ 1 đến Hình 5.21: Đồ thị và
các đỉnh các đỉnh được chọn
Để xác định đường đi ta cần một biến prev(x) để lưu lại thông tin
đỉnh trước của đỉnh x trong đường đi
Bảng 5.2: Bảng xác định trọng số & đỉnh trước trong đường đi
a b c d e f g
(0;null) (∞;null) (∞;null) (∞;null) (∞;null) (∞;null) (∞;null)
(9;a) (∞;null) (3;a) (∞;null) (∞;null) (6;a)
(7;d) (4;d) (11;d) (∞;null) (6;a)
(7;d) (9;c) (∞;null) (6;a)
(7;d) (9;c) (∞;null)
(9;c) (∞;null)
(26;e)
Vấn đề
I Trong thực tế, đồ thị có số đỉnh rất lớn
I Do đó thuật toán Dijkstra nên được cài đặt bằng hàng đợi ưu
tiên
Hình 5.22: Tìm đường đi Bảng 5.3: Bảng tính cho thuật toán
bắt đầu từ đỉnh a đến các Dijkstra sử dụng hàng đợi ưu tiên. Mỗi
đỉnh còn lại đỉnh sẽ có hai thuộc tính d độ dài tính từ
đỉnh xuất phát (dùng làm độ ưu tiên) và
g 12 f pre đỉnh trước của đỉnh này
6
a 4 17 v priority_queue
2
3 e a(0;null)
9 d 8
4 1 5
b 8 c
Hình 5.22: Tìm đường đi Bảng 5.3: Bảng tính cho thuật toán
bắt đầu từ đỉnh a đến các Dijkstra sử dụng hàng đợi ưu tiên. Mỗi
đỉnh còn lại đỉnh sẽ có hai thuộc tính d độ dài tính từ
đỉnh xuất phát (dùng làm độ ưu tiên) và
g 12 f pre đỉnh trước của đỉnh này
6
a 4 17 v priority_queue
2
3 e a(0;null)
9 d 8 a(0;null) b(9;a) d(3;a) g(6;a)
4 1 5
b 8 c
Hình 5.22: Tìm đường đi Bảng 5.3: Bảng tính cho thuật toán
bắt đầu từ đỉnh a đến các Dijkstra sử dụng hàng đợi ưu tiên. Mỗi
đỉnh còn lại đỉnh sẽ có hai thuộc tính d độ dài tính từ
đỉnh xuất phát (dùng làm độ ưu tiên) và
g 12 f pre đỉnh trước của đỉnh này
6
a 4 17 v priority_queue
2
3 e a(0;null)
9 d 8 a(0;null) b(9;a) d(3;a) g(6;a)
4 1 5 d(3;a) b(7;d) g(6;a) c(4;d) e(11;d)
b 8 c
Hình 5.22: Tìm đường đi Bảng 5.3: Bảng tính cho thuật toán
bắt đầu từ đỉnh a đến các Dijkstra sử dụng hàng đợi ưu tiên. Mỗi
đỉnh còn lại đỉnh sẽ có hai thuộc tính d độ dài tính từ
đỉnh xuất phát (dùng làm độ ưu tiên) và
g 12 f pre đỉnh trước của đỉnh này
6
a 4 17 v priority_queue
2
3 e a(0;null)
9 d 8 a(0;null) b(9;a) d(3;a) g(6;a)
4 1 5 d(3;a) b(7;d) g(6;a) c(4;d) e(11;d)
b 8 c(4;d) b(7;d) g(6;a) e(9;c)
c
Hình 5.22: Tìm đường đi Bảng 5.3: Bảng tính cho thuật toán
bắt đầu từ đỉnh a đến các Dijkstra sử dụng hàng đợi ưu tiên. Mỗi
đỉnh còn lại đỉnh sẽ có hai thuộc tính d độ dài tính từ
đỉnh xuất phát (dùng làm độ ưu tiên) và
g 12 f pre đỉnh trước của đỉnh này
6
a 4 17 v priority_queue
2
3 e a(0;null)
9 d 8 a(0;null) b(9;a) d(3;a) g(6;a)
4 1 5 d(3;a) b(7;d) g(6;a) c(4;d) e(11;d)
b 8 c(4;d) b(7;d) g(6;a) e(9;c)
c
g(6;a) b(7;d) e(9;c)
Hình 5.22: Tìm đường đi Bảng 5.3: Bảng tính cho thuật toán
bắt đầu từ đỉnh a đến các Dijkstra sử dụng hàng đợi ưu tiên. Mỗi
đỉnh còn lại đỉnh sẽ có hai thuộc tính d độ dài tính từ
đỉnh xuất phát (dùng làm độ ưu tiên) và
g 12 f pre đỉnh trước của đỉnh này
6
a 4 17 v priority_queue
2
3 e a(0;null)
9 d 8 a(0;null) b(9;a) d(3;a) g(6;a)
4 1 5 d(3;a) b(7;d) g(6;a) c(4;d) e(11;d)
b 8 c(4;d) b(7;d) g(6;a) e(9;c)
c
g(6;a) b(7;d) e(9;c)
b(7;d) e(9;c)
Hình 5.22: Tìm đường đi Bảng 5.3: Bảng tính cho thuật toán
bắt đầu từ đỉnh a đến các Dijkstra sử dụng hàng đợi ưu tiên. Mỗi
đỉnh còn lại đỉnh sẽ có hai thuộc tính d độ dài tính từ
đỉnh xuất phát (dùng làm độ ưu tiên) và
g 12 f pre đỉnh trước của đỉnh này
6
a 4 17 v priority_queue
2
3 e a(0;null)
9 d 8 a(0;null) b(9;a) d(3;a) g(6;a)
4 1 5 d(3;a) b(7;d) g(6;a) c(4;d) e(11;d)
b 8 c(4;d) b(7;d) g(6;a) e(9;c)
c
g(6;a) b(7;d) e(9;c)
b(7;d) e(9;c)
e(9;c) f(26;e)
Hình 5.22: Tìm đường đi Bảng 5.3: Bảng tính cho thuật toán
bắt đầu từ đỉnh a đến các Dijkstra sử dụng hàng đợi ưu tiên. Mỗi
đỉnh còn lại đỉnh sẽ có hai thuộc tính d độ dài tính từ
đỉnh xuất phát (dùng làm độ ưu tiên) và
g 12 f pre đỉnh trước của đỉnh này
6
a 4 17 v priority_queue
2
3 e a(0;null)
9 d 8 a(0;null) b(9;a) d(3;a) g(6;a)
4 1 5 d(3;a) b(7;d) g(6;a) c(4;d) e(11;d)
b 8 c(4;d) b(7;d) g(6;a) e(9;c)
c
g(6;a) b(7;d) e(9;c)
b(7;d) e(9;c)
e(9;c) f(26;e)
f(26;e) ∅
Ví dụ 5.1
Tìm tất cả đường đi ngắn nhất từ đỉnh a đến đỉnh i trên đồ thị vô
hướng dưới
e 6 i
6
c 3
4
2
6 2 f
5
a d
h
3
5 3
4 3
b 7
g
a a a
5 4 5 4 5 4
b -2 c b -2 c b -2 c
Hình 5.23: đồ thị có
Hình 5.24: đường đi Hình 5.25: đường đi
trọng số âm
ngắn nhất từ a - c theo ngắn nhất từ a - c thật
Dijkstra sự
Vấn đề
I Thuật toán Dijkstra là một thuật toán vét cạn. Do đó, sẽ gặp
rất nhiều khó khăn trong các bài toán có độ phức tạp lớn.
a a
z z
Hình 5.27: Tìm theo mọi hướng vs tìm với định hướng
Ordea
Zerind Neamt
Iasis
Arad
Sibiu Fagaras Vaslui
Timisoara Rimnicu Vilcea
Lugoj
Pitesti
Urziceni Hirsova
Mehadia
Bucharest
Dobreta Eforie
Craiova
Giurgiu
O
71
Z N
151 87
75 I
A
140 92
118 S 99 F V
80
T R
111 142
97 211
L
P
70
146 101 U 98 H
M 85
138 B 86
75
D 120 90 E
C
G
Bảng 5.4: Khoảng cách theo đường chim bay từ các thành phố đến
thành phố Bucharest
O 380
Z 374 N 234
I 266
A 366
S 253
F 176 V 199
T 329 R 193
L 244
P 100
U 80 H 151
M 241
B
D 242 E 161
C 160
G 77
O
71
Z N
151 87
75 I
A
140 92
118 S 99 F V
80
T R
111 142
97 211
L
P
70
146 101 U 98 H
M 85
138 B 86
75
D 120 90 E
C
G
v priority_queue
A(0,366,null)
A(0,366,null) S(140,253,A) T(118,329,A) Z(75,374,A)
S(140,253,A) T(118,329,A) Z(75,374,A) F(239,176,S)
R(220,193,S)
R(220,193,S) T(118,329,A) Z(75,374,A) F(239,176,S)
C(366,160,R) P(317,100,R)
F(239,176,S) T(118,329,A) Z(75,374,A) C(366,160,R)
P(317,100,R) B(450,0,F)
P(317,100,R) T(118,329,A) Z(75,374,A) C(366,160,R)
B(418,0,P)
B(418,0,P) T(118,329,A) Z(75,374,A) C(366,160,R)
0 t=s
P0 (t) =
∞ t 6= s
Pk+1 (t) = min (Pk (t) , min (Pk (v) + l (v, t) , ∀v))
(5.3)
Ví dụ 5.2
Áp dụng thuật toán Bellman tìm đường đi ngắn nhất cho đồ thị
sau từ đỉnh a. Lưu ý đồ thị có mạch âm
a 4 c
-3 2
0
a
∞
b
∞
c
0 0
a a
∞ 2
b b
∞ 4
c c
0 0 -1
a a a
∞ 2 2
b b b
∞ 4 4
c c c
0 0 -1 -1
a a a a
∞ 2 2 1
b b b b
∞ 4 4 3
c c c c
0 0 -1 -1 -2
a a a a a
∞ 2 2 1 1
b b b b b
∞ 4 4 3 3
c c c c c
0 0 -1 -1 -2 -2
a a a a a a
∞ 2 2 1 1 0
b b b b b b
∞ 4 4 3 3 2
c c c c c c
P0 P1 P2 P3 P4 P5
0 0 -1 -1 -2 -2
a a a a a a
∞ 2 2 1 1 0
b b b b b b
∞ 4 4 3 3 2
c c c c c c
Ví dụ 5.3
Áp dụng thuật toán Bellman tìm đường đi ngắn nhất cho đồ thị
sau từ đỉnh a. Lưu ý đồ thị không có mạch âm
a 4 c
-1 2
0
a
∞
b
∞
c
0 0
a a
∞ 2
b b
∞ 4
c c
0 0 0
a a a
∞ 2 2
b b b
∞ 4 4
c c c
P0 P1 P2
0 0 0
a a a
∞ 2 2
b b b
∞ 4 4
c c c
Nhận xét
I Nếu trong đồ thị tồn tại mạch âm thì trọng số đường đi sẽ
càng lúc càng giảm
I Điều kiện để dừng thuật toán Bellman
I Nếu Pk và Pk+1 là hoàn toàn giống nhau
I Nếu điều kiện trên không xảy ra nghĩa là trong đồ thị tồn
tại những mạch âm thì việc dừng thuật toán tại bước
lặp k với đường đi Pk được hiểu là một lời giải cho đường
đi ngắn nhất đi qua tối đa k đỉnh không kể đỉnh bắt đầu
2
a b
3
1 4 1
d 2 c
e
-1
a 2 c 2
4
f
-2 1 5
1
8 d
b
Thuật toán Floyd cũng là một thuật toán qui hoạch động dùng để
tìm trọng số đường đi ngắn nhất cho tất cả các cặp đỉnh của đồ
thị có trọng số G = (V , E , L) có n đỉnh {1, ..., n}. Ý tưởng của
thuật toán được trình bày qua hàm đệ qui D như sau
I Hàm Dk (i, j) là hàm trả về đường đi ngắn nhất từ đỉnh i đến
đỉnh j sử dụng các đỉnh trung gian {1, ..., k}
I Hàm Dk+1 (i, j) là hàm trả về đường đi ngắn nhất từ đỉnh i
đến đỉnh j sử dụng các đỉnh trung gian {1, ..., k, k + 1}
I Hàm Dk (i, j) được định nghĩa đệ qui như sau
D0 (i, j) = l (i, j)
Ví dụ 5.4
Hãy áp dụng thuật toán Floyd cho đồ thị dưới đây
4
-2
2
3
3
-1
2
1 2 1 2 1 2 1 2 1 -2 3 2 4 -1 2
1 -2 3 1 -2 3 1 -2 3 1 -2 3 1 -2 3
1 4 1 4 1 4 1 -2 3 2 4 1 -2 3 2 4
2 4 1 2 4 1 2 4 1 2 4 1 2 4 1
2 0 2 2 0 2 2 0 2 2 0 2 2 0 2
2 3 3 2 4 1 -2 3 2 4 1 -2 3 2 4 1 -2 3 2 4 1 -2 3
2 4 2 4 2 4 2 4 1 -2 3 2 4 2 4 1 -2 3 2 4
3 1 3 1 3 1 3 1 3 2 4 -1 2 4 1
3 2 3 2 3 2 3 2 3 2 4 -1 2
3 0 3 3 0 3 3 0 3 3 0 3 3 0 3
3 2 4 3 2 4 3 2 4 3 2 4 3 2 4
4 1 4 1 4 -1 2 4 1 4 -1 2 4 1 4 -1 2 4 1
4 -1 2 4 -1 2 4 -1 2 4 -1 2 4 -1 2
4 3 4 3 4 -1 2 4 1 -2 3 4 -1 2 4 1 -2 3 4 -1 2 4 1 -2 3
4 0 4 4 0 4 4 0 4 4 0 4 4 0 4
Lưu ý
Ma trận khoảng cách cho đồ thị vô hướng là một trận đối xứng
rad(G) = min{(v))|∀v ∈ V }
diam(G) = max{(v))|∀v ∈ V }
a
1
c
1
1
b
1 e
1
d
1 1
g f
Hình 5.35: Xác định độ lệch, tâm, bán kính và đường kính
Lịch sử
Bài toán này có nguồn gốc từ bài toán dân gian. Làm sao đi qua 7
chiếc cầu đúng một lần và trở về nơi xuất phát. Bài toán này đã
được nhà bác học Euler giải quyết trọn vẹn vào năm 1736.
C D
A
(a) bảy cây cầu (b) biểu diễn đồ thị
Định lý 5.1
Một đa đồ thị vô hướng liên thông G = (V , E ) có chu trình Euler
khi và chỉ khi mỗi đỉnh của nó đều có bậc chẵn
Chứng minh
Sinh viên tự chứng minh
Tìm chu trình Euler của đồ thị dưới đây bắt đầu từ đỉnh 1
3 5 7
1 4
2 6 8
Hình 5.37: Đồ thị liên thông có các đỉnh đều bậc chẵn
stack = {1}
C = {∅}
3 5 7
1 4
2 6 8
stack = {1, 2}
C = {∅}
3 5 7
1 4
2 6 8
stack = {1, 2, 4}
C = {∅}
3 5 7
1 4
2 6 8
stack = {1, 2, 4, 3}
C = {∅}
3 5 7
1 4
2 6 8
stack = {1, 2, 4, 3, 1}
C = {∅}
3 5 7
1 4
2 6 8
stack = {1, 2, 4, 3}
C = {1}
3 5 7
1 4
2 6 8
Hình 5.43: Lấy đỉnh 1 ra khỏi stack và thêm vào chu trình C
stack = {1, 2, 4}
C = {1, 3}
3 5 7
1 4
2 6 8
Hình 5.44: Lấy đỉnh 3 ra khỏi stack và thêm vào chu trình C
stack = {1, 2, 4, 5}
C = {1, 3}
3 5 7
1 4
2 6 8
stack = {1, 2, 4, 5, 7}
C = {1, 3}
3 5 7
1 4
2 6 8
stack = {1, 2, 4, 5, 7, 8}
C = {1, 3}
3 5 7
1 4
2 6 8
stack = {1, 2, 4, 5, 7, 8, 6}
C = {1, 3}
3 5 7
1 4
2 6 8
stack = {1, 2, 4, 5, 7, 8, 6, 4}
C = {1, 3}
3 5 7
1 4
2 6 8
stack = {∅}
C = {1, 3, 4, 6, 8, 7, 5, 4, 2, 1}
3 5 7
1 4
2 6 8
Hình 5.50: Lần lượt lấy các đỉnh ra khỏi stack và thêm vào chu trình C
Áp dụng thuật toán Hierholzer tìm chu trình Euler cho đồ thị sau
1 2 3 4
5 6 7
8 9
10
Cho một đồ thị liên thông G = (V , E ) có tất cả các đỉnh bậc chẵn.
Định lý 5.2
Một đa đồ thị vô hướng liên thông G = (V , E ) có đường đi Euler
khi và chỉ khi đồ thị có đúng 2 đỉnh bậc lẻ
Chứng minh
Sinh viên tự chứng minh
Định lý 5.3
Một đa đồ thị có hướng liên thông G = (V , E ) có chu trình Euler
khi và chỉ tại mỗi đỉnh v của đồ thị đều có d + (v) = d − (v)
Chứng minh
Sinh viên tự chứng minh
Định lý 5.4
Một đa đồ thị có hướng liên thông G = (V , E ) có đường đi Euler
khi và chỉ tại tất cả các đỉnh v của đồ thị đều có d + (v) = d − (v)
trừ duy nhất 2 đỉnh x, y
Chứng minh
Sinh viên tự chứng minh
Spring 2019 Graph Theory 105
Bài toán người đưa thư Trung Hoa
I Nếu đồ thị không có trọng số thì chu trình ngắn nhất là chu
trình có số cạnh ít nhất
I Nếu đồ thị có trọng số thì chu trình ngắn nhất là chu trình có
trọng số nhỏ nhất
Lịch sử
I Bài toán này xuất phát từ trò đố vui do William Rowan
Hamilton, nhà toán học người Ailen đưa ra vào năm 1857.
I Giả sử có một khối thập nhị diện đều với mỗi mặt là một ngũ
giác đều. Mỗi đỉnh trong 20 đỉnh khối này được đặt tên một
thành phố. Hãy tìm một cách đi khép kín ghé thăm 20 thành
phố chỉ một lần
Hình 5.52: Khối thập nhị diện đều và chu trình Hamilton
Chứng minh
Sinh viên tự chứng minh
Định lý 5.6 (Dirac, 1952)
Cho một đơn đồ thị liên thông G = (V , E ) với số đỉnh n ≥ 3, nếu
∀v ∈ V , d(v) ≥ n2 thì đồ thị có chu trình Hamilton
Chứng minh
Sinh viên tự chứng minh
Chứng minh
Sinh viên tự chứng minh
6
15 7
20 3 4 17
14 8
2 5
13 9
1
12 10
11
19 18
Hình 5.53: Đồ thị biểu diễn khối thập nhị diện đều
6
15 7
20 3 4 17
14 8
2 5
13 9
1
12 10
11
19 18
...
Spring 2019 Graph Theory 114
Minh họa
6
15 7
20 3 4 17
14 8
2 5
13 9
1
12 10
11
19 18
...
Spring 2019 Graph Theory 114
Minh họa
20 3 4 17
14 8
2 5
13 9
1
12 10
11
19 18
...
Spring 2019 Graph Theory 114
Minh họa
Hãy tìm chu trình Hamilton (nếu có) của các đồ thị sau
a b c
d e f
g h i
I Nếu đồ thị không có trọng số thì chu trình ngắn nhất là chu
trình có số cạnh ít nhất
I Nếu đồ thị có trọng số thì chu trình ngắn nhất là chu trình có
trọng số nhỏ nhất
Diestel, R. (2005).
Graph theory. 2005.
Springer-Verlag.
Moore, E. F. (1959).
The shortest path through a maze.
Bell Telephone System.