Bài toán tìm đường đi ngắn nhất là bài toán quantrọng trong Lý thuyết đồ thị, nó được áp dụng để giải quyết rất nhiều bài toán trong thực tế như điều khiển tối ưu, giao thông vận tải, mạ
Trang 1Giáo viên hướng dẫn: PGS.TSKH.Trần Quốc Chiến
Học viên thực hiện: 1.Vũ Văn Khiên
( nhóm 2) 2.Mai Quốc Toản 3.Nguyễn Hoàng Vi
Trang 3LỜI NÓI ĐẦU
Lý thuyết đồ thị là ngành học được phát triển từ lâu nhưng lại có nhiều ứng dụnghiện đại Những ý tưởng cơ bản của nó đã được nhà toán học Thụy sĩ vĩ đại LeonhardEuler đưa ra từ thế kỷ 18
Đồ thị là một cấu trúc rời rạc gồm các đỉnh và các cạnh nối các đỉnh đó Đây làcông cụ hữu hiệu để mô hình hóa và giải quyết các bài toán trong nhiều lĩnh vực khoahọc, kỹ thuật, kinh tế, xã hội,
Môn lý thuyết đồ thị là môn học hấp dẫn, mang tính thực tế cao Những vấn đề trongmôn học như: các bài toán về đường đi, cây, mạng và các bài toán tô màu đã và đangđược nhiều người quan tâm, nghiên cứu Bài toán tìm đường đi ngắn nhất là bài toán quantrọng trong Lý thuyết đồ thị, nó được áp dụng để giải quyết rất nhiều bài toán trong thực
tế như điều khiển tối ưu, giao thông vận tải, mạng viễn thông
Vì vậy, việc nghiên cứu nó là hết sức cần thiết vì nó có thể giải quyết được nhiềuvấn đề khó khăn, phức tạp nảy sinh từ thực tế cuộc sống
Vì lí do đó, nhóm chúng em (nhóm 2) chọn đề tài: ''Đường đi ngắn nhất và ứng dụng'' để viết bài tiểu luận này.
PHẦN NỘI DUNG
Trang 4I CƠ SỞ LÝ THUYẾT
1 Đồ thị vô hướng
- Định nghĩa: Đồ thị vô hướng G = (V, E) gồm một tập V các đỉnh và tập E các cạnh.
Mỗi cạnh e E được liên kết với một cặp đỉnh v, w (không kể thứ tự)
Trang 54trong đó vi(i=1,2…,n-1) là các đỉnh trên dãy và ei(i=1,2…,n) là các cạnh trên dãy liên thông thuộc đỉnh kề trước và sau nó Các đỉnh và cạnh trên có thể lặp lại.
Đường đi từ đỉnh v đến w là dãy từ đỉnh v đến w, trong đó các cạnh không lặp
lại.
Đường đi sơ cấp : là đường đi không đi qua một đỉnh quá một lần
Vòng là dãy có đỉnh đầu và đỉnh cuối trùng nhau.
Chu trình là đường đi có đỉnh đầu và đỉnh cuối trùng nhau
Chu trình sơ cấp : là chu trình không đi qua một đỉnh quá một lần.
Dãy có hướng : trong đồ thị có hướng là dãy các đỉnh và cung nối tiếp nhau (e1,e2,
…,en) thỏa mãn đỉnh cuối của cung ei là đỉnh đầu của cung ei+1,
i=1, n-1.
Đường đi có hướng trong đồ thị có hướng là dãy có hướng, trong đó các
cung không lặp lại.
Đường đi có hướng sơ cấp là đường đi có hướng không đi qua một đỉnh quá
một lần.
Vòng có hướng là dãy có hướng có đỉnh đầu và đỉnh cuối trùng nhau.
Chu trình có hướng là đường đi có hướng có đỉnh đầu và đỉnh cuối trùng
nhau.
Chu trình có hướng sơ cấp là chu trình có hướng không đi qua một đỉnh quá
một lần
Đồ thị có hướng gọi là liên thông, nếu mọi cặp đỉnh của nó đều có đường đi
nối chúng với nhau.
Đồ thị có hướng gọi là liên thông mạnh, nếu mọi cặp đỉnh của nó đều có
đường đi có hướng nối chúng với nhau.
Đồ thị có hướng gọi là liên thông yếu, nếu đồ thị lót (vô hướng) của nó liên
thông.
Đồ thị có hướng gọi là bán liên thông, nếu với mọi cặp đỉnh (u,v) bao giờ cũng tồn tại đường đi có hướng từ u đến v hoặc từ v đến u.
Trang 6 Định lí 1:
(i) Trong đồ thị vô hướng mỗi dãy từ đỉnh v đến w chứa đường đi sơ cấp
từ v đến w
(ii) Trong đồ thị có hướng mỗi dãy có hướng từ đỉnh v đến w chứa đường
đi có hướng sơ cấp từ v đến w.
Định lí 2: Đồ thị G lưỡng phân khi và chỉ khi G không chứa chu trình độ dài
Trong trọng đồ độ dài trọng số của đường đi là tổng các trọng số trên đường điđó
Trang 7II BÀI TOÁN ĐƯỜNG ĐI NGẮN NHẤT VÀ ỨNG DỤNG
1 Phát biểu bài toán
Cho đồ thị có trọng số G=(V,E) Kí hiệu w(i,j) là trọng số của các cạnh (i,j) Độ dài đường đi v0 v1 v2 vn1 vn
là tổng các trọng số
1 1
n
i i i
L v v
Cho hai đỉnh a,z của đồ thị Bài toán đặt ra là tìm đường đi ngắn nhất từ a đến z
2 Thuật toán Dijkstra
Thật toán tìm đường đi ngắn nhất từ đỉnh a đến đỉnh z trong đó đồ thị liên thông có trọng
số trọng số 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ải L(z) chính là chiều dài ngắn nhất từ a đến z
a và z
(1)Gán L(a):=0, với mọi x khác a gán L(a)= Kí hiệu T:=V
(2)Chọn v T sao cho L(v) có giá trị nhỏ nhất Đặt
T:=T-{v}
(3)Nếu z T , kết thúc, L(z) là chiều dài đường đi ngắn nhất từ a đến z
Từ z lần ngược theo đỉnh được ghi nhớ ta có đường đi ngắn nhất
Ngược lại sang bước (4)
(4)Với mỗi x T kề v gán
L(x):=min{L(x),L(v)+w(v,x)}
Nếu L(x) thay đổi thi 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 8b c a
z e
d
2
1
6 5
4
4 3
2 2
3
-Định lí : Thuật toán Dijkstra là đúng
Chứng minh: xem [1]
Ví dụ1: Cho các tỉnh a,b,c,d,e,f,g,z có vị trí như sơ đồ sau Biết rằng giữa các tỉnh
có đoạn đường nối với nhau có độ dài như hình vẽ Tìm đường đi ngắn nhất từ tỉnh
d (∞ )
2
1
6 5
4
4 3
2 2
d (∞ )
2
1
6 5
4
4 3
2 2
3
Trang 9d (4 )f
2
1 6 5
4
4 3
2 2
3
Trang 10f(1 )a g(6)f
)
z(∞ ) e(6)b
d (4 )f
2
1 6 5
4
4 3
2 2
3
b(2 )a c(4 )b a(0)
f(1 )a g(6)f
)
z(5 )c e(6)b
d (4 )f
2
1 6 5
4
4 3
2 2
3
Trang 1110Suy ra
T=T-{z}={e,g}
- Ta thực hiện bước 3: z T, kết thúc
L(z)=5 là độ dài đường đi ngắn nhất từ a đến z
Từ z ta đi ngược lại các đỉnh đã được ghi nhớ z c b a Ta suy ra đường
f(1 )a g(6)f
)
z(5 )c e(6)b
d (4 )f
2
1 6 5
4
4 3
2 2
3 2
e(∞ ) f(∞ )
2
5 6
3 2
4
Trang 12Các đỉnh không thay đổi Đồ thị có các nhãn như sau
Chú ý: Các chữ cái bên phải ở mỗi đỉnh là nhãn đỉnh đạt giá trị nhỏ nhất ở các
biểu thức tính min
- Ta thực hiện bước 2:
L(e)=min{L(x)| x T}=3Suy ra
e(3 )a f(∞ )
2
5 6
3 2
4
5 d(∞ )
z(∞ ) g(∞ )
4
Trang 13- Ta thực hiện bước 2:
L(b)=min{L(x)| x T}=4Suy ra
e(3 )a f(9 )e
2
5 6
3 2
4
b(4 )a c(6 )e a(0)
e(3 )a f(9 )e
2
5 6
3 2
4
b(4 )a c(6 )e a(0)
e(3 )a f(7)c
2
5 6
3 2
4
Trang 14- Ta thực hiện bước 2:
L(f)=min{L(x)| x T}=7Suy ra
e(3 )a f(7)c
2
5 6
3 2
4
b(4 )a c(6 )e a(0)
e(3 )a f(7)c
2
5 6
3 2
4
Trang 15- Ta thực hiện bước 2:
L(d)=min{L(x)| x T}=11Suy ra
L(z)=16 là độ dài đường đi ngắn nhất từ a đến z
Từ z ta đi ngược lại các đỉnh đã được ghi nhớ z g f c e a Ta suy
ra đường đi ngắn nhất là a e c f g z
3 Phươ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 ứng với các đỉnh, và các hàng ứng với các lần tính nhãn ở bước (4) Các nhãn gạch dưới ứng với nhãn nhỏ nhất ởbước (2), và đỉnh bị loại ghi bên phải Sau khi đỉnh z bị loại, từ z lần nguợc về đỉnh a theo nhãn ghi trên bảng Các đỉnh trên đường đi được gạch dưới ( trên cột các đỉnh loại) Cuối cùng theo thứ tự ngược lại ta nhận được đường đi ngắn nhất
b(4 )a c(6 )e a(0)
e(3 )a f(7)c
2
5 6
3 2
4
Trang 16Sau đây là bảng tính toán nhãn của ví dụ1 trên
Định lí : Giả sử G là đồ thị liên thông có trọng số và có n đỉnh Gọi f(n) là số
lần thuật toán Dijkstra khảo sát một cạnh của G trong trường hợp xấu nhất Khi
đó ta có
f(n) = O(n2)Chứng minh : xem [1]
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ố (không bắt buộc 0)
+ Đầu vào Đồ thị liên thông G = (V, E), V = 1,2, ,n , có trọng số w(i,j) 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 17Với mọi cặp (i,j), i=1 n, j=1 n thực hiện:
Nếu dk-1(i,j) > dk-1(i,k) + dk-1(k,j) thì đặt
dk(i,j) := dk-1(i,k) + dk-1(k,j)Ngược lại đặt
dk(i,j):=dk-1(i,j)Quay lại bước (2)
* Định lí: Thuật toán Floyd là đúng.
2 1
1
5
4 2
4 2 1
Trang 18Áp dụng thuật toán Floyd ta có:
Từ ma trận do, theo thuật toán, ta xây dựng các ma trận tiếp theo như sau( các ô
gạch dưới có giá trị thay đổi)
Trang 19Cuố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 và chứa chu trình
5 Thuật toán Floyd –Warshall
Trang 20Thuật giải tìm đườ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ố 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)
Nếu k=n, kết thúc D= Dn là ma trận độ dài đường đi ngắn nhất, P = Pn
Ngược lại tăng k lên 1 đơn vị (k:=k+1) và sang (3)
(3) Tính ma trận Dk và Pk theo Dk-1 và Pk-1:
Với mọi cặp (i,j), i= 1 n, j=1 n thực hiện:
Nếu dk-1(i,j) > dk-1(i,k) + dk-1(k,j) thì đặt
Dk(i,j):= dk-1(i,k) + dk-1(k,j)
và
pk(i,j):=pk-1(i,k)ngược lại đặt
dk(i,j):= dk-1(i,j)
và
Trang 21pk(i,j):= pk-1(i,j)Quay lại bước (2)
Phương pháp xác định đường đi ngắn nhất từ đỉnh i đến đỉnh j: Đường đi ngắn
nhất từ i đến j gồm dãy các đỉnh
I , i1, i2, i3,…, ik, ik+1,…, im, jthỏa mãn
i1= p(i,j), i2 =p(i1, j), … , ik+1 = p(ik,j), … , p(im,j) =j
+Ví dụ1 Xét đồ thị
Áp dụng giải thuật Floyd mở rộng ta nhận được các ma trận sau:
- Các ma trận xuất phát:
- Các ma trận cập nhật qua đỉnh a:( các giá trị mới được gạch dưới)
Vì (d,c) > (d,a) + (a,c) thì đặt (d,c):= (d,a) + (a,c)
11
1 4 7
b
Trang 22(d ,c):=(d,b)+(b,c); (d,d)>(d,b)+(b,d) nên đặt (d,d):=(d,b)+(b,d)
Các ma trận cập nhật qua đỉnh c:
(không thay đổi)
Cuối cùng, ta có ma trận khoảng cách ngắn nhất giữa các đỉnh D=D4 Ta thấy
đồ thị liên thông và chứa chu trình
Sử dụng ma trận P=P4, ta có thể tìm đườn đi ngắn nhất giữa các đỉnh Chẳng hạn, để tìm đường đi từ đỉnh a đến đỉnh d ta làm như sau:
7
P=P4 = abcdabbcbbddcdcdddddabbb
Trang 235 1
1
D
E
F G
3 8 3
1
3
Trang 24- Các ma trận cập nhật qua đỉnh B: (các giá trị mới được gạch dưới, to màu)
- Các ma trận cập nhật qua đỉnh C: (các giá trị mới được gạch dưới, tô màu)
ABCDEFGA1B43DBCDEFGABCDEFGA1B43D154B43D2=C83D34537E
12F1G175
ABCDEFGA1B43DBCDEFGABCDEFGA1B43DBBBBCFP
2=CDFDABCDEFGA1B43DABCDEFGA1B43DABCDEFGA1B43DEBEGFDGCDF
ABCDEFGA1B43DBCDEFGABCDEFGA1B43D15134B123D
3=C83D345
1337E12F1G174
ABCDEFGA1B43DBCDEFGABCDEFGA1B43DBBCBBCFP3=CDFDABCDEFGA1B43DABCDEFGA1B43DABCDEFGA1B43DCEB
EGFDGCDC
Trang 25- Các ma trận cập nhật qua đỉnh D: (các giá trị mới được gạch dưới,tô màu)
- Các ma trận cập nhật qua đỉnh E: (các giá trị mới được gạch dưới, tô màu)
Trang 26- Các ma trận cập nhật qua đỉnh F: (các giá trị mới được gạch dưới)
- Các ma trận cập nhật qua đỉnh G: (các giá trị mới được gạch dưới)
Cuối cùng, ta có ma trận khoảng cách ngắn nhất giữa các đỉnh D=D7 Ta thấy đồthị liên thông và chứa chu trình
Sử dụng ma trận P=P7, ta có thể tìm đườn đi ngắn nhất giữa các đỉnh Chẳng hạn,
để tìm đường đi từ đỉnh C đến đỉnh B ta làm như sau:
EGFFCFFCE
Trang 27Bài toán này đã cuốn hút được sự quan tâm của nhiều người bởi tính đa dạng và sựứng dụng của nó Do vậy, việc học tập, nghiên cứu chủ đề này là rất bổ ích vì nó có thểgiải quyết được nhiều vấn đề nảy sinh từ thực tế cuộc sống.
Trong đề tài này, mặt dù nhóm em đã dành nhiều thời gian nghiên cứu, thảo luận,
và được sự hướng dẫn chu đáo của Thầy PGS.TSKH.Trần Quốc Chiến nhưng do khảnăng có hạn nên chắc chắn đề tài không tránh khỏi thiếu sót Kính mong Thầy và các anhchị trong lớp góp ý, bổ sung, chỉnh sửa để đề tài được hoàn thiện hơn
Thay mặt nhóm, em xin chân thành cảm ơn sự giúp đỡ và hướng dẫn nhiệt tình,tận tụy của Thầy PGS.TSKH.Trần Quốc Chiến, cũng như sự động viên, khích lệ của tậpthể lớp để nhóm em hoàn thành tốt đề tài này
Trang 28TÀI LIỆU THAM KHẢO
[1] PGS.TSKH Trần Quốc Chiến, Giáo Trình Lý Thuyết Đồ Thị, Đà Nẵng _2005
[2] Hoàng Chúng, Graph, Nhà xuất bản Giáo Dục
[3] TSKH Vũ Đình Hoà, Một số kiến thức cơ sở về Graph hữu hạn, Nhà xuất bản GiáoDục
[4] Từ Văn Mặc, Trần Thị Ái ( biên dịch ), Chìa khoá vàng Toán Học, Nhà xuất bản ĐạiHọc Quốc Gia Hà Nội