Để giải quyết bài toán này trong trường hợp “độ dài” các cung là mờ, tôi chọn đề tài: “GIẢI BÀI TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT VỚI CÁC CUNG CÓ GIÁ TRỊ KHOẢNG” Trong đó, thuật toán Dijkstra
Trang 1LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
NGƯỜI HƯỚNG DẪN KHOA HỌC:
PGS TS Nguyễn Tân Ân
Trang 2LỜI CAM ĐOAN
Luận văn là kết quả nghiên cứu và tổng hợp các kiến thức mà học viên
đã thu thập được trong quá trình học tập tại trường Đại học Công nghệ thông tin và Truyền thông - Đại học Thái Nguyên, dưới sự hướng dẫn, giúp đỡ của các thầy cô và bạn bè đồng nghiệp, đặc biệt là sự hướng dẫn, giúp đỡ của PGS
TS Nguyễn Tân Ân
Tôi xin cam đoan luận văn không phải là sản phẩm sao chép của bất kỳ tài liệu khoa học nào
Học viên
Trang 3LỜI CẢM ƠN
Đầu tiên tôi xin gửi lời cảm ơn sâu sắc nhất tới PGS TS Nguyễn Tân
Ân, người hướng dẫn khoa học, đã tận tình chỉ bảo, giúp đỡ tôi thực hiện luận văn
Tôi xin cảm ơn các thầy cô trường Đại học Công nghệ thông tin và Truyền thông - Đại học Thái Nguyên đã giảng dạy và truyền đạt kiến thức cho tôi
Tôi xin chân thành cảm ơn Ban giám hiệu trường Cao đẳng Công nghiệp Thực Phẩm và các đồng nghiệp trong khoa Công nghệ thông tin đã tạo mọi điều kiện giúp đỡ tôi hoàn thành nhiệm vụ học tập
Cuối cùng, tôi xin cảm ơn những người thân và các bạn bè chia sẻ, gúp
đỡ tôi hoàn thành luận văn này
Mặc dù đã hết sức cố gắng hoàn thành luận văn với tất cả sự nỗ lực của bản thân, nhưng luận văn vẫn còn những thiếu sót Kính mong nhận được những ý kiến đóng góp của quý Thầy, Cô và bạn bè đồng nghiệp
Tôi xin chân thành cảm ơn!
Trang 4MỤC LỤC
LỜI CAM ĐOAN i
LỜI CẢM ƠN ii
MỤC LỤC iii
DANH MỤC CÁC KÍ HIỆU, CHỮ VIẾT TẮT v
DANH LỤC HÌNH VẼ vi
DANH LỤC BẢNG viii
MỞ ĐẦU 1
CHƯƠNG 1: BÀI TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT 4
1.1 Đồ thị 4
1.1.1 Các định nghĩa về đồ thị 4
1.1.2 Đường đi, chu trình, đồ thị liên thông 6
1.1.3 Biểu diễn đồ thị bằng ma trận 8
1.1.4 Ma trận trọng số 10
1.1.5 Danh sách cạnh 10
1.2 Bài toán tìm đường đi ngắn nhất trong đồ thị có trọng số xác định 11
1.2.1 Định nghĩa 11
1.2.2 Các thuật toán 12
1.2.3 Thuật toán Dijkstra 12
1.3 Bài toán tìm đường đi ngắn nhất trong đồ thị có trọng số mờ 18
1.3.1 Đặt bài toán 18
1.3.2 Một số cách biểu diễn giá trị mờ của các cung 20
Trang 51.3.3 Biểu diễn giá trị mờ của các cung bằng khoảng 22
1.4 Kết luận chương 1 26
CHƯƠNG II: SỐ HỌC KHOẢNG 27
2.1 Số học khoảng 27
2.1.1 Một số khái niệm cơ bản 27
2.1.2 Tóm tắt một số phương pháp xếp hạng các khoảng 28
2.1.3 Biểu diễn thứ tự các khoảng 30
2.1.4 Chọn giá trị lớn nhất và giá trị nhỏ nhất để xác định khoảng 35
2.2 Áp dụng thuật toán Dijkstra trong bài toán tìm đường đi ngắn nhất với độ dài các cung là khoảng 41
2.3 Kết luận chương 2 51
CHƯƠNG 3: CHƯƠNG TRÌNH ỨNG DỤNG 52
3.1 Bài toán 52
3.2 Xây dựng chương trình ứng dụng 52
3.2.1 Lựa chọn giải pháp 52
3.2.2 Thiết kế hệ thống 53
3.2.3 Một số giao diện chính của chương trình 54
3.3 Kết luận chương 3 60
KẾT LUẬN VÀ KIẾN NGHỊ 61
TÀI LIỆU THAM KHẢO 63 PHỤ LỤC
Trang 6DANH MỤC CÁC KÍ HIỆU, CHỮ VIẾT TẮT
- DM: người ra quyết định
- Tên các huyện, thành phố, thị xã của tỉnh Phú Thọ:
Tên huyện, thành, thị Kí hiệu
Trang 7DANH LỤC HÌNH VẼ
Hình 1.1 Đơn đồ thị, giả đồ thị 5
Hình 1.2 Bậc của đồ thị 6
Hình 1.3 Biểu diễn Đường đi Euler và đồ thị Euler 6
Hình 1.4 Đường đi trên đồ thị vô hướng 7
Hình 1.5 Đường đi trong đồ thị 8
Hình 1.6 Ma trận liền kề 4 đỉnh 9
Hình 1.7 Ma trận liền kề 5 đỉnh 9
Hình 1.8 Ma trận liên thuộc 10
Hình 1.9 Sơ đồ thuật toán Dijkstra 15
Hình 1.10 Đồ thị G trong bài toán áp dụng thuật toán Dijkstra 17
Hình 1.11 Tập mờ 22
Hình 1.12 Đồ thị hàm thuộc của tập mờ 23
Hình 1.13 Đồ thị hàm thuộc của tập A 24
Hình 1.14: Tập mờ lồi 24
Hình 1.15: Tập mờ chuẩn 24
Hình 1.16: Tập mờ vừa lồi vừa chuẩn 25
Hình 1.17: Tập α-cut của tập mờ A 25
Hình 2.1: Hàm mức độ loại bỏ A trong cặp khoảng (A,X) thuộc S2 31
Hình 2.2 Bài toán mạng 42
Hình 2.3 Giải pháp cải tiến bài toán 45
Hình 2.4 Bản đồ US thời gian lái xe giữa các thành phố chính 47
Trang 8Hình 3.1 Giao diện chính 55
Hình 3.2 Giao diện nhập dữ liệu 56
Hình 3.3 Bài toán mạng thử nghiệm 56
Hình 3.4 Kết quả bài toán thử nghiệm 57
Hình 3.5 Kết quả bài toán ứng dụng 60
Trang 9DANH LỤC BẢNG
Bảng 1.1 Kết quả bài toán áp dụng thuật toán Dijkstra 18 Bảng 1.2 Phân bố khả năng của học sinh theo điểm 21 Bảng 2.1 Phân tích nội dung của các ô trong bảng Fuzzy Rejection với bài toán tìm khoảng nhỏ nhất (Interval Minimization) 34 Bảng 2.2 Bảng Fuzzy Rejection 38 Bảng 2.3 Bảng Fuzzy Rejection hoàn thiện, với ô (i,j) chứa giá trị thành viên
mờ để xác định khả năng có thể loại bỏ của khoảng thứ i so với khoảng thứ j.39 Bảng 2.4 Bảng lựa chọn cuối cùng 40 Bảng 2.5 Các đường đi từ Bostom tới Los Angeles và độ dài của chúng 49 Bảng 3.1 Bảng kí hiệu tên các huyện thành thị trong tỉnh Phú Thọ 59 Bảng 3.2 Khảo sát thời gian lái xe giữa các huyện thành thị trong tỉnh Phú Thọ 59
Trang 10MỞ ĐẦU
I LÝ DO CHỌN ĐỀ TÀI
Tìm đường đi ngắn nhất trong một đồ thị tức là tìm đường đi ngắn nhất
từ một nút cho trước đến một nút khác cũng cho trước Mỗi cung trong mạng thường biểu diễn cho thời gian vận chuyển hoặc chi phí trong việc đi lại… Bài toán này đã được nhiều tác giả quan tâm và có ý nghĩa rất lớn trong thực
tế Một trong những thuật toán nổi tiếng giải bài toán này là thuật toán Dijkstra Tuy nhiên, dễ nhận thấy rằng, các giá trị mà các cung biểu diễn (thời gian vận chuyển hoặc chi phí trong việc đi lại) có thể dao động đáng kể tùy thuộc vào điều kiện giao thông, tải trọng cụ thể, vv Khi đó các giá trị này là
mờ và bài toán trở thành bài toán tìm đường đi ngắn nhất trong trường hợp
“độ dài” các cung là mờ Rõ ràng, trong trường hợp này thuật toán Dijkstra thông thường không thể áp dụng được Để giải quyết bài toán này trong trường hợp “độ dài” các cung là mờ, tôi chọn đề tài:
“GIẢI BÀI TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT VỚI CÁC CUNG CÓ GIÁ TRỊ KHOẢNG” Trong đó, thuật toán Dijkstra đã được thiết kế lại để xử lý các trường hợp mà hầu hết các thông số đều không chính xác và đưa về khoảng
Mặc dù số học khoảng đã thu hút nhiều nhà nghiên cứu, nhưng trong thực tế việc sắp xếp thứ tự các khoảng và ứng dụng số học khoảng trong việc
ra quyết định còn ít người nghiên cứu Công trình khá ấn tượng về vấn đề này
là công trình của Okada và Gen (1994) [6] Tuy nhiên, các thuật toán mà các tác giả đề xuất trong đó sinh ra một tập hợp các khoảng không thể so sánh được, vì thế kết quả của nó không thể giải quyết nhiều bài toán với khoảng một cách hiệu quả Cụ thể, Okada và Gen (1994) đã cố gắng giải quyết vấn đề với các khoảng không thể so sánh bằng cách sử dụng một chiến lược xếp hạng
Trang 11của riêng mình nhưng phương pháp của họ dường như làm việc một cách đặc biệt và do đó kết quả không đủ tổng quát trong các trường hợp khi giải bài toán đường đi ngắn nhất
Trong luận văn này, trước tiên đưa ra một cách so sánh dựa theo các quan hệ thứ tự khác nhau của Moore (1979) [5], Ishibuchi và Tanaka (1990) [3], Kundu (1997)) [4] Sau đó luận văn trình bày một phương pháp sắp xếp thứ tự ưu tiên mờ đối với các khoảng (Sengupta và Pal (2001)) [7] với một thứ tự rõ ràng hơn và thuyết phục hơn so với thứ tự của Okada và Gen (1994) [6] Trên cơ sở đó, luận văn áp dụng thuật toán của Dijkstra để giải bài toán đường đi ngắn nhất sang trường hợp các cung có giá trị là khoảng Cuối cùng
là chương trình ứng dụng giảm thiểu chi phí vận tải trong trường hợp chi phí này có biến động
II MỤC TIÊU, ĐỐI TƯỢNG, PHẠM VI NGHIÊN CỨU
Trong khuôn khổ của luận văn sẽ thực hiện và giải quyết những vấn đề sau:
- Nghiên cứu giải bài toán tìm đường đi ngắn nhất trong trường hợp giá trị của các cung là mờ được biểu diễn dưới dạng các khoảng
- Từ đó xây dựng ứng dụng trong bài toán giảm thiểu chi phí vận tải
III Ý NGHĨA KHOA HỌC VÀ THỰC TIỄN CỦA ĐỀ TÀI
Tìm hiểu mở rộng thuật toán Dijkstra để giải bài toán tìm đường đi ngắn nhất trong trường hợp giá trị của các cung trên đồ thị
Tìm hiểu thuật toán Dijkstra và nghiên cứu xây dựng đồ thị với các cung có giá trị khoảng để định hướng nghiên cứu lâu dài và đưa vào thực tiễn
IV PHƯƠNG PHÁP NGHIÊN CỨU
- Phương pháp nghiên cứu tài liệu, phân tích, tổng hợp
Trang 12- Phương pháp trao đổi khoa học, lấy ý kiến chuyên gia
- Phương pháp thực nghiệm và đối chứng qua chương trình thử nghiệm
Trang 13CHƯƠNG 1: BÀI TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT
1.1 Đồ thị
1.1.1 Các định nghĩa về đồ thị
Đồ thị là một cấu trúc rời rạc bao gồm các đỉnh và các cạnh nối các
đỉnh đó Người ta thường ký hiệu đồ thị G = (V,E), trong đó V là tập hợp các đỉnh (Verterx), E là tập hợp các cạnh (Edge) Người ta phân loại đồ thị theo
các đặc tính và số cạnh nối các cặp đỉnh của đồ thị [1]
Định nghĩa 1: Đơn đồ thị G = (V, E) gồm V là tập các đỉnh và E là tập
các cặp không có thứ tự gồm hai phần tử khác nhau của V gọi là các cạnh [1]
Định nghĩa 2: Đa đồ thị vô hướng G = (V, E) gồm V là tập các đỉnh và
E là họ các cặp không có thứ tự gồm hai phần tử khác nhau của V gọi là cạnh
Hai cạnh e 1 và e 2 được gọi là cạnh lặp nếu chúng cùng tương ứng với một cặp đỉnh
Rõ ràng mỗi đơn đồ thị là đa đồ thị, nhưng không phải đa đồ thị nào cũng là đơn đồ thị
Định nghĩa 3: Giả đồ thị vô hướng G = (V, E) gồm V là tập các đỉnh
và E là họ các cặp không có thứ tự gồm hai phần tử (không nhất thiết là phân biệt) của V gọi là các cạnh Cạnh e được gọi là khuyên nếu nó có dạng
e=(u,u) [1]
Tóm lại, giả đồ thị là loại đồ thị vô hướng tổng quát nhất vì nó có thể chứa các khuyên và các cạnh lặp Đa đồ thị là loại đồ thị vô hướng có thể chứa cạnh bội nhưng không thể có các khuyên, còn đơn đồ thị là loại đồ thị vô hướng không chứa cạnh lặp hoặc các khuyên
Trang 14Đơn đồ thị Giả đồ thị
Hình 1.1 Đơn đồ thị, giả đồ thị
Định nghĩa 4: Đơn đồ thị có hướng G = (V, E) gồm V là tập các đỉnh
và E là tập các cặp có thứ tự gồm hai phần tử khác nhau của V gọi là các
cung Nếu trong mạng có thể có đa kênh thoại một chiều, ta sẽ phải sử dụng đến khái niệm đa đồ thị có hướng
Định nghĩa 5: Đa đồ thị có hướng G = (V, E) gồm V là tập các đỉnh và
E là họ các cặp có thứ tự gồm hai phần tử khác nhau của V gọi là các cung
Hai cung e 1 và e 2 tương ứng với cùng một cặp đỉnh được gọi là cung lặp
Bậc của đồ thị được định nghĩa như sau:
Định nghĩa 1: Hai đỉnh u và v trong đồ thị (vô hướng) G=(V,E) được
gọi là liền kề nếu (u,v)E Nếu e = (u,v) thì e gọi là cạnh liên thuộc với các
đỉnh u và v Cạnh e cũng được gọi là cạnh nối các đỉnh u và v Các đỉnh u và v gọi là các điểm đầu mút của cạnh e
Định nghĩa 2: Bậc của đỉnh v trong đồ thị G=(V,E), ký hiệu deg(v), là
số các cạnh liên thuộc với nó, riêng khuyên tại một đỉnh được tính hai lần cho bậc của nó
Đỉnh v gọi là đỉnh treo nếu deg(v)=1 và gọi là đỉnh cô lập nếu
Trang 15Hình 1.2 Bậc của đồ thị
Ta có deg(v1)=7, deg(v2)=5, deg(v3)=3, deg(v4)=0, deg(v5)=4, deg(v6)=1, deg(v7)=2 Đỉnh v4 là đỉnh cô lập và đỉnh v6 là đỉnh treo
1.1.2 Đường đi, chu trình, đồ thị liên thông
Có thể coi năm 1736 là năm khai sinh lý thuyết đồ thị, với việc công bố lời giải “bài toán về các cầu ở Konigsberg” của nhà toán học lỗi lạc Euler (1707-1783) Thành phố Konigsberg thuộc Phổ (nay gọi là Kaliningrad thuộc Nga) được chia thành bốn vùng bằng các nhánh sông Pregel, các vùng này gồm hai vùng bên bờ sông, đảo Kneiphof và một miền nằm giữa hai nhánh của sông Pregel Vào thế kỷ 18, người ta xây bảy chiếc cầu nối các vùng này với nhau
Hình 1.3 Biểu diễn Đường đi Euler và đồ thị Euler
Dân thành phố từng thắc mắc: “Có thể nào đi dạo qua tất cả bảy cầu, mỗi cầu chỉ một lần thôi không?” Nếu ta coi mỗi khu vực A, B, C, D như
v 4
Trang 16một đỉnh và mỗi cầu qua lại hai khu vực là một cạnh nối hai đỉnh thì ta có sơ
đồ của Konigsberg là một đa đồ thị G như hình trên Bài toán tìm đường đi
qua tất cả các cầu, mỗi cầu chỉ qua một lần có thể được phát biểu lại bằng mô
hình này như sau: Có tồn tại chu trình đơn trong đa đồ thị G chứa tất cả các
cạnh
Định nghĩa 1 Đường đi độ dài n từ đỉnh u đến đỉnh v, trong đó n là số
nguyên dương, trên đồ thị vô hướng G =(V , E) là dãy x 0 , x 1 , … , x n-1 , x n
trong đó u = x 0 , v = x n (x i , x i+1 ) E, i= 0, 1, 2, , n -1 Đường đi nói trên còn
có thể biểu diễn dưới dạng dãy các cạnh: (x 0 , x i ), (x 1 , x 2 ), … (x n-1 , x n )
Đỉnh u gọi là đỉnh đầu, còn đỉnh v gọi là đỉnh cuối của đường đi Đường đi có đỉnh đầu trùng với đỉnh cuối (tức là u = v) được gọi là chu trình
Đường đi hay chu trình được gọi là đơn nếu như không có cạnh nào bị lặp lại
Ví dụ:
Hình 1.4 Đường đi trên đồ thị vô hướng
Ta có: d, b, a là đường đi đơn độ dài 2; d, b, c không là đường đi do (b, c) không phải là cạnh; d, b, a, d là chu trình độ dài 3 Đường đi d, a, b, a
không là đường đi đơn vì cạnh (a, b) có mặt hai lần
Định nghĩa 2: Đường đi độ dài n từ đỉnh u đến đỉnh v trong đó n là số
nguyên dương, trên đồ thị có hướng G=(V, A) là dãy: x 0 , x 1 , … x n-1 , x n
Trang 17Đường đi nói trên còn có thể hiểu diễn dưới dạng dãy các cung:
Hình 1.5 Đường đi trong đồ thị
Định nghĩa 3 Đồ thị vô hướng G = (V, E) được gọi là liên thông nếu
luôn tìm được đường đi giữa hai đỉnh bất kỳ của nó
1.1.3 Biểu diễn đồ thị bằng ma trận
Để lưu trữ đồ thị và thực hiện các thuật toán khác nhau với đồ thị trên máy tính cần phải tìm những cấu trúc dữ liệu thích hợp để mô tả đồ thị Viêc chọn cấu trúc dữ liệu nào để biểu diễn đồ thị có tác động rất lớn đến hiệu quả của thuật toán Vì vậy, việc chọn lựa cấu trúc dữ liệu để biểu diễn dồ thị phụ thuộc vào từng tình huống cụ thể (bài toán và thuật toán cụ thể)
Định nghĩa 1: Cho đồ thị G=(V,E) (vô hướng hoặc có hướng), với
V={v 1 ,v 2 , , v n } Ma trận liền kề của G ứng với thứ tự các đỉnh v 1 ,v 2 , , v n là
Trang 18Như vậy, ma trận liền kề của một đồ thị vô hướng là ma trận đối xứng, nghĩa là a ij a ji, trong khi ma trận liền kề của một đồ thị có hướng không có tính đối xứng
2110
1103
2030
10200
01001
01210
11011
Hình 1.7 Ma trận liền kề 5 đỉnh
Định nghĩa 2: Cho đồ thị vô hướng G=(V, E), v 1 , v 2 , , v n là các đỉnh và
e 1 , e 2 , , e m là các cạnh của G Ma trận liên thuộc của G theo thứ tự trên của V
Trang 19110000
101100
000011
Hình 1.8 Ma trận liên thuộc
1.1.4 Ma trận trọng số
Ma trận trọng số là được dùng để biểu diễn đồ thị
Xét đồ thị G=(X, U) (có hướng hay vô hướng)
Giả sử tập X gồm n đỉnh và được sắp thứ tự X={ }, tập U gồm n cạnh và được sắp thứ tự U={ }
Ví dụ, danh sách {a,b},{a,c},{b,c} mô tả đồ thị vô hướng trong hình dưới đây, trong đó ba đỉnh a, b, c được nối với nhau
Trang 20Thông thường, danh sách kề không coi trọng thứ tự giữa các cạnh Trong Khoa học máy tính, danh sách kề là một cấu trúc dữ liệu gắn bó chặt chẽ với việc biểu diễn đồ thị Trong một biểu diễn danh sách kề, với mỗi đỉnh trong đồ thị, ta lưu trữ tất cả các đỉnh khác có cạnh nối với đỉnh đó - danh sách kề của đỉnh Ví dụ, đồ thị trong hình vẽ có biểu diễn danh sách kề:
Trong đời sống, chúng ta thường gặp những tình huống như sau: để đi
từ địa điểm A đến địa điểm B trong thành phố, có nhiều đường đi, nhiều cách đi; có lúc ta chọn đường đi ngắn nhất (theo nghĩa cự ly), có lúc lại cần chọn đường đi nhanh nhất (theo nghĩa thời gian) và có lúc phải cân nhắc để chọn đường đi rẻ tiền nhất (theo nghĩa chi phí), v.v
Có thể coi sơ đồ của đường đi từ A đến B trong thành phố là một đồ thị, với đỉnh là các giao lộ (A và B coi như giao lộ), cạnh là đoạn đường nối hai giao lộ Trên mỗi cạnh của đồ thị này, ta gán một số dương, ứng với chiều dài của đoạn đường, thời gian đi đoạn đường hoặc cước phí vận chuyển trên đoạn đường đó,
Đồ thị có trọng số là đồ thị G=(V,E) mà mỗi cạnh (hoặc cung) eE
được gán bởi một số thực m(e), gọi là trọng số của cạnh (hoặc cung) e
Trong phần này, trọng số của mỗi cạnh được xét là một số dương và
còn gọi là chiều dài của cạnh đó Mỗi đường đi từ đỉnh u đến đỉnh v, có chiều dài là m(u,v), bằng tổng chiều dài các cạnh mà nó đi qua Khoảng cách d(u,v)
Trang 21giữa hai đỉnh u và v là chiều dài đường đi ngắn nhất (theo nghĩa m(u,v) nhỏ nhất) trong các đường đi từ u đến v
Bài toán tìm đường đi ngắn nhất:
Cho đơn đồ thị liên thông, có trọng số G=(V,E) Tìm khoảng cách
d(u 0 ,v) từ một đỉnh u 0 cho trước đến một đỉnh v bất kỳ của G và tìm đường đi ngắn nhất từ u 0 đến v
1.2.2 Các thuật toán
Có nhiều thuật toán để giải bài toán tìm đường đi ngắn nhất trên đồ thị
có trọng số:
- Dijkstra (1956- Hà Lan): áp dụng với đồ thị có trọng số không âm
- Bellman Ford: áp dụng với đồ thị có trọng số âm
- Giải thuật tìm kiếm A*: sử dụng hàm kinh nghiệm heuristic để tăng tốc độ tìm kiếm
- Floyd: tìm đường đi ngắn nhất với mọi cặp đỉnh
Tuy nhiên trong khuôn khổ luận văn này tôi lựa chọn trình bày thuật toán Dijkstra
1.2.3 Thuật toán Dijkstra
Trong trường hợp trọng số trên các cung là không âm thuật toán do Dijkstra đề nghị giải bài toán tìm đường đi ngắn nhất từ đỉnh s đến các đỉnh còn lại của đồ thị làm việc hữu hiệu hơn rất nhiều so với thuật toán trình bày trong mục trước Thuật toán được xây dựng dựa trên cơ sở gán cho các đỉnh các nhãn tạm thời Nhãn của mỗi đỉnh cho biết cận trên của độ dài đường đi ngắn nhất từ s đến nó Các nhãn này sẽ được biến đổi theo một thủ tục lặp, mà
Trang 22ở mỗi một bước lặp có một nhãn tạm thời trở thành nhãn cố định Nếu nhãn của một đỉnh nào đó trở thành cố định thì nó sẽ cho ta không phải là cận trên
mà là độ dài của đường đi ngắn nhất từ đỉnh s đến nó
Thuật toán được mô tả cụ thể như sau:
procedure Dijkstra;
(* Đầu vào: Đồ thị có hướng G=(V,E) với n đỉnh, sV là đỉnh xuất
phát, a[u, v], u, v V, ma trận trọng số;
Giả thiết: a[u, v] 0, u, v V
Đầu ra: Khoảng cách từ đỉnh s đến tất cả các đỉnh còn lại d[v], v V Truoc[v], v V, ghi nhận đỉnh đi trước v trong đường đi ngắn nhất từ s
đến v *)
begin
(* Khởi tạo *) for v V do
begin
d[v] := a[s,v] ; Truoc[v]:=s;
Trang 23Tìm đỉnh u T thỏa mãn d[u] = min{ d[z] : z e T};
T := T \ { u ) ; (* Cố định nhãn của đỉnh u *)
if d[v] > d[u] + a[u,v] then begin
d[v] := d [u ] + a[u,v] ; Truoc[v] := u ;
end;
end;
end;
Trang 24Hình 1.9 Sơ đồ thuật toán Dijkstra
Định lý: Thuật toán Dijkstra tìm được đường đi ngắn nhất trên đồ thị
sau thời gian cỡ O(n 2 )
Chứng minh: Trước hết ta chứng minh là thuật toán tìm được đưòng
đi ngắn nhất từ đỉnh s đến các đỉnh còn lại của đồ thị Giả sử rằng ở một bước
lặp nào đó các nhãn cố định cho ta độ dài các đường đi ngắn nhất từ s đến các
đỉnh có nhãn cố định, ta sẽ chứng minh rằng ở lần lặp tiếp theo nếu đỉnh u* thu được nhãn cố định thì d[u*] chính là độ dài đường đi ngắn nhất từ s đến
u*
Bắt đầu
d[s] := 0; T := V \ {s }
vV d[v] := a[s,v] ;
S
Kết thúc
S
Trang 25Ký hiệu S i là tập các đỉnh có nhãn cố định còn S 2 là tập các đỉnh có nhãn tạm thời ở bước lặp đang xét Kết thúc mbỗi bước lặp nhãn tạm thời
d[v] cho ta độ dài của đường đi ngắn nhất từ s đến v chỉ qua những đỉnh nằm
hoàn toàn trong tập S 1 Giả sử rằng đường đi ngắn nhất từ s đến u * không nằm
trọn trong tập S 1 tức là nó đi qua ít nhất một đỉnh của tập S 2 Gọi z S 2 là đỉnh đầu tiên như vậy trên đường đi này Do trọng số trên các cung là không
âm, nên đoạn đường từ z đến u * có độ dài L > 0 và
d[z] < d[u * ] - L < d[u * ]
Bất đẳng thức này là mâu thuẫn với cách xác định đỉnh u * là đỉnh có
nhãn tạm thời nhỏ nhất Vậy đường đi ngắn nhất từ s đến u * phải nằm trọn
trong S 1 , và vì thế d[u * ] là độ dài của nó Do ở lần lặp đầu tiên S 1 = {s} và sau
mỗi lần lặp ta chỉ thêm vào S 1 một đỉnh u * nên giả thiết là d[v] cho độ dài đường đi ngắn nhất từ s đến v với mọi vS 1 là đúng với bước lặp đầu tiên
Theo quy nạp suy ra thuật toán cho ta đường đi ngắn nhất từ s đến mọi đỉnh
của đồ thị
Bây giờ sẽ đánh giá số phép toán cần thực hiện theo thuật toán, ở mỗi
bước lặp để tìm ra đỉnh u cần phải thực hiện O(n) phép toán, và để gán nhãn lại cũng cần phải thực hiện một số lượng phép toán cũng là O(n) Tb huật toán phải thực hiện n-1 bước lặp, vậy thời gian tính toán của thuật toán là cỡ O(n 2 )
Định lý được chứng minh
Khi đã tìm được độ dài của đường đi ngắn nhất d[v] thì đường đi này
có thể tìm dựa vào nhãn Truoc[v], vV, theo quy tắc giống như chúng ta đã
4
2 4 2
6
2 3
2
3
Trang 26Hình 1.10 Đồ thị G trong bài toán áp dụng thuật toán Dijkstra
Áp dụng thuật toán Dijkstra cho bài toán trên ta xây dựng được bảng kết quả sau:
Trang 27Bảng 1.1 Kết quả bài toán áp dụng thuật toán Dijkstra
Các bài toán đường đi ngắn nhất được chia thành 3 dạng chính:
- Tìm đường đi ngắn nhất từ một nút nguồn đến một nút đích
- Tìm đường đi ngắn nhất từ một nút nguồn đến tất cả các nút đích
- Tìm đường đi ngắn nhất giữa hai nút bất kỳ
Bài toán được đề cập đến ở đây là bài toán ở dạng thứ nhất: tìm đường
đi ngắn nhất từ một nút nguồn đến một nút đích cho trước
Trang 28* Xây dựng đường đi trong đồ thị:
Theo định nghĩa với bài toán đường đi ngắn nhất ta xây dựng đường đi
trên cung i,j là một hàm x(i,j) thỏa mãn các tính chất sau:
x ij =0 hoặc x ij =1 ứng với việc có hay không sử dụng cung i,j trong
* Giới hạn đường đi:
Đường đi trên cung không vượt quá trọng số của cung
),(),(u v c u v
* Cân bằng đường đi tại nút đỉnh:
Tổng đường đi vào tại một đỉnh bằng tổng đường đi ra tại đỉnh đó (trừ đỉnh đầu và đỉnh đích)
i j f j
i
f
),()
,
( (với i là một đỉnh thông thường trong đồ thị)
Tổng đường đi ra khỏi đỉnh nguồn bằng tổng đường đi vào đỉnh đích
Trang 29
n j
n j
t j f j
s f
),()
,(
1.3.2 Một số cách biểu diễn giá trị mờ của các cung
Trong thực tế, nhiều trường hợp con người không thể biết chính xác, không thể biết đầy đủ thông tin về những đối tượng đang quan tâm Có nhiều nguyên nhân dẫn đến tình trạng đó Ví dụ các dụng cụ đo không chính xác, sự cảm nhận của người khảo sát cũng không thống nhất ở mọi nơi, mọi lúc; hoàn cảnh xem xét và đối tượng được xem xét trong thế giới thực vô cùng phức tạp Khi không có thông tin chính xác và đầy đủ, người ta thường biểu diễn thông tin đó bằng các giá trị mờ
Lý thuyết tập mờ do L Zadeh người Mỹ đề xuất vào năm 1965 Từ đó con người có một công cụ toán học chặt chẽ để biểu diễn và xử lý thông tin
mờ Sau này và cho đến nay, lý thuyết tập mờ đã không ngừng phát triển và ngày được ứng dụng rộng rãi Đã có rất nhiều công trình phát triển và ứng dụng lý thuyết tập mờ Từ các công trình đã có, có thể nói, để biểu diễn thông tin mờ người ta thường theo các cách sau:
i Dùng hàm thuộc để biểu diễn độ thuộc của các phần tử vào tập mờ Việc tính toán dựa trên các hàm thuộc có nhiều thuận lợi như đảm bảo sự chặt chẽ toán học và quá trình tính toán cũng không quá phức tạp với các hàm thuộc được chọn hợp lý Theo hướng này người ta đã phát triển, mở rộng các phép tính toán trên tập mờ bằng các Triangular Nom thay cho các toán tử Max, Min như L Zadeh đề xuất hoặc bên cạnh việc dùng hàm thuộc để biểu diễn độ thuộc của các phần tử vào tập mờ, người ta còn xét thêm cả hàm không thuộc để biểu diễn độ không thuộc của phần tử vào tập mờ với điều kiện tổng độ thuộc và độ không thuộc phải nhỏ hơn 1 Trực cảm, người ta cho
Trang 30rằng như thế mới hợp lý Những tập mờ được biểu diễn theo phương pháp này được gọi là tập mờ trực cảm (Intuitionnistic Fuzzy Sets)
ii Dùng lý thuyết khả năng Theo cách này người ta dựa vào sự phân
bố khả năng của các phần tử vào tập mờ Ví dụ, một học sinh đạt loại khá thì loại khá của học sinh được biểu diễn nhờ các mức độ khả năng như sau:
Bảng 1.2 Phân bố khả năng của học sinh theo điểm
đã được tác giả Nguyễn Cát Hồ và cộng sự nghiên cứu, hoàn thiện và ứng dụng trong rất nhiều công trình được công bố
Trong luận văn này, với bài toán cụ thể là bài toán tìm đường đi ngắn nhất khi thông tin về các trọng số của các cung là thông tin mờ, tôi chọn cách biểu diễn các thông tin mờ bằng các khoảng
Ví dụ quãng đường từ A đến B khoảng 60-70 km
Mỗi cung trong mạng thường biểu diễn cho thời gian vận chuyển hoặc chi phí trong việc đi lại… Trong đó, giá trị mà các cung biểu diễn (thời gian vận chuyển hoặc chi phí trong việc đi lại) có thể dao động đáng kể tùy thuộc vào điều kiện giao thông, tải trọng cụ thể, vv Khi đó các giá trị này là mờ và
Trang 31bài toán trở thành bài toán tìm đường đi ngắn nhất trong trường hợp “độ dài” các cung là mờ, hầu hết các thông số đều không chính xác
1.3.3 Biểu diễn giá trị mờ của các cung bằng khoảng
Trên thực tế, các giá trị mà các cung biểu diễn (thời gian vận chuyển hoặc chi phí trong việc đi lại) có thể dao động đáng kể tùy thuộc vào điều kiện giao thông, tải trọng cụ thể, vv Khi đó các giá trị này không biểu thị bằng các số rõ mà thường được thể hiện thông qua các giá trị xấp xỉ và có một giải pháp là đưa về khoảng
Ví dụ quãng đường từ A đến B khoảng 60 đến 70 km Trong những trường hợp này phải dùng số mờ để biểu diễn độ dài các cung
Trước khi bàn đến cách biểu diễn các giá trị mờ bằng khoảng, chúng ta hãy xem lại định nghĩa tập mờ kinh điển của L Zadeh
Định nghĩa 1: Tập mờ A xác định trên không gian nền X là một tập
hợp thỏa mãn:
+ Mỗi phần tử của A có dạng (x, A (x))
+ A(x) là một ánh xạ từ X [0,1] được gọi là hàm thuộc xác định độ
thuộc của x vào tập A
Ví dụ:
Hình 1.11 Tập mờ
Giả sử tập mờ A các số tự nhiên trong không gian nền :
X={1,2,3,4,5,6,7} nhỏ hơn nhiều so với 6 Xác định phụ thuộc hàm ( x )
B
Trang 32dạng liệt kê sau:
A = {(1,1),(2,0.8),(3,0.6),(4,0.4), (5,0.2),(6,0)}
- Các số tự nhiên có độ phụ thuộc là: A (1)= 1 ; A (2)=0.8 ; A (3)= 0.6;
A (4) = 0.4, A (5)= 0.2; A (6) = 0 Biểu diễn hàm thuộc có thể dùng bảng,
dùng đồ thị hoặc dùng một biểu thức đại số hay phối hợp các cách trên
Trong nhiều tài liệu để biểu diễn tập mờ người ta cũng thường dùng ký hiệu sau:
n A A
A A
x
x x
x x
x x
x x
x A
1 3
()
A x nÕu 1
Trang 332 6
Hình 1.13 Đồ thị hàm thuộc của tập A
Cùng với khái niệm tập mờ, người ta còn đưa ra khái niệm số mờ Ta xét một vài định nghĩa:
Định nghĩa 2: Tập mờ A của không gian nền U là tập mờ lồi nếu và chỉ
nếu với mọi u 1 , u 2 trong U ta có:
Trang 34Định nghĩa 4: Số mờ là tập mờ A trong không gian nền U vừa lồi vừa
chuẩn
Hình 1.16: Tập mờ vừa lồi vừa chuẩn
Định nghĩa 5: Tập α-cut của tập mờ A trên không gian nền U là tập kinh
điển A α ={u i | (u i ) α}
Hình 1.17: Tập α-cut của tập mờ A
Thông thường người ta dùng số mờ có hàm thuộc dạng hình thang hay hình tam giác, gọi tắt là số mờ hình thang, số mờ hình tam giác Người ta cũng định nghĩa các phép toán hay dùng trên các số mờ
Trong ngôn ngữ nói, có thể mô tả số mờ với các từ như xấp xỉ, khoảng,
gần đến, Khi đó số mờ x được mô tả kiểu "x khoảng từ a đến b" và biểu diễn trên một khoảng [a, b] Ta thấy biểu diễn số mờ bằng giá trị khoảng là một
cách biểu diễn rất tự nhiên
Trang 351.4 Kết luận chương 1
Chương này luận văn trình bày một số định nghĩa cơ bản về lý thuyết
đồ thị và lý thuyết tập mờ Trong đồ thị có trọng số không âm nhấn mạnh thuật toán Dijkstra để giải bài toán tìm đường đi ngắn nhất từ một nút gốc đến một nút đích cho trước Mỗi cạnh trong đồ thị thường biểu diễn cho thời gian vận chuyển hoặc chi phí trong việc đi lại Tuy nhiên, các giá trị này (thời gian vận chuyển hoặc chi phí trong việc đi lại) có thể dao động đáng kể tùy thuộc vào điều kiện giao thông, tải trọng cụ thể, Khi đó ta có thể biểu diễn các giá trị này là mờ và bài toán trở thành bài toán tìm đường đi ngắn nhất trong trường hợp “độ dài” các cung là mờ trong đó các thông số đều không chính xác và đưa về khoảng
Trang 36CHƯƠNG II: SỐ HỌC KHOẢNG 2.1 Số học khoảng
2.1.1 Một số khái niệm cơ bản
Một giá trị khoảng có thể được coi như:
(a) phần mở rộng của khái niệm số thực và cũng là một tập hợp con của đường thẳng thực?,
(b) một số mờ suy biến phẳng hoặc khoảng mờ từ số không trái đến số không phải mở rộng
(c) α-cut của một số mờ
Như một hệ số, một khoảng biểu thị mức độ dung nạp hay một khu vực
mà các tham số có thể có Trong thực tế, tính chính xác của loại này có thể được trích dẫn ở vô số các tình huống
Các chữ in thường biểu thị số thực và các chữ cái in hoa biểu thị những
số khoảng hoặc khoảng đóng trên đường thẳng thực Một khoảng được quy định như sau:
A = [a L , a R ] = {t |a L ≤ t ≤ a R }
hoặc, trong ký hiệu thay thế,
A = m( A), w( A)
= {t |(m( A) w( A)) ≤ t ≤ (m( A) + w( A))}
Trong đó a L , a R , m(A) và w(A) là những giới hạn trái, giới hạn phải,
điểm giữa và nửa độ rộng hoặc độ rộng (từ nay về sau được gọi là độ rộng)
của khoảng thời gian A trên trục số thực tương ứng Nếu a L = a R = a thì A=[a,a] là một số thực
Trang 37Đặt = {+, , , ÷} là một phép toán hai ngôi Khi đó, phép toán mở
rộng giữa 2 khoảng số A và B được định nghĩa như sau:
] a , a [
0 ,
] a , a [
L R
R L
Khi đó, phép cộng và phép trừ mở rộng thành:
A B = [a L + b L , a R + b R ]
A B = [a L - b L , a R - b R ]
2.1.2 Tóm tắt một số phương pháp xếp hạng các khoảng
Cho 2 khoảng A và B nếu:
(1) Không chồng chéo ví dụ: a R <b L , thì tồn tại một mối quan hệ ưu tiên chặt
chẽ giữa A và B
(2) Chồng chéo một phần, ví dụ a L< b L ≤ a R< b R , thì tồn tại một mối quan hệ
ưu tiên chặt chẽ giữa A và B
(3) B chứa trong A tức là BA, khi đó
(a) Nếu m( A) = m(B) và w(A) ≥ w(B), thì tồn tại một mối quan hệ ưu tiên
chặt chẽ giữa A và B Để tìm khoảng min (hay max) giữa A và B (trừ trường hợp BA), thì B luôn được ưu tiên hơn A
Trang 38(b) Nếu m(A) ≤ m(B) và w(A) ≥ w(B), thì tồn tại một mối quan hệ ưu tiên
chặt chẽ giữa A và B Cụ thể, để chọn được khoảng max giữa hai khoảng này thì B được ưu tiên hơn A
(c) Nếu m(A) ≥ m(B) và w(A) ≥ w(B), thì cũng tồn tại một mối quan hệ ưu
tiên chặt chẽ giữa A và B Để chọn được khoảng min giữa hai khoảng này thì
B được ưu tiên hơn A
(d) Để tìm khoảng min từ trường hợp (b) và tìm khoảng max trong
trường hợp (c), các phương án đưa ra có thể mang tính mềm dẻo hoặc tính
mờ
Hai quan hệ bắc cầu được đưa ra bởi Moore (1979) không thể giải thích việc xếp hạng giữa các khoảng chồng lấp Phương pháp xếp hạng của Ishibuchi và Tanaka (1990 ), tiên tiến hơn phương pháp của Moore (1979) một cách đáng kể, có thể có giá trị cho tất cả các trường hợp trên, ngoại trừ trường hợp 3 (d) Kundu (1997) đã giới thiệu một mối quan hệ mờ để so sánh hai khoảng thời gian bất kỳ trên dòng thực, và có thể giải quyết vấn đề của Ishibuchi và Tanaka nhưng nó có thể không đầy đủ trong trường hợp khác Với hai khoảng A và B bất kỳ, nếu m (A) = m ( B) và w (A) w (B), phương pháp tiếp cận của Cates Kundu chỉ ra rằng cả A và B là lựa chọn tối ưu (min hoặc max) nhưng chưa phù hợp Okada và Gen (1994) đã mở rộng phương pháp Ishibuchi và Tanaka; và xác định giao diện giữa việc sắp thứ tự một phần và thứ tự tuyệt đối Họ dự định giảm số lượng các cặp khoảng không thể
so sánh (như trường hợp 3 (d) ) Tuy nhiên, cơ sở hợp lý cho việc lựa chọn giữa các thứ tự một phần và tuyệt đối không được bàn đến Ngoài ra, khi chọn thứ tự tuyệt đối theo Okada và Gen [6] để giải quyết trường hợp 3(d) thì không giải quyết được tính duy nhất và tính hiệu quả của phương pháp so