Toán rời rạc - Chương 05: Các khái niệm cơ bản của lý thuyết đồ thị (phần 2)

Bài toán

 Có thể xuất phát tại một

điểm nào đó trong thành

phố, đi qua tất cả 7 cây

cầu, mỗi cây một lần, rồi

trở về điểm xuất phát

được không?

 Leonhard Euler đã tìm ra

lời giải cho bài toán vào

năm 1736

pdf 47 trang dienloan 11940
Bạn đang xem 20 trang mẫu của tài liệu "Toán rời rạc - Chương 05: Các khái niệm cơ bản của lý thuyết đồ thị (phần 2)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Toán rời rạc - Chương 05: Các khái niệm cơ bản của lý thuyết đồ thị (phần 2)

Toán rời rạc - Chương 05: Các khái niệm cơ bản của lý thuyết đồ thị (phần 2)
CHƯƠNG 5: CÁC KHÁI NIỆM CƠ 
BẢN CỦA LÝ THUYẾT ĐỒ THỊ 
PHẦN 2: 
- Chu trình và đường đi Euler 
- Chu trình và đường đi Hamilton 
- Thuật toán Dijkstra 
1 
Chương 2. Các bài toán về đường đi 2 
Chu trình và đường đi Euler 
 Bài toán 
 Có thể xuất phát tại một 
điểm nào đó trong thành 
phố, đi qua tất cả 7 cây 
cầu, mỗi cây một lần, rồi 
trở về điểm xuất phát 
được không? 
 Leonhard Euler đã tìm ra 
lời giải cho bài toán vào 
năm 1736 
Chương 2. Các bài toán về đường đi 3 
Leonhard Euler 
1707 - 1783 
 Leonhard Euler (15/04/1707 – 18/9/1783) là 
một nhà toán học và nhà vật lý học Thụy Sĩ. 
Ông (cùng với Archimedes và Newton) được 
xem là một trong những nhà toán học lừng 
lẫy nhất. Ông là người đầu tiên sử dụng từ 
"hàm số" (được Gottfried Leibniz định nghĩa 
trong năm 1694) để miêu tả một biểu thức có 
chứa các đối số, như y = F(x). Ông cũng 
được xem là người đầu tiên dùng vi tích 
phân trong môn vật lý. 
Chương 2. Các bài toán về đường đi 4 
Leonhard Euler 
1707 - 1783 
 Ông sinh và lớn lên tại Basel, và được xem là thần 
đồng toán học từ nhỏ. Ông làm giáo sư toán học tại 
Sankt-Peterburg, sau đó tại Berlin, rồi trở lại Sankt-
Peterburg. Ông là nhà toán học viết nhiều nhất: tất 
cả các tài liệu ông viết chứa đầy 75 tập. Ông là nhà 
toán học quan trọng nhất trong thế kỷ 18 và đã suy 
ra nhiều kết quả cho môn vi tích phân mới được 
thành lập. Ông bị mù hoàn toàn trong 17 năm cuối 
cuộc đời, nhưng khoảng thời gian đó là lúc ông cho 
ra hơn nửa số bài ông viết. 
 Tên của ông đã được đặt cho một miệng núi lửa 
trên Mặt Trăng và cho tiểu hành tinh 2002. 
Chương 2. Các bài toán về đường đi 5 
Chu trình và đường đi Euler 
 Bài toán 
 Mô hình hóa bài toán 
 Xây dựng đồ thị G 
 Đỉnh: Các vùng đất trong 
sơ đồ 
 Cạnh: các cây cầu nối 
giữa hai vùng đất 
 Yêu cầu 
 Tồn tại hay không một 
chu trình đơn trong đa 
đồ thị G = (V, E) có chứa 
tất cả các cạnh của đồ 
thị? 
Chương 2. Các bài toán về đường đi 6 
Chu trình và đường đi Euler 
 Định nghĩa 
Cho đồ thị G=(V,E) liên thông 
 Chu trình Euler 
 Chu trình đơn chứa tất cả các cạnh của đồ thị G. 
 Đồ thị Euler 
 Đồ thị có chứa một chu trình Euler 
 Đường đi Euler 
 Đường đi đơn chứa tất cả các cạnh của đồ thị G 
Chương 2. Các bài toán về đường đi 7 
Chu trình và đường đi Euler 
 Định nghĩa 
 Ví dụ: Chỉ ra đường đi và chu trình Euler (nếu có) trong các 
đồ thị sau đây? 
Chương 2. Các bài toán về đường đi 8 
Chu trình và đường đi Euler 
 Trong đồ thị vô hướng 
 Định lý về chu trình Euler 
 Một đồ thị 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. 
 Áp dụng định lý trên tìm lời giải cho bài toán mở 
đầu? 
Chương 2. Các bài toán về đường đi 9 
Chu trình và đường đi Euler 
 Trong đồ thị vô hướng 
 Các thuật toán tìm chu trình Euler: 
 1. Thuật toán Euler 
 Ký hiệu: C – chu trình Euler cần tìm của đồ thị G. 
 Bước 1: Đặt H := G, k :=1, C := . Chọn đỉnh v bất kỳ của G. 
 Bước 2: Xuất phát từ v, xây dựng chu trình đơn bất kỳ Ck trong H. 
 Nối Ck vào C, C := C  Ck . 
 Bước 3: 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. 
 Bước 4: Nếu H =  thì kết luận C là chu trình Euler cần tìm, kết 
 thúc. 
 Nếu H  thì chọn v là đỉnh chung của H và C. Đặt k:= k+1, 
 quay lại bước 2. 
Chương 2. Các bài toán về đường đi 10 
Chu trình và đường đi Euler 
 Trong đồ thị vô hướng 
 Các thuật toán tìm chu trình Euler: 
 1. Thuật toán Euler 
 Ví dụ: Tìm chu trình Euler 
Chương 2. Các bài toán về đường đi 11 
Chu trình và đường đi Euler 
 Ví dụ: Tìm chu trình Euler 
i 
g 
Chương 2. Các bài toán về đường đi 12 
Chu trình và đường đi Euler 
 Trong đồ thị vô hướng 
 Các thuật toán tìm chu trình Euler: 
 2. Thuật toán Fleury: Xuất phát từ một đỉnh bất kỳ của đồ thị 
và tuân theo hai quy tắc sau 
 Qui tắc 1: Mỗi khi đi qua một cạnh nào thì 
 Xóa cạnh vừa đi qua 
 Xóa đỉnh cô lập (nếu có) 
 Qui tắc 2: 
 Tại mỗi đỉnh, ta chỉ đi theo một cạnh là cầu nếu không có sự 
lựa chọn nào khác. 
Chương 2. Các bài toán về đường đi 
a b c d 
e 
f g h 
abcfdcefghbga 
13 
Chu trình và đường đi Euler 
2. Thuật toán Fleury: 
 Ví dụ: 
Chương 2. Các bài toán về đường đi 14 
Chu trình và đường đi Euler 
 Trong đồ thị vô hướng 
 Định lý về đường đi Euler 
 Đồ thị liên thông G có đường đi Euler, không có chu 
trình Euler khi và chỉ khi G có đúng 2 đỉnh bậc lẻ 
Chương 2. Các bài toán về đường đi 15 
Chu trình và đường đi Euler 
 Trong đồ thị vô hướng 
 Định lý về đường đi Euler 
 Ví dụ: Đồ thị nào có đường đi Euler? 
Chương 2. Các bài toán về đường đi 16 
Chu trình và đường đi Euler 
 Trong đồ thị có hướng 
 Định lý về chu trình Euler 
 Đồ thị có hướng G=(V, E) có chu trình Euler khi và chỉ 
khi 
 G liên thông mạnh 
 deg+(v) = deg-(v),  v V 
Chương 2. Các bài toán về đường đi 17 
Chu trình và đường đi Euler 
 Trong đồ thị có hướng 
 Định lý về chu trình Euler 
 Ví dụ: Đồ thị nào có chu trình Euler? 
Chương 2. Các bài toán về đường đi 18 
Chu trình và đường đi Euler 
 Trong đồ thị có hướng 
 Định lý về đường đi Euler 
 G = (V, E) là đồ thị có hướng 
 G có đường đi Euler nhưng không có chu trình Euler 
khi và chỉ khi 
 G liên thông yếu 
  s V : deg+(s) = deg-(s) + 1 
  t V : deg+(t) = deg-(t) - 1 
 deg+(v) = deg-(v),  v V \ {s, t} 
Chương 2. Các bài toán về đường đi 19 
Chu trình và đường đi Euler 
 Trong đồ thị có hướng 
 Định lý về đường đi Euler 
 Ví dụ 
Chương 2. Các bài toán về đường đi 20 
Chu trình & đường đi Hamilton 
 Chu trình Hamilton 
 Định nghĩa 
 Chu trình Hamilton 
 Chu trình bắt đầu từ 
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 
rồi quay trở về v được 
gọi là chu trình 
Hamilton 
 Đồ thị Hamilton 
 Đồ thị có chứa chu trình 
Hamilton 
Chương 2. Các bài toán về đường đi 21 
Chu trình & đường đi Hamilton 
 Chu trình Hamilton 
 Điều kiện đủ 
 Định lý Ore (1960) 
 Cho G = (V, E) là một đơn đồ thị liên thông 
 |V| = n 3 
 deg(v) + deg(w) n, với mọi cặp đỉnh không liền kề v, w 
Khi đó G có chu trình Hamilton 
Chương 2. Các bài toán về đường đi 22 
Chu trình & đường đi Hamilton 
 Chu trình Hamilton 
 Điều kiện đủ 
 Hệ quả (Định lý Dirac-1952) 
 Cho G = (V, E) là một đơn đồ thị 
 |V| = n 3 
 deg(v) n/2, v V 
Khi đó G có chu trình Hamilton 
Chương 2. Các bài toán về đường đi 23 
Chu trình & đường đi Hamilton 
 Chu trình Hamilton 
 Điều kiện đủ 
 Định lý Pósa 
 Cho G = (V, E) là một đơn đồ thị, |V| = n 3 
 |{v V: deg(v) k}| k-1  k [1, (n-1)/2) 
 |{v V: deg(v) (n-1)/2}| (n-1)/2, nếu n lẻ 
Khi đó G có chu trình Hamilton 
Chương 2. Các bài toán về đường đi 24 
Chu trình & đường đi Hamilton 
 Chu trình Hamilton 
 Điều kiện đủ 
 Ví dụ 
Chương 2. Các bài toán về đường đi 25 
Chu trình & đường đi Hamilton 
 Chu trình Hamilton 
 Phương pháp tìm chu trình Hamilton 
 Qui tắc 1: Nếu tồn tại một đỉnh v của G có d(v)<=1 thì đồ 
thị G không có chu trình Hamilton. 
 Qui tắc 2: Nếu đỉnh v có bậc là 2 thì cả 2 cạnh tới v đều 
phải thuộc chu trình Hamilton. 
 Qui tắc 3: Chu trình Hamilton không chứa bất kỳ chu trình 
con thực sự nào. 
 Qui tắc 4: Trong quá trình xây dựng chu trình Hamilton, 
sau khi đã lấy 2 cạnh tới một đỉnh v đặt vào chu trình 
Hamilton rồi thì không thể lấy thêm cạnh nào tới v nữa, do 
đó có thể xóa mọi cạnh còn lại tới v. 
Chương 2. Các bài toán về đường đi 26 
Chu trình & đường đi Hamilton 
 Chu trình Hamilton 
 Phương pháp tìm chu trình Hamilton 
 Ví dụ 1: Tìm một chu trình Hamilton 
a b c 
g h i 
d 
e 
f 
Chương 2. Các bài toán về đường đi 27 
Chu trình & đường đi Hamilton 
 Chu trình Hamilton 
 Phương pháp tìm chu trình Hamilton 
 Ví dụ 2: Đồ thị sau có chu trình Hamilton không? 
a b
c 
d e f 
Chương 2. Các bài toán về đường đi 28 
Chu trình & đường đi Hamilton 
 Chu trình Hamilton 
 Phương pháp tìm chu trình Hamilton 
 Ví dụ 3: Đồ thị sau có chu trình Hamilton không? 
D 
A 
B C 
F 
E 
H 
G 
I 
J K 
Chương 2. Các bài toán về đường đi 29 
Chu trình & đường đi Hamilton 
 Đường đi Hamilton 
 Định nghĩa 
 Đường đi sơ cấp đi qua tất cả các đỉnh của đồ thị G 
(đi qua mỗi đỉnh đúng một lần). 
Ví dụ: 
v1 v3 v5 v6 v2 v4 
v5 v6 
u5 
u6 
u7 
Không có đường đi Hamilton 
Chương 2. Các bài toán về đường đi 30 
Chu trình & đường đi Hamilton 
 Đường đi Hamilton 
 Định lý König 
 Mọi đồ thị có hướng đầy đủ (đồ thị vô hướng tương 
ứng là đầy đủ) đều có đường đi Hamilton. 
Chứng minh (xem tài liệu) 
Chương 2. Các bài toán về đường đi 31 
Bài toán đường đi ngắn nhất 
 Mở đầu 
 Nhiều bài toán không chỉ quan tâm tồn tại hay 
không đường đi giữa 2 đỉnh 
 Lựa chọn đường đi với chi phí ít nhất 
2534 860
1855 908
834
349 2451
722
191
760
595
1090
New York 
Miami
Atlanta
Los Angeles
San Francisco
Chicago
Boston
957
Khoaíng caïch (dàûm)Khoảng cách (dặm) 
Chương 2. Các bài toán về đường đi 32 
Bài toán đường đi ngắn nhất 
 Mở đầu 
 Mô hình hóa bài toán về đồ thị có trọng số 
 Đồ thị có hướng G = (V,E) với hàm trọng số W: E R 
(gán các giá trị thực cho các cạnh) 
 Trọng số của đường đi p = v1 v2  vk là 
 Đường đi ngắn nhất là đường đi có trọng số nhỏ nhất 
1
1
1
( ) ( , )
k
i i
i
w p w v v
 
Chương 2. Các bài toán về đường đi 33 
Chương 2. Các bài toán về đường đi 34 
Bài toán đường đi ngắn nhất 
 Mở đầu 
 Ví dụ: Đường đi ngắn nhất giữa đỉnh 1 và 4: 
Chương 2. Các bài toán về đường đi 35 
Bài toán đường đi ngắn nhất 
 Thuật toán Dijkstra 
 Ý tưởng 
 Ở mỗi lần lặp thì thuật toán sẽ tìm ra 1 đỉnh với đường 
đi ngắn nhất từ a tới đỉnh này là xác định 
Chương 2. Các bài toán về đường đi 36 
Bài toán đường đi ngắn nhất 
 Thuật toán Dijkstra 
 Ký hiệu: 
 Nhãn của đỉnh v: L(v) 
 Lưu trữ độ dài đường đi ngắn nhất từ a đến v được biết cho 
đến thời điểm hiện tại 
 Tập S: tập các đỉnh mà đường đi ngắn nhất từ a đến 
chúng đã xác định 
Chương 2. Các bài toán về đường đi 37 
Bài toán đường đi ngắn nhất 
 Thuật toán Dijkstra 
 Thuật toán (Tìm đường đi ngắn nhất từ a đến z) 
 Bước 1: Khởi tạo 
 L(a) = 0; L(v)=vo cung lon, S =  
 Bước 2: Nếu z S thì kết thúc 
 Bước 3: Chọn đỉnh 
 Chọn u sao cho: L(u) = min { L(v) | v  S} 
 Đưa u vào tập S: S = S  {u} 
 Bước 4: Sửa nhãn 
 Với mỗi đỉnh v (v S) kề với u 
 L(v) = min { L(v); L(u) + w(uv) } (ký hiệu w(uv)=trọng số cạnh uv) 
 Bước 5: Quay lại Bước 2 
Chương 2. Các bài toán về đường đi 38 
Bài toán đường đi ngắn nhất 
 Thuật toán Dijkstra 
 Ví dụ 
 Tìm độ dài đường đi ngắn nhất giữa đỉnh a và z? 
5
43
2
1
e
d
z 
c
b
a
5
2
2
Đáp án: đường đi ngắn nhất: abedz, độ dài 7. 
Chương 2. Các bài toán về đường đi 39 
Bài giải: Thuật toán Dijkstra cho bài toán được trình bày trong bảng sau 
Đáp số: đường đi ngắn nhất: abedz, độ dài 7. 
Nếu hỏi độ dài ngắn nhất đi từ a đến d thì đáp số là?? Và đường đó 
là. 
Chương 2. Các bài toán về đường đi 40 
Ví dụ 
Cho ma trận kề của đơn đồ thị có trọng số G 
có dạng 
a) Vẽ đồ thị G 
Dùng thuật toán Dijkstra: 
b) Tìm độ dài đường đi ngắn nhất từ đỉnh a 
đến các đỉnh còn lại của G? Chỉ ra các 
đường đi đó. 
0 7 2 0 0 0
7 0 3 2 1 0
2 3 0 0 3 0
0 2 0 0 9 3
0 1 3 9 0 8
0 0 0 3 8 0
A B C D E F
A
B
C
D
E
F
Chương 2. Các bài toán về đường đi 41 
Chương 2. Các bài toán về đường đi 42 
Chương 2. Các bài toán về đường đi 43 
Bài toán đường đi ngắn nhất 
 Thuật toán tìm đường đi ngắn nhất 
 Thuật toán Dijkstra 
 Định lý 
 Thuật toán Dijkstra tìm được đường đi ngắn nhất giữa 2 
đỉnh trong đơn đồ thị liên thông, có trọng số. 
 Nhận xét 
 Chỉ đúng cho đồ thị có trọng số không âm 
 Nhãn sau cùng của mỗi đỉnh là độ dài đường đi ngắn nhất 
từ đỉnh xuất phát đến nó. 
44 
45 
46 
47 

File đính kèm:

  • pdftoan_roi_rac_chuong_05_cac_khai_niem_co_ban_cua_ly_thuyet_do.pdf