LỜI CAM ĐOAN Tôi xin cam đoan những kết quả nghiên cứu được trình bày trong luận văn: “Đánh giá hiệu quả của giải thuật di truyền và giải thuật tối ưu hóa đàn kiến cho bài toán người du
Trang 1TRƯỜNG ĐẠI HỌC VINH
NGUYỄN XUÂN HƯỞNG
ĐÁNH GIÁ HIỆU QUẢ CỦA GIẢI THUẬT DI TRUYỀN VÀ GIẢI THUẬT TỐI ƯU HÓA ĐÀN KIẾN
CHO BÀI TOÁN NGƯỜI DU LỊCH
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
Vĩnh Long, 2018
Trang 2TRƯỜNG ĐẠI HỌC VINH
_
NGUYỄN XUÂN HƯỞNG
ĐÁNH GIÁ HIỆU QUẢ CỦA GIẢI THUẬT DI TRUYỀN VÀ GIẢI THUẬT TỐI ƯU HÓA ĐÀN KIẾN
CHO BÀI TOÁN NGƯỜI DU LỊCH
Chuyên ngành: CÔNG NGHỆ THÔNG TIN
Mã số: 8.48.02.01
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
Người hướng dẫn khoa học: TS HOÀNG HỮU VIỆT
Vĩnh Long, 2018
Trang 3
LỜI CAM ĐOAN
Tôi xin cam đoan những kết quả nghiên cứu được trình bày trong luận văn: “Đánh giá hiệu quả của giải thuật di truyền và giải thuật tối ưu hóa đàn kiến cho bài toán người du lịch” là hoàn toàn trung thực, của tôi, không vi phạm bất cứ điều gì trong luật sở hữu trí tuệ và pháp luật Việt Nam Nếu sai, tôi hoàn toàn chịu trách nhiệm trước pháp luật
TÁC GIẢ LUẬN VĂN
Nguyễn Xuân Hưởng
Trang 4LỜI CẢM ƠN Trước hết, tôi xin bày tỏ lòng biết ơn sâu sắc đến thầy giáo TS Hoàng Hữu Việt đã tận tình chỉ bảo và tạo mọi điều kiện thuận lợi cho tôi hoàn
thành luận văn này
Xin cùng bày tỏ lòng biết ơn chân thành tới các thầy cô giáo viện Khoa học và Công nghệ - Trường Đại học Vinh đã truyền thụ kiến thức, kinh nghiệm, giúp đỡ em trong quá trình học tập
Xin gửi lời cám ơn đến Ban Lãnh đạo Văn phòng Tỉnh ủy Vĩnh Long, phòng Cơ yếu – Công nghệ thông tin Văn phòng Tỉnh ủy Vĩnh Long đã tạo điều kiện cho tôi tham gia lớp học và thực hiện đề tài Cuối cùng tôi xin gửi lời cảm ơn đến gia đình, bạn bè, những người đã luôn bên tôi, động viên và khuyến khích tôi trong quá trình thực hiện đề tài nghiên cứu của mình
Vĩnh Long, ngày 13 tháng 07 năm 2018
TÁC GIẢ LUẬN VĂN
Nguyễn Xuân Hưởng
Trang 5MỤC LỤC
Trang
TRANG PHỤ BÌA
LỜI CAM ĐOAN
LỜI CẢM ƠN
DANH MỤC CÁC TỪ VIẾT TẮT
DANH MỤC CÁC HÌNH
DANH MỤC CÁC BẢNG
MỞ ĐẦU 1
CHƯƠNG 1 5
TỔNG QUAN 5
1.1 Giới thiệu 5
1.1.1 Phát biểu bài toán 5
1.1.2 Lịch sử của bài toán 5
1.1.3 Phân lớp bài toán TSP 7
1.2 Biểu diễn không gian trạng thái của bài toán 7
1.2.1 Biễu diễn đồ thị 7
1.2.2 Biểu diễn dạng lưới 11
1.3 Các hướng tiếp cận giải bài toán 12
1.3.1 Các hướng tiếp cận theo phương pháp vét cạn 12
1.3.2 Các hướng tiếp cận heuristic 13
CHƯƠNG 2 15
GIẢI THUẬT DI TRUYỀN VÀ TỐI ƯU HÓA ĐÀN KIẾN 15
2.1 Giải thuật di truyền 15
2.1.1 Giới thiệu 15
2.1.2 Giải thuật 15
2.1.3 Giải thuật di truyền cho bài toán người du lịch 17
Trang 62.2 Giải thuật tối ưu hóa đàn kiến 28
2.2.1 Giới thiệu 28
2.2.2 Thuật toán AS cho bài toán người du lịch 30
2.2.3 Thuật toán ACS cho bài toán người du lịch 35
CHƯƠNG 3 38
ĐÁNH GIÁ HIỆU QUẢ CỦA CÁC GIẢI THUẬT CHO BÀI TOÁN NGƯỜI DU LỊCH 38
3.1 Phương pháp tạo dữ liệu đánh giá các thuật toán 38
3.2 Ví dụ thực hiện để đánh giá các thuật toán 39
3.3 Lựa chọn tham số cho thuật toán 41
3.4 So sánh hiệu quả của các thuật toán 44
3.5 Một số đề xuất 47
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 49
TÀI LIỆU THAM KHẢO 51
Trang 7DANH MỤC CÁC TỪ VIẾT TẮT
1 ACO Ant colony optimization
2 ACS Ant Colony System
3 ANT-Q Ant Colony-Q-learning
5 GA Genetic Algorithm
6 NP Non-deterministic Polynomial-time
7 QAP Quadratic Assignment Problem
8 SSP Shop Scheduling Problem
9 SMP Stable Marriage Problem
10 TSP Travelling Salesman Problem
Trang 8DANH MỤC CÁC HÌNH
Hình 1.1 Đồ thị minh họa bậc của đỉnh 9
Hình 1.2 Đồ thị minh họa ma trận kề 10
Hình 2.1 Sơ đồ khối của thuật toán di truyền 16
Hình 2.2 Đồ thị minh họa giải thuật di truyền 19
Hình 2.3 Kết quả chạy của thuật toán 28
Hình 2.4 Cách đàn kiến tìm đường ngắn nhất dựa trên vết mùi 29
Hình 2.5 Đồ thị K8 32
Hỉnh 2.6 Chu trình tìm được của các kiến sau vòng lặp 1 35
Hình 3.1 Đồ thị minh họa cho dữ liệu tạo ngẫu nhiên 38
Hình 3.2 Đồ thị 20 đỉnh 40
Hình 3.3 Kết quả thực hiện của thuật toán GA 40
Hình 3.4 Kết quả thực hiện của thuật toán AS 41
Hình 3.5 Kết quả thực hiện của thuật toán ACS 41
Hình 3.6 Chiều dài chu trình tìm được của các thuật toán GA, AS và ACS 47
Hình 3.7 Thời gian tìm kiếm chu trình của các thuật toán GA, AS và ACS 47
Trang 9DANH MỤC CÁC BẢNG
Bảng 2.1 Tọa độ các đỉnh và ma trận kề giữa các đỉnh của đồ thị 20
Bảng 2.2 Quần thể khởi tạo 21
Bảng 2.3 Sắp xếp các nhiễm sắc thể theo chiều dài giảm dần ở thế hệ 1 21
Bảng 2.4 Lai ghép các nhiễm sắc thể thế hệ 1 22
Bảng 2.5 Thay thế nhiễm sắc thể trong quần thể ở thế hệ 1 22
Bảng 2.6 Đột biến các nhiễm sắc thể của thế hệ 1 23
Bảng 2.7 Quần thể đạt được của thế hệ 2 24
Bảng 2.8 Quần thể đạt được của thế hệ 2 sắp xếp theo thứ hạn chiều dài 24
Bảng 2.9 Lai ghép các nhiễm sắc thể thế hệ 2 25
Bảng 2.10 Thay thế các cá thể sinh ra ở thế hệ 2 25
Bảng 2.11 Các cá thể đột biến ở thế hệ 2 26
Bảng 2.12 Quần thể đạt được ở thế hệ 3 26
Bảng 2.13 Xếp hạng các cá thể theo chiều dài ở thế hệ 3 27
Bảng 2.14 Ma trận kề của đồ thị K8 32
Bảng 2.15 Khởi tạo tham số 33
Bảng 2.16 Giá trị khởi tạo tham số 33
Bảng 2.17 Giá trị của tham số sau vòng lặp 1 34
Bảng 3.1 Tọa độ các đỉnh và ma trận kề giữa các đỉnh của đồ thị 39
Bảng 3.2 Tọa độ các đỉnh và ma trận kề giữa các đỉnh của đồ thị 42
Bảng 3.3 Ảnh hưởng của số kiến với chiều dài chu trình của thuật toán ACS 43
Bảng 3.4 Kết quả so sánh của giải thuật di truyền và ACS 45
Trang 10MỞ ĐẦU
1 Sự cần thiết của vấn đề nghiên cứu
Bài toán Người du lịch (Travelling Salesman Problem - TSP) là một trong những bài toán kinh điển Bài toán có phát biểu đơn giản nhưng rất khó giải trong trường hợp tổng quát với không gian tìm kiếm rộng lớn, khó bởi các thuật toán hiệu quả nhất đã được biết đến có thời gian giải quyết bài toán này tăng dần theo cấp số nhân của n, hay độ phức tạp thuật toán tăng theo hàm số
mũ Có rất nhiều cách tiếp cận giải bài toán này như: sử dụng quy hoạch tuyến tính, thuật toán vét cạn, thuật toán người láng giềng gần nhất, kỹ thuật nhánh và cận, nhưng mới chỉ dừng lại ở các bộ dữ liệu nhỏ Khi giải thuật di truyền (Genetic Algorithm - GA) và giải thuật tối ưu hóa đàn kiến (Ant Colony Optimization – ACO) ra đời được áp dụng vào bài toán Người du lịch cho kết quả tốt hơn và thời gian giải quyết bài toán tối ưu hơn trên các bộ dữ liệu lớn
Giải thuật di truyền (Genetic Algorithm - GA) được đề xuất bởi John Holland là một trong những phát triển quan trọng của những nhà nghiên cứu
về tính toán ứng dụng cuối thế kỷ trước trong việc giải xấp xỉ các bài toán tối
ưu toàn cục Một trong những đặc tính quan trọng của giải thuật di truyền là làm việc theo quần thể các giải pháp Việc tìm kiếm bây giờ được thực hiện song song song trên nhiều điểm (multipoints), giải thuật bắt chước sự chọn lọc của tự nhiên và di truyền, mỗi cá thể có cấu trúc gen đặc trưng cho phẩm chất của cá thể đó Những cá thể nào có khả năng thích nghi tốt sẽ được tái sinh và nhân bản ở các thế hệ sau, các cá thể con có thể thừa hưởng một phần cấu trúc gen của cả cha và mẹ và trong quá trình tiến hóa có thể xảy ra hiện tượng đột biến (cá thể con có thể chứa các gen mà cả cha lẫn mẹ không có) Giải thuật tối ưu hóa đàn kiến (Ant Colony Optimization - ACO) là một lớp các bài toán mô phỏng hành vi của đàn kiến thực (real ants) trong quá trình đi tìm kiếm nguồn thức ăn nhằm tìm kiếm nghiệm xấp xỉ tối ưu của các bài toán Đàn kiến có khả năng tìm ra đường ngắn nhất từ một nguồn thức ăn
Trang 11tới tổ của chúng nhờ vào các vết mùi (pheromone) rãi trên đường đi mà không cần sử dụng trực giác Trong khi đi tìm mồi các kiến thả vết mùi trên mặt đất, theo xác suất, vết mùi được thả tiếp tục bởi các kiến khác Vết mùi trên đường
đi của các con kiến sẽ bay hơi dần nếu không có kiến nào khác đi lại trên đường đó hoặc sẽ có nồng độ mùi dày đặc thêm nếu có nhiều kiến đi qua con đường đó Theo thời gian các kiến sẽ có xu hướng chọn những đường có nồng
độ mùi dày đặc và loại bỏ những đường có nồng độ mùi ít hơn Đường đi có nồng độ mùi dày đặc trở thành đường đi ngắn nhất từ tổ kiến đến nguồn thức
ăn
Xuất phát từ nhu cầu tìm đường đi ngắn nhất với một giải thuật tốt cho không gian tìm kiếm rộng lớn, áp dụng được cho nhiều bài toán tối ưu tổ hợp
trong thực tế nên tôi chọn đề tài: “Đánh giá hiệu quả của giải thuật di
truyền và giải thuật tối ưu hóa đàn kiến cho bài toán người du lịch” nhằm
tìm hiểu giải thuật di truyền và giải thuật tối ưu hóa đàn kiến, xem xét kết quả
và so sánh tính hiệu quả của hai giải thuật áp dụng vào bài toán người du lịch
2 Mục tiêu nghiên cứu
2.1 Mục tiêu tổng quát
Nghiên cứu giải bài toán Người du lịch bằng giải thuật di truyền và giải thuật tối ưu hóa đàn kiến và cài đặt mô phỏng hai thuật toán trên nhằm đánh giá hiệu quả của hai thuật toán
2.2 Mục tiêu cụ thể
Đề tài tập trung vào 3 mục tiêu chính sau:
- Nghiên cứu áp dụng giải thuật di truyền và giải thuật tối ưu hóa đàn kiến cho bài toán Người du lịch
- Lập trình giải thuật di truyền và giải thuật tối ưu hóa đàn kiến cho bài toán bài toán người du lịch
- Đánh giá hiệu quả của giải thuật di truyền và giải thuật tối ưu hóa đàn kiến cho bài toán người du lịch bằng thực nghiệm
Trang 123 Đối tượng và phạm vi nghiên cứu
3.1 Đối tượng nghiên cứu
(a) Nghiên cứu lý thuyết
- Bài toán Người du lịch
- Lý thuyết giải thuật di truyền
- Lý thuyết giải thuật tối ưu hóa đàn kiến
(b) Nghiên cứu thực nghiệm
- Nghiên cứu ngôn ngữ lập trình Matlab để cài đặt giải thuật di truyền và tối ưu hóa đàn kiến cho bài toán Người du lịch
- Thực nghiệm giải thuật trên bộ dữ liệu số lượng lớn
- So sánh, đánh giá tính hiệu quả của hai giải thuật
3.2 Phạm vi nghiên cứu
Nghiên cứu giải thuật di truyền và tối ưu hóa đàn kiến để xây dựng ứng dụng giải bài toán Người du lịch, qua đó đánh giá hiệu quả giải thuật di truyền với giải thuật tối ưu hóa đàn kiến cho bài toán Người du lịch
4 Nội dung nghiên cứu
- Khảo sát và đánh giá các giải thuật di truyền và tối ưu hóa đàn kiến đã có nhằm xác định ưu điểm và hạn chế của các thuật toán
- Nghiên cứu ngôn ngữ lập trình Matlab để cài đặt mô phỏng các thuật toán trên máy tính
- Lập trình các giải thuật trên máy tính và đánh giá hiệu quả của các thuật toán
5 Kết cấu của luận văn
Chương 1: Tổng quan
Chương này trình bày bài toán người du lịch, lý thuyết đồ thị và các hướng tiếp cận giải bài toán người du lịch gồm các hướng tiếp cận theo phương pháp vét cạn và các hướng tiếp cận heuristic
Trang 13Chương 2: Giải thuật di truyền và tối ưu hóa đàn kiến
Chương này trình bày các giải thuật di truyền và giải thuật tối ưu hóa đàn
kiến để giải bài toán người du lịch
Chương 3: Cài đặt và đánh giá hiệu quả của các giải thuật cho bài toán Người du lịch
Chương này mô tả phương pháp tạo dữ liệu đánh giá các thuật toán, cài đặt các giải thuật, so sánh đánh giá hiệu quả của các thuật toán và đưa ra một số nhận xét
Cuối cùng là kết luận và hướng phát triển của đề tài
Trang 14CHƯƠNG 1 TỔNG QUAN 1.1 Giới thiệu
1.1.1 Phát biểu bài toán
Bài toán người du lịch hay còn được gọi là bài toán TSP là một bài toán khá nổi tiếng trong lĩnh vực tối ưu tổ hợp được nghiên cứu trong lý thuyết khoa học máy tính Bài toán phát biểu như sau: Cho trước một danh sách các thành phố và khoảng cách giữa chúng, tìm chu trình ngắn nhất đi qua tất cả các thành phố đúng một lần Bài toán TSP được phát biểu vào thế kỷ 17 bởi hai nhà toán học vương quốc Anh là Sir William Rowan Hamilton và Thomas Penyngton Kirkman và được ghi trong cuốn giáo trình Lý thuyết đồ thị nổi tiếng của Oxford Bài toán này nhanh chóng trở thành bài toán thách thức toàn thế giới vì độ phức tạp thuật toán tăng theo hàm số mũ và do đó đây là một bài toán NP-khó Người ta bắt đầu thử và công bố các kết quả giải bài toán này trên máy tính từ năm 1954 (49 đỉnh), cho đến năm 2004 bài toán giải được với số đỉnh lên tới 24.978 và dự báo sẽ còn tiếp tục tăng cao nữa
Bài toán TSP nguyên thủy có một vài ứng dụng như lập kế hoạch, logistic, và sản xuất các microchip Thay đổi nó đi chút ít thành một bài toán con trong rất nhiều lĩnh vực như việc phân tích gen trong sinh học Trong những ứng dụng này, khái niệm thành phố có thể thay đổi thành khách hàng, các điểm hàn trên bảng mạch, các mảnh DNA trong gen, và khái niệm khoảng cách có thể biểu diễn bởi thời gian du lịch hay giá thành, hay giống như sự so sánh giữa các mảnh DNA với nhau
1.1.2 Lịch sử của bài toán
Nguồn gốc của bài toán người du lịch xuất phát từ năm 1800 bởi nhà toán học Ireland W R Hamilton và nhà toán học người Anh Thomas Kirkman khi nó được đề cập ở trò chơi Icosian Game của họ là một trò đố vui dựa trên cơ sở tìm chu trình Hamilton.Dạng tổng quát của bài toán TSP được nghiên cứ bởi các nhà toán học suốt những năm 1930 ở đại học Harvard, đáng
Trang 15chú ý là Karl Menger người đã định nghĩa bài toán và quan sát thấy tính không tối ưu của heuristic dựa trên láng giếng gần nhất
Hassler Whitney ở đại học Princeton University là người đầu tiên đặt tên người du lịch cho bài toán không lâu sau đó Trong những năm 1950 và
1960, bài toán trở nên ngày càng phổ biến trong khoa học ở châu Âu và Mỹ Những đóng góp đáng chú ý được kể đến như George Dantzig, Delbert Ray Fulkerson và Selmer M Johnson tại RAND Corporation ở Santa Monica, những người đã trình bày bài toán như bài toán số nguyên tuyến tính và phát triển phương thức cắt cho lời giải của nó Với những phương thức mới này họ
đã giải được một thí dụ của bài toán với 49 thành phố để xây dựng một cách tối ưu và chứng minh rằng không còn đường đi nào ngắn hơn nữa Trong những thập kỷ tiếp theo, bài toán được nghiên cứu bởi rất nhiều nhà nghiên
cứ từ các lĩnh vực toán học, khoa học máy tính, hóa học, vật lý và những khoa học khác
Năm 1972, Richard M Karp chỉ ra rằng bài toán chu trình Hamilton thuộc lớp NP-đầy đủ và qua đó chỉ ra tính NP khó [9,10] của bài toán TSP Điều này giải thích một cách khoa học cho độ phức tạp tính toán của việc tìm lời giải tối ưu cho bài toán
Nhiều thành tựu đã đạt được trong suốt những năm cuối thập kỷ 1970
và 1980, khi Grötschel, Padberg, Rinaldi và những người khác cố gắng giải một cách chính xác một thể hiện của bài toán với 2392 thành phố, sử dụng phương thức nhánh cận
Trong những năm 1990 Applegate, Bixby, Chvátal, và Cook đã phát triển chương trình Concorde mà đã được sử dụng nhiều trong việc giải các bài toán TSP cho đến nay Gerhard Reinelt đã công bố thư viện TSPLib vào năm 1991, đó là một tập các thể hiện của bài toán TSP với nhiều độ khó khác nhau, và đã được sử dụng bởi nhiều nhóm nghiên cứu khác nhau để so sánh kết quả Năm 2005, Cook và những người khác đã tính được độ dài tối
ưu cho chu trình với thể hiện của bài toán TSP lên tới 33,810 thành phố,
Trang 16được lấy ra từ bài toán xây dựng layout cho microchip, cho tới nay vẫn là thể hiện lớn nhất trong các thể hiện ở TSPLIB Nhiều thể hiện khác với hàng triệu thành phố, lời giải tìm được có thể chứng minh nằm sai khác 1% so với lời giải tối ưu
1.1.3 Phân lớp bài toán TSP
a Bài toán TSP đối xứng và bất đối xứng
Trong bài toán TSP đối xứng, khoảng cách giữa các thành phố là như nhau theo hai hướng, vì vậy đồ thị biểu diễn là đồ thị vô hướng Sự đối xứng này làm giảm một nửa số lời giải có thể
Trong bài toán TSP bất đối xứng thì đường đi giữa hai thành phố có thể chỉ một chiều hoặc có độ dài khác nhau giữa mỗi chiều, tạo nên đồ thị có hướng Ví dụ đường một chiều hay phí hàng không giữa các thành phố với phí điểm xuất phát và điểm đến khác nhau là những là những bài toán TSP bất đối xứng
b Khoảng cách là đơn vị độ dài hay không phải đơn vị độ dài
Khoảng cách là đơn vị độ dài: Trong loại bài toán TSP này khoảng
cách giữa các thành phố phải thỏa mãn điều kiện của bất đẳng thức tam giác Điều này có thể phát biểu rằng đường nối trực tiếp từ A đến B không bao giờ dài hơn đường đi từ A tới B mà qua C trung gian, ta có:
kj ik
Khoảng cách không phải là đơn vị độ dài: Khoảng cách không thỏa mãn
bất đắng thức tam giác phát sinh trong nhiều bài toán định tuyến Ví dụ trong một kiểu vận tải, như du lịch bằng máy bay có thể nhanh hơn mặc dù khoảng cách di chuyển là xa hơn
1.2 Biểu diễn không gian trạng thái của bài toán
1.2.1 Biễu diễn đồ thị
a) Định nghĩa đồ thị
Đồ thị là một cấu trúc rời rạc gồm các đỉnh và các cạnh (vô hướng hoặc
có hướng) nối các đỉnh đó Người ta phân loại đồ thị tùy theo đặc tính và số
Trang 17các cạnh nối các cặp đỉnh của đồ thị Nhiều bài toán thuộc những lĩnh vực rất khác nhau có thể giải được bằng mô hình đồ thị Ta có thể dùng đồ thị để giải các bài toán như bài toán tính số các tổ hợp khác nhau của các chuyến bay giữa hai thành phố trong một mạng hàng không, hay để giải bài toán đi tham quan tất cả các đường phố của một thành phố sao cho mỗi đường phố đi qua đúng một lần, hoặc bài toán tìm số các màu cần thiết để tô các vùng khác nhau của một bản đồ [4,5]
- Đồ thị vô hướng: Đồ thị vô hướng G là một cặp không có thứ tự G = (V, E), trong đó V là tập các đỉnh hoặc nút và E là tập các cặp không thứ tự
chứa các đỉnh phân biệt, được gọi là cạnh Hai đỉnh thuộc một cạnh được gọi
là các đỉnh đầu cuối của cạnh đó
- Đồ thị có hướng: Đồ thị có hướng G là một cặp có thứ tự G = (V, A), trong đó V là tập các đỉnh hoặc nút và A là tập các cặp có thứ tự chứa các đỉnh, được gọi là các cạnh có hướng hoặc cung Một cạnh e = (x, y) được coi
là có hướng từ x tới y, x được gọi là điểm đầu/gốc và y được gọi là điểm
cuối/ngọn của cạnh
- Đơn đồ thị: Đơn đồ thị là đồ thị mà không có khuyên và không có cạnh
song song
-Đa đồ thị: Đa đồ thị là đồ thị mà không thỏa đồ thị đơn
- Đa đồ thị có hướng: Đa đồ thị có hướng là một đồ thị có hướng, trong
đó nếu x và y là hai đỉnh thì đồ thị được phép có cả hai cung (x, y) và (y, x)
- Đơn đồ thị có hướng: Đơn đồ thị có hướng là một đồ thị có hướng,
trong đó nếu x và y là hai đỉnh thì đồ thị chỉ được phép có tối đa một trong hai cung (x, y) hoặc (y, x)
b) Bậc của đỉnh
- Định nghĩa: 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 deg(v)=0 [5]
Trang 18Xem xét ví dụ một đồ thị như trong hình 1.1 để xác định số bậc cho mỗi đỉnh
Hình 1.1 Đồ thị minh họa bậc của đỉnh
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
Mệnh đề: Cho đồ thị G = (V, E) Khi đó: 2E vVdeg v
Mỗi cạnh e = (u,v) được tính một lần trong deg(u) và một lần trong deg(v) 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ả: Số đỉnh bậc lẻ của một đồ thị là một số chẵn
c) Tính liên thông của đồ thị
- Định nghĩa: Một đồ thị vô hướng được gọi là liên thông nếu có đường
đi giữa mọi cặp đỉnh phân biệt của đồ thị Một đồ thị không liên thông là hợp của hai hay nhiều đồ thị con liên thông, mỗi cặp các đồ thị con này không có đỉnh chung Các đồ thị con liên thông rời nhau như vậy được gọi là các thành phần liên thông của đồ thị đang xét Như vậy, một đồ thị là liên thông khi và chỉ khi nó chỉ có một thành phần liên thông
Trang 19- Mệnh đề: Mọi đơn đồ thị n đỉnh (n 2) có tổng bậc của hai đỉnh tuỳ ý không nhỏ hơn n đều là đồ thị liên thông Nếu một đồ thị có đúng hai đỉnh bậc lẻ thì hai đỉnh này phải liên thông, tức là có một đường đi nối chúng
d) Biểu diễn đồ thị
Có nhiều cách để biểu diễn đồ thị trên máy tính, tuy nhiên phổ biến nhất là biểu diễn đồ thị bằng ma trận kề (đối với đồ thị vô hướng, đồ thị có hướng), bằng ma trận trọng số (đối với đồ thị có trọng số); bằng ma trận liên thuộc đỉnh, cạnh; bằng danh sách cạnh; bằng danh sách kề Trong giới hạn của luận văn này, chúng tôi sẽ trình bày biểu diễn đồ thị bằng ma trận
kề, ma trận trọng số
Xét đơn đồ thị G = (V, E) ta có:
* Ma trận kề của đồ thị vô hướng và đồ thị có hướng
Ma trận A={ai,j: i, j = 1, 2, , n}nZvới ai,j = 0, nếu i, j E và
ai,j= 1, nếu i, j E, i, j=(1, 2, ., n) gọi là ma trận kề của đồ thị G
Trang 20* Tính chất của ma trận kề của đồ thị vô hướng
- Tính đối xứng: a[i,j]=a[j,i], i,j=1,2, ,n nZ
- Tổng các phần từ trên dòng i (cột j) bằng bậc của đỉnh i (đỉnh j)
- Gọi aijp, i,j=1, 2, , n là phần tử của ma trận Ap =A.A A (p thừa số), khi đó: aijp, i,j=1, 2, , n là số đường đi khác nhau từ đỉnh i đến đỉnh j qua p-1 đỉnh trung gian
* Tính chất của ma trận kề của đồ thị có hướng
- Không có tính đối xứng
- Tổng các phần từ trên dòng i bằng bán bậc ra của đỉnh i và tổng các phần từ trên cột j bằng bán bậc vào của đỉnh j
- Giống tính chất 3 của đồ thị vô hướng
* Ma trận kề của đa đồ thị: a[i, j]=số cạnh (cung) nối hai đỉnh i, j
* Ma trận trọng số
Đồ thị có trọng số là đồ thị mà mỗi cạnh (i, j) có một giá trị c[i, j] gọi là trọng số của cạnh Để biểu diễn đồ thị ta sử dụng ma trận trọng số
C = {c [i, j], i, j=1, 2, , n} với c[i,j] là các số thực
Phương pháp biểu diễn đồ thị bằng ma trận kề (hoặc ma trận trọng số)
là cho phép trả lời câu hỏi: Hai đỉnh u, v có kề nhau trên đồ thị hay không, ta chỉ phải thực hiện một phép so sánh Nhược điểm lớn nhất của phương pháp này là: không phụ thuộc vào số cạnh của đồ thị, ta luôn phải sử dụng n2 đơn vị
bộ nhớ để lưu trữ ma trận kề của nó [5]
1.2.2 Biểu diễn dạng lưới
Cấu trúc đồ thị có thể được mở rộng bằng cách gán trọng số cho mỗi cạnh Có thể sử dụng đồ thị có trọng số để biểu diễn nhiều khái niệm khác nhau Ví dụ, nếu đồ thị biểu diễn một mạng lưới đường giao thông, các trọng
Trang 21số có thể là độ dài của mỗi con đường Một cách khác để mở rộng đồ thị cơ bản là quy định hướng cho các cạnh của đồ thị (như đối với các trang web, A liên kết tới B, nhưng B không nhất thiết cũng liên kết tới A) Loại đồ thị này được gọi là đồ thị có hướng Một đồ thị có hướng với các cạnh có trọng số được gọi là một lưới
Các lưới có nhiều ứng dụng trong khía cạnh thực tiễn của lý thuyết đồ thị, có hai kiểu phân tích lưới: phân tích để tìm các tính chất về cấu trúc của một lưới;phân tích để đo đạc, chẳng hạn mức độ lưu thông xe cộ trong một phần của mạng lưới giao thông
Lý thuyết đồ thị còn được dùng trong nghiên cứu phân tử Trong vật lý vật chất ngưng tụ, cấu trúc ba chiều phức tạp của các hệ nguyên tử có thể được nghiên cứu một cách định lượng bằng cách thu thập thống kê về các tính chất lý thuyết đồ thị có liên quan đến cấu trúc tô pô của các nguyên tử
1.3 Các hướng tiếp cận giải bài toán
1.3.1 Các hướng tiếp cận theo phương pháp vét cạn
Trong các phương pháp giải chính xác cho bài toán người du lịch, đầu tiên phải kể đến phương pháp vét cạn Thuật toán này tìm tất cả các chu trình Hamilton trong đồ thị, sau đó chọn một chu trình nhỏ nhất làm nghiệm Việc tìm chu trình Hamilton được thực hiện theo phương pháp duyệt chiều sâu và kết hợp quay lui
Với phương pháp vét cạn ta xét tất cả các chu trình, mỗi chu trình tính tổng độ dài các cạnh của nó rồi chọn một chu trình có tổng độ dài nhỏ nhất
Tuy nhiên ta cần xét tất cả là (n-1)!/2 chu trình Do mỗi chu trình đều đi qua tất cả các đỉnh (thành phố) nên ta có thể cố định một đỉnh, từ đỉnh này ta có n-
1 cạnh tới n-1 đỉnh khác, nên ta có n-1 cách chọn cạnh đầu tiên của chu trình Sau khi đã chọn được cạnh đầu tiên, ta còn n-2 cách chọn cạnh thứ hai, do đó
ta có (n-1)(n-2) cách chọn hai cạnh Cứ lý luận như vậy ta sẽ thấy có (n-1)!
cách chọn một chu trình Tuy nhiên với mỗi chu trình ta chỉ quan tâm đến
Trang 22tổng độ dài các cạnh chứ không quan tâm đến hướng đi theo chiều dương hay
âm vì vậy có tất cả (n-1)!/2 phương án
1.3.2 Các hướng tiếp cận heuristic
Heuristic là các kỹ thuật dựa trên kinh nghiệm để giải quyết vấn đề, học hỏi hay khám phá nhằm đưa ra một giải pháp mà không được đảm bảo là tối
ưu Với việc nghiên cứu khảo sát không có tính thực tế, các phương pháp heuristic được dùng nhằm tăng nhanh quá trình tìm kiếm với các giải pháp hợp lý thông qua các suy nghĩ rút gọn để giảm bớt việc nhận thức vấn đề khi đưa ra quyết định
Thuật giải Heuristic là một sự mở rộng khái niệm thuật toán Nó thể hiện cách giải bài toán với các đặc tính sau: Thường tìm được lời giải tốt (nhưng không chắc là lời giải tốt nhất) Giải bài toán theo thuật giải Heuristic thường dễ dàng và nhanh chóng đưa ra kết quả hơn so với giải thuật tối ưu, vì vậy chi phí thấp hơn Thuật giải Heuristic thường thể hiện khá tự nhiên, gần gũi với cách suy nghĩ và hành động của con người
Có nhiều phương pháp để xây dựng một thuật giải Heuristic, trong đó người ta thường dựa vào một số nguyên lý cơ sở như sau:
- Nguyên lý vét cạn thông minh: Trong một bài toán tìm kiếm nào đó, khi không gian tìm kiếm lớn, ta thường tìm cách giới hạn lại không gian tìm kiếm hoặc thực hiện một kiểu dò tìm đặc biệt dựa vào đặc thù của bài toán để nhanh chóng tìm ra mục tiêu
- Nguyên lý tham lam (Greedy): Lấy tiêu chuẩn tối ưu (trên phạm vi toàn cục) của bài toán để làm tiêu chuẩn chọn lựa hành động cho phạm vi cục
bộ của từng bước (hay từng giai đoạn) trong quá trình tìm kiếm lời giải
- Nguyên lý thứ tự: Thực hiện hành động dựa trên một cấu trúc thứ tự hợp lý của không gian khảo sát nhằm nhanh chóng đạt được một lời giải tốt
- Hàm Heuristic: Trong việc xây dựng các thuật giải Heuristic, người ta thường dùng các hàm Heuristic Ðó là các hàm đánh giá thô, giá trị của hàm phụ thuộc vào trạng thái hiện tại của bài toán tại mỗi bước giải Nhờ giá trị
Trang 23này, ta có thể chọn được cách hành động tương đối hợp lý trong từng bước của thuật giải
Khi bài toán có kích thước n đỉnh nhỏ thì các phương pháp vét cạn
được áp dụng cho kết quả nhanh chóng và duy nhất Nhưng khi số đỉnh của bài toán tăng lên đáng kể thì độ phức tạp của thuật toán do đó cũng tăng lên Trong trường hợp này, chất lượng của kết quả không phải là vấn đề quan tâm nhất mà hiệu suất tính toán và sự đơn giản về khái niệm được ưu tiên hơn, khi
đó thuật toán heuristic được sử dụng để đưa ra một giải pháp không phải là tối
ưu nhất nhưng chấp nhận được do sai số so với giải pháp tối ưu nhất không nhiều Trong luận văn này ta tìm hiểu 2 thuật toán: thuật toán di truyền và thuật toán tối ưu hóa đàn kiến nhằm tìm hiểu 2 giải thuật, xem xét kết quả và
so sánh tính hiệu quả của hai giải thuật khi áp dụng vào bài toán người du lịch
Trang 24CHƯƠNG 2 GIẢI THUẬT DI TRUYỀN VÀ TỐI ƯU HÓA ĐÀN KIẾN
2.1 Giải thuật di truyền
2.1.1 Giới thiệu
Genetic Algorithms (giải thuật di truyền) là một giải thuật mô phỏng theo quá trình chọn lọc tự nhiên Giải thuật di truyền là kỹ thuật chung giúp giải quyết vấn đề bài toán bằng cách mô phỏng sự tiến hóa của con người hay của sinh vật nói chung (dựa trên thuyết tiến hóa muôn loài của Darwin) trong điều kiện qui định sẵn của môi trường Lấy ý tưởng từ quá trình tiến hoá tự nhiên, xuất phát từ một lớp các lời giải tiềm năng ban đầu, GA tiến hành tìm kiếm trên không gian lời giải bằng cách xây dựng lớp lời giải mới tốt hơn (tối
ưu hơn) lời giải cũ Quá trình xây dựng lớp lời giải mới được tiến hành dựa trên việc chọn lọc, lai ghép, đột biến từ lớp lời giải ban đầu Quần thể lời giải trải qua quá trình tiến hoá: ở mỗi thế hệ lại tái sinh các lời giải tương đối tốt, trong khi các lời giải “xấu” thì chết đi Thuật toán di truyền gồm có ba quy
luật cơ bản là chọn lọc, lai ghép và đột biến
2 Khởi tạo quần thể ban đầu
3 Mã hóa các đối tượng (biến) cần tìm của bài toán bởi một cấu trúc dữ liệu Trong trường hợp mã hóa là số nhị phân, giải thuật được gọi là giải thuật
di truyền nhị phân
4 Thiết kế hàm thích nghi của các cá thể với môi trường Trong các bài toán tối ưu, hàm thích nghi được xác định dựa vào hàm mục tiêu
Trang 25Hình 2.1 Sơ đồ khối của thuật toán di truyền
5 Thiết kế phương pháp chọn lọc cá thể Thường việc chọn các cá thể trong quần thể sẽ dựa vào xác suất được định nghĩa:
cái bánh xe được chia thành n phần ứng với độ thích nghi của các cá thể và có
một mũi tên chỉ vào bánh xe Quay bánh xe và khi bánh xe dừng, mũi tên chỉ
Bắt Đầu
Khởi tạo quần thể
Điều kiện dừng Đột biến Lai ghép Chọn lọc Đánh giá độ thích nghi
Mã hoá các biến
Kết quả
Kết thúc
Sai Đúng
Trang 26vào phần nào của bánh xe thì cá thể ứng với phần đó sẽ được chọn Với thủ tục này, rõ ràng những cá thể có độ thích nghi càng lớn thì xác suất được chọn vào thế hệ tiếp theo càng cao Thủ tục quay bánh xe được thực hiện như sau:
Bước 1: Tính tổng xác suất q i cho mỗi cá thể xi:
𝑞𝑖 = ∑ 𝑝(𝑥𝑖), 𝑖 = 1, 2, … , 𝑛
𝑖
𝑗=1
(2.2)
Bước 2: Sinh ra một số ngẫu nhiên r [0, 1]
Bước 3: Kiểm tra nếu r ≤ q 1 thì chọn x1, ngược lại chọn xi thõa mãn 1<r ≤ qi
qi-6 Trên cơ cở của cấu trúc của cá thể, thiết kế các toán tử lai ghép Một
cá thể có được sinh ra từ 2 cá thể cha và mẹ sẽ thừa hưởng các gen của 2 cá thể cha và mẹ Ví dụ, toán tử lai ghép một điểm là toán tử thường được sử dụng trong biểu diễn nhị phân Giả sử 2 cá thể x và y được biểu diễn bằng các
số nhị phân như sau: x = x1 ,x 2 ,…,x k ,,x k+1 ,…,x n và y = y1 ,y 2 ,….,y k ,,y k+1 ,…,y n Khi đó, ghép cặp x và y tại điểm ghép k sẽ tạo ra 2 cá thể con x’ và y’ như sau: x’ = x 1 ,x 2 ,…,x k ,,y k+1 ,…,y n và y’ = y1 ,y 2 ,….,y k ,,x 1 ,…,x k
7 Thiết kế toán tử đột biến Ví dụ, giả cá thể x được biểu diễn bằng số nhị phân như sau: x = x1 ,x 2 ,…,x k ,,x k+1 ,…,x n Toán tử đột biến x thành x’ tại điểm k bằng cách thay thế xk bởi 1- xk với xác suất đột biến pm Toán tử đột
biến cũng có thể được thực hiện tại nhiều điểm
8 Kiểm tra điều kiện dừng Điều kiện dừng thường là khi số thế hệ tiến hóa đủ lớn hoặc các thế hệ đã tiến hóa đến độ ổn định
9 Kết quả của giải thuật là cá thể tốt nhất được đánh giá dựa trên hàm mục tiêu của thế hệ cuối cùng
2.1.3 Giải thuật di truyền cho bài toán người du lịch
a Biễu diễn bài toán
Bài toán người du lịch được phát biểu như sau: tìm chu trình ngắn chất
cho một người du lịch đi thăm n thành phố với mỗi thành phố đúng một lần
Trang 27và trở về thành phố ban đầu Phương pháp truyền thống để tìm nghiệm của bài toán là tìm tất cả các chu trình và sau đó tìm chu trình ngắn nhất Tuy
nhiên phải tìm một số lượng rất lớn các chu trình, cụ thể là (n – 1)!/2 số chu tình Ví dụ nếu n = 20 thì số chu trình cần tìm là 19!/2 =
60,822,550,204,416,000 chu trình Hiển nhiên phương pháp vét cạn này là không hiệu quả
b Áp dụng giải thuật di truyền
Phần này giới thiệu ứng dụng của giải thuật di truyền cho bài toán người
du lịch [5,6] Ký hiệu c1, c2, …, cn là các thành phố với c1 là thành phố bắt đầu, như vậy nghiệm của bài toán là một hoán vị của n thành phố
1 Mã hóa nghiệm của bài toán: Nghiệm của bài toán là một hoán vị của
n thành phố Giả sử n = 5, các nghiệm có thể là [1 2 3 4 5], [1 3 2 5 4],…
2 Hàm thích nghi: Mục tiêu của bài toán là tìm chu trình ngắn nhất đi qua tất cả các thành phố với mỗi thành phố đúng một lần Ký hiệu d(ci ,cj) là khoảng cách giữa 2 thành phố ci và cj, với d(ci ,c j) = d(cj ,c i), hàm thích nghi
của giải thuật được định nghĩa:
phần tử được giữ lại và cũng chính là số phần tử được chọn để lai ghép (các
cá thể có thứ hạng từ 1 đến Nkeep), khi đó xác suất để chọn cá thể thứ n:
𝑝(𝑐𝑛) = 𝑁𝑘𝑒𝑒𝑝− 𝑛 + 1
Nếu sử dụng toán tử lai ghép như giải thuật di truyền nhị phân thì giải
thuật sinh ra lỗi Ví dụ nếu 2 cá thể x = [3,5,1,2,4], y = [1, 4, 5, 3, 2] và điểm ghép k =2 thì sẽ tạo ra 2 con là [3, 5, 5, 3, 2] và [1, 4, 1, 2, 4] Hiển nhiên 2
Trang 28con tạo ra không phải là 2 chu trình Có nhiều cách định nghĩa toán tử lai ghép, chẳng hạn:
- Chọn một vị trí ngẫu nhiên trong 2 cá thể và 2 cá thể hoán đổi 2 số nguyên ở vị trí được chọn để tạo ra 2 cá thể mới
- Tiếp tục hoán đổi 2 số nguyên trong 2 cá thể tạo ra nếu bị trùng giá trị cho đến khi không có giá trị trùng trong mỗi cá thể
Ví dụ với 2 cá thể cha và mẹ x = [4, 1, 5, 3, 2, 6], y = [3, 4, 6, 2, 1, 5] và điểm ghép bắt đầu k = 4 Khi đó toán tử lai ghép được thực hiện như sau:
|4|4 5 2 1 6
|3|1 6 3 2 5
3 4 5 2 1 6
4 1 6 3 2 5
4 Toán tử đột biến: Toán tử đột biến được thực hiện bằng cách hoán đổi
2 vị trí bất kỳ của một cá thể sau khi thực hiện toán tử lai ghép Toán tử đột biến chỉ được thực hiện với một xác suất nhỏ
1 2
3
4
5 6
7
8
Trang 29Bảng 2.1 Tọa độ các đỉnh và ma trận kề giữa các đỉnh của đồ thị
* Các tham số khởi tạo của thuật toán
- Số thế hệ: 10
- Kích thước quần thể: 10
- Số cá thể được dữ lại ở mỗi thế hệ: 5 (50% cá thể)
- Số cá thể được chọn lai ghép: 6 (tạo ra 6 cá thể mới nhưng chỉ lấy 5 cá thể)
- Xác suất chọn lọc cá thể theo thứ hạng từ 1 ~ 5: 0.33, 0.27, 0.20, 0.13, 0.07
- Số cá thể đột biến: 4
* Khởi tạo quẩn thể ban đầu
Quần thể ban đầu được khởi tạo như bảng 2.2, trong đó các nhiễm sắc thể (NST) được xếp theo thứ tự từ 1 đến 10
Trang 30Bảng 2.2 Quần thể khởi tạo