Tải bản đầy đủ (.pdf) (64 trang)

Nghiên cứu giải thuật di truyền cho bài toán người du lịch

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.32 MB, 64 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC VINH
___________________________________________________________________________

THÁI THANH CHƯƠNG

NGHIÊN CỨU GIẢI THUẬT DI TRUYỀN
CHO BÀI TOÁN NGƯỜI DU LỊCH

LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

Nghệ An, 06-2017


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC VINH
___________________________________________________________________________

THÁI THANH CHƯƠNG

NGHIÊN CỨU GIẢI THUẬT DI TRUYỀN
CHO BÀI TOÁN NGƯỜI DU LỊCH

Chuyên ngành: CÔNG NGHỆ THÔNG TIN
Mã số: 60.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

Nghệ An, 06-2017




1

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:
“Nghiên cứu giải thuật di truyền cho bài tốn người du lịch” là hồn
tồ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 hồn tồn chịu trách nhiệm
trước pháp luật.
TÁC GIẢ LUẬN VĂN

Thái Thanh Chương


2

LỜ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 hồ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 khoa Công
nghệ Thông tin - 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.
Cuối cùng tơi xin gửi lời cám ơn đến Ban giám hiệu, phòng đào tạo
Trường Trung cấp Việt - Anh, gia đình, bạn bè, những người đã ln bên tơi,
động viên và khuyến khích tơi trong q trình thực hiện đề tài nghiên cứu của
mình.
Nghệ An, ngày 18 tháng 04 năm 2017

TÁC GIẢ LUẬN VĂN

THÁI THANH CHƯƠNG

.


3

MỤC LỤC
Trang
TRANG PHỤ BÌA
LỜI CAM ĐOAN
LỜI CẢM ƠN
MỤC LỤC
DANH MỤC CÁC TỪ VIẾT TẮT
DANH MỤC CÁC HÌNH VÀ BẢNG
MỞ ĐẦU ...................................................................................................... 1
CHƯƠNG 1: TỔNG QUAN ........................................................................ 5
1.1. Bài toán người du lịch ................................................................... 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 ............................................................ 6
1.1.3. Phân loại bài toán TSP ....................................................... 7
1.2. Biểu diễn bài toán theo đồ thị ........................................................ 8
1.2.1. Các khái niệm cơ bản của đồ thị ........................................ 8
1.2.2. Biểu diễn đồ thị ................................................................ 10
1.2.3. Chu trình Euler và Hamilton ............................................ 12
1.3. Tình hình nghiên cứu bài toán TSP ............................................. 14
1.3.1. Các hướng tiếp cận giải bài tốn TSP .............................. 15
1.3.2. Tình hình nghiên cứu trong nước và ngoài nước ............. 21

CHƯƠNG 2: GIẢI THUẬT DI TRUYỀN ................................................ 23
2.1. Giới thiệu ..................................................................................... 23
2.2. Giải thuật di truyền nhị phân ....................................................... 23
2.2.1. Giải thuật .................................................................................. 23


4

2.2.2. Ví dụ tìm giá trị lớn nhất của hàm một biến …………………25
2.3. Giải thuật di truyền với biến liên tục …………………………. 29
CHƯƠNG 3: ỨNG DỤNG THUẬT TOÁN DI TRUYỀN CHO BÀI
TOÁN NGƯỜI DU LỊCH .......................................................................... 34
3.4. Một số kết quả thử nghiệm .......................................................... 43
3.4.1. Phương pháp tạo dữ liệu thử nghiệm ....................................... 43
3.4.2. Một số kết quả thử nghiệm ....................................................... 44
3.5. So sánh hiệu quả của giải thuật di truyền và tối ưu hóa đàn kiến 47
3.5.1. Thuật tốn tối ưu hóa đàn kiến ......................................... 47
3.5.2. So sánh hiệu quả các giải thuật ........................................ 50
KẾT LUẬN ................................................................................................ 54
TÀI LIỆU THAM KHẢO .......................................................................... 55


5

DANH MỤC CÁC TỪ VIẾT TẮT
1.

ACO

Ant colony optimization


2.

ACS

Ant Colony System

3.

AS

Ant System

4.

DNA

Deoxyribo Nucleic Acid

5.

GA

Genetic Algorithm

6.

NST

Nhiễm sắc thể


7.

TSP

Travelling Salesman Problem


1

DANH MỤC CÁC HÌNH
Trang
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ề ........................................................ 11
Hình 1.3. Đồ thị minh họa đồ thị Euler ...................................................... 12
Hình 1.4. Đồ thị minh họa đồ thị Hamilton ................................................ 13
Hình 1.5. Thuật tốn tham lam với số đỉnh là 5 ......................................... 17
Hình 1.6. Thuật tốn tham lam cho trường hợp xấu nhất........................... 17
Hình 1.7. Hình minh họa thuật tốn 2-opt .................................................. 19
Hình 18. Hình mình họa thuật tốn 3-opt. .................................................. 19
Hình 2.1. Sơ đồ khối của thuật tốn di truyền nhị phân ............................. 24
Hình 2.2. Đồ thị của hàm số f(x) = -x2/10 + 3x .......................................... 26
Hình 2.3. Đồ thị của hàm số ....................................................................... 30
Hình 2.4 Mơ tả thuật tốn thực hiện bằng Matlab ...................................... 32
Hình 2.5. Đồ thị và các giá trị thống kê. ..................................................... 33
Hình 3.2. Kết quả chạy của thuật tốn ....................................................... 43
Hình 3.3. Đồ thị và chu trình tìm được của đồ thị K10 .............................. 44
Hình 3.4. Giá trị bé nhất và trung bình của các thế hệ của đồ thị K10 ...... 44
Hình 3.5. Đồ thị và chu trình tìm được của đồ thị K15 .............................. 45
Hình 3.6. Giá trị bé nhất và trung bình của các thế hệ của đồ thị K15 ..... 45

Hình 3.7. Đồ thị và chu trình tìm được của đồ thị K30 .............................. 46
Hình 3.8. Giá trị bé nhất và trung bình của các thế hệ của đồ thị K30 ...... 46


2

DANH MỤC CÁC BẢNG
Bảng 2.1. Khởi tạo quần thể ban đầu.......................................................... 27
Bảng 2.2. Kết quả của thế hệ 2 ................................................................... 28
Bảng 2.3. Khởi tạo quần thể ban đầu và giá trị hàm thích nghi ................. 31
Bảng 2.4. 50% cá thể được giữ lại .............................................................. 31
Bảng 3.1. Tọa độ các đỉnh và ma trận kề giữa các đỉnh của đồ thị ............ 36
Bảng 3.2. Quần thể khởi tạo ....................................................................... 37
Bảng 3.3. Sắp xếp các nhiễm sắc thể theo chiều dài giảm dần ở thế hệ 1 . 37
Bảng 3.4. Lai ghép các nhiễm sắc thể thế hệ 1 ........................................... 38
Bảng 3.5. Thay thế nhiễm sắc thể trong quần thể ở thế hệ 1 ...................... 38
Bảng 3.6. Đột biến các nhiễm sắc thể của thế hệ 1 .................................... 39
Bảng 3.7. Quần thể đạt được của thế hệ 2 .................................................. 39
Bảng 3.8. Quần thể đạt được của thế hệ 2 sắp xếp theo thứ hạn chiều dài 40
Bảng 3.9. Lai ghép các nhiễm sắc thể thế hệ 2 ........................................... 40
Bảng 3.10. Thay thế các cá thể sinh ra ở thế hệ 2 ...................................... 41
Bảng 3.11. Các cá thể đột biến ở thế hệ 2 .................................................. 41
Bảng 3.12. Quần thể đạt được ở thế hệ 3 ................................................... 42
Bảng 3.13. Xếp hạng các cá thể theo chiều dài ở thế hệ 3 ......................... 42
Bảng 3.14. Kết quả so sánh của giải thuật di truyền và ACS ..................... 52


1

MỞ ĐẦU

1. Sự cần thiết của vấn đề nghiên cứu
Trong ngành khoa học máy tính, tìm kiếm lời giải tối ưu cho các bài toán
là vấn đề được các nhà khoa học máy tính đặc biệt rất quan tâm. Mục đích
chính của các thuật tốn tìm kiếm lời giải là tìm ra lời giải tối ưu nhất cho bài
tốn trong thời gian nhỏ nhất. Các thuật tốn như tìm kiếm khơng có thơng tin
/ vét cạn (tìm kiếm trên danh sách, trên cây hoặc đồ thị) sử dụng phương pháp
đơn giản nhất và trực quan nhất hoặc các thuật toán tìm kiếm có thơng tin sử
dụng heurictics để áp dụng các tri thức về cấu trúc của khơng gian tìm kiếm
nhằm giảm thời gian cần thiết cho việc tìm kiếm được sử dụng nhiều nhưng
chỉ với khơng gian tìm kiếm nhỏ và khơng hiệu quả khi tìm kiếm trong khơng
gian tìm kiếm lớn. Tuy nhiên, trong thực tiễn có rất nhiều bài tốn tối ưu với
khơng gian tìm kiếm rất lớn cần phải giải quyết. Vì vậy, việc địi hỏi thuật
giải chất lượng cao và sử dụng kỹ thuật trí tuệ nhân tạo đặc biệt rất cần thiết
khi giải quyết các bài tốn có khơng gian tìm kiếm lớn. Thuật giải di truyền
(genetic algorithm) là một trong những kỹ thuật tìm kiếm lời giải tối ưu đã
đáp ứng được yêu cầu của nhiều bài toán và ứng dụng.
Thuật giải di truyền đã được phát minh ra để bắt chước quá trình phát triển
tự nhiên trong điều kiện quy định sẵn của mơi trường. Các đặc điểm của q
trình này đã thu hút sự chú ý của John Holand (ở đại học Michigan) ngay từ
những năm 1970. Holand tin rằng sự gắn kết thích hợp trong thuật giải máy
tính có thể tạo ra một kỹ thuật giúp giải quyết các vấn đề khó khăn giống như
trong tự nhiên đã diễn ra thơng qua q trình tiến hóa.
Bài tố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 tốn có phát biểu rất đơn giản nhưng là
bài tốn khó (NP-hard problem) trong trường hợp tổng qt vì độ phức tạp
tính tốn tăng theo hàm mũ. Có rất nhiều cách tiếp cận giải bài tốn này ngay
từ khi nó mới ra đời như sử dụng quy hoạch tuyến tính, thuật tốn vét cạn, kỹ
thuật nhánh và cận, nhưng mới chỉ dừng lại ở các bộ dữ liệu nhỏ. Gần đây có



2

nhiều thuật toán ra đời theo hướng tiếp cận về tiến hóa như thuật tốn di
truyền (Genetic Algorithm) hay thuật tốn tối ưu hóa đàn kiến và đã được áp
dụng cho bài tốn TSP.
Từ nhận tức như trên, tơi chọn bài toán “Nghiên cứu giải thuật di
truyền cho bài toán Người du lịch” làm đề tài của luận văn thạc sĩ.
2. Mục tiêu và nhiệm vụ nghiên cứu
2.1. Mục tiêu
Nghiên cứu, áp dụng và đánh giá giải thuật di truyền cho bài toán Người
du lịch.
2.2. Mục tiêu cụ thể
Đề tài tập trung vào các mục tiêu cụ thể sau:
(i) Nghiên cứu tổng quan về bài toán TSP: các thuật toán của lý thuyết đồ
thị giải bài toán TSP.
(ii) Nghiên cứu giải thuật di truyền.
(iii) Áp dụng giải thuật di truyền cho bài tốn tìm đường đi của TSP.
(iv) Nghiên cứu ngôn ngữ Matlab, cài đặt và đánh giá hiệu quả của thuật
toán di truyền so với thuật toán tối ưu hóa đàn kiến.
3. Đố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
- Nghiên cứu các thuật toán của lý thuyết đồ thị giải bài tốn TSP đã
cơng bố ở trong và ngồi nước.
- Nghiên cứu giải thuật di truyền.
- Nghiên cứu áp dụng giải thuật di truyền cho bài toán TSP.
- Nghiên cứu tài liệu về ngơn ngữ lập trình Matlab để cài đặt các thuật
toán thử nghiệm.



3

(b) Nghiên cứu thực nghiệm
- Nghiên cứu phương pháp sinh bộ dữ liệu thử nghiệm ngẫu nhiên.
- Cài đặt và đánh giá hiệu của thuật toán di truyền cho bài tốn TSP.
3.2 Phạm vi nghiên cứu
Hiện nay có nhiều phương pháp giải bài toán TSP như sử dụng quy
hoạch tuyến tính, thuật tốn vét cạn, kỹ thuật nhánh và cận, thuật tốn tối ưu
hóa đàn kiến và các thuật tốn heuristic. Trong đề tài này tôi chỉ hạn chế
nghiên cứu hướng tiếp cận giải thuật di truyền cho bài toán TSP và đánh giá
hiệu quả của thuật toán di truyền so với giải thuật tối ưu hóa đàn kiến.
4. Nội dung nghiên cứu
- Nghiên cứu tổng quan các nghiên cứu giải bài toán bài toán TSP và
các hướng tiếp cận giải quyết bài toán này.
- Nghiên cứu thuật toán di truyền và các biến thể của thuật toán di
truyền.
- Nghiên cứu áp dụng thuật toán di truyền cho bài toán TSP.
- Nghiên cứu ngơn ngữ lập trình Matlab để cài đặt thuật tốn.
- Lập trình và đánh giá hiệu quả của thuật toán di truyền cho bài toán
TSP so với thuật tốn tối ưu hóa đàn kiến.
- Viết báo cáo luận văn.
5. Cấu trúc của luận văn
Sau phần mở đầu, luận văn được cấu trúc gồm 3 chương sau:
Chương 1: Tổng quan
Chương này trình bày bài tốn người du lịch, lý thuyết đồ thị và các
phương pháp giải bài toán người du lịch gồm thuật toán vét cạn, thuật toán
láng giềng gần nhất, thuật tốn tìm kiếm cục bộ, thuật tốn nhánh cận và tối
ưu hóa đàn kiến.
Chương 2: Thuật toán di truyền



4

Chương này trình bày các thuật tốn di truyền để giải bài tốn người du
lịch: Khởi tạo, Mã hóa, Chọn lọc, Sinh sản, Đột biến, Giải mã.
Chương 3: Ứng dụng thuật toán di truyền cho bài toán người du
lịch
Chương này mơ tả ứng dụng của thuật tốn GA cho bài toán người du
lịch: phương pháp tạo dữ liệu thử nghiệm, so sánh hiệu quả của các thuật toán
GA, đá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.


5

CHƯƠNG 1
TỔNG QUAN

1.1. Bài toán người du lịch
1.1.1. Phát biểu bài tốn
Bài tốn người du lịch hay cịn được gọi là bài toán TSP [6, 7] 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 có nội dung khái quát 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 tốn này nhanh chóng trở
thành bài tốn thách thức tồn thế giới vì độ phức tạp thuật toán tăng theo
hàm số mũ (trong chuyên ngành thuật tốn người ta cịn gọi chúng là những

bài tốn NP-khó). Người ta bắt đầu thử và công bố các kết quả giải bài tố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 tốn TSP ngun 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.


6

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
chú ý 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 tố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 tốn như bài tốn số ngun 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 tố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 tốn chu trình Hamilton
thuộc lớp NP-đầy đủ và qua đó chỉ ra tính NP khó của bài tốn TSP. Điều này
giải thích một cách khoa học cho độ phức tạp tính tố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


7

một cách chính xác một thể hiện của bài tố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ố,
đượ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 loại 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 tố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ó:


8

C ij  C ik  C kj

(1.1)

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 tố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 bài toán theo đồ thị
1.2.1. Các khái niệm cơ bản của đồ 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ố
cá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 tốn như bài tố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 tố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.


9

- Đơn đồ thị: Đơn đồ thị là đồ thị mà khơng có khun 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].
Xem xét ví dụ một đồ thị như trong hình 1.1 để xác định số bậc cho
mỗi đỉnh.
Ký hiệu:
: Cung nối 2 đỉnh

v1

v2

: Đỉnh

v3

v4

v5

v6

v7

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.


10


Mệnh đề: Cho đồ thị G = (V, E). Khi đó: 2 E  vV deg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 [5].
- 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.
1.2.2. 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ó:
a. 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} n  Z  vớ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 .
Ví dụ: Cho 2 đồ thị G và G1 như hình 1.2:


11


G

G1
Hình 1.2. Đồ thị minh họa ma trận kề

Ma trận kề của G:

Ma trận kề của G1:

1 2 3 4 5 6 7

1 2 3 4

1 0 1 0 1 0 1 0

1 0 1 0 0

2 1 0 1 0 0 1 0

2 0 0 1 1

3 0 1 0 1 1 0 1

3 1 0 0 0

4 1 0 1 0 1 1 0

4 1 0 0 0

5 0 0 1 1 0 1 0

6 1 1 0 1 1 0 1
7 0 0 1 0 0 1 0
b. 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 n  Z 
- 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.
c. 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.


12

d. Ma trận kề của đa đồ thị: a[i, j]=số cạnh (cung) nối hai đỉnh i, j
e. 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 n 2 đơn vị
bộ nhớ để lưu trữ ma trận kề của nó [5].
1.2.3. Chu trình Euler và Hamilton
a. Các tính chất của chu trình Euler:
- Chu trình đơn chứa tất cả các cạnh của đồ thị gọi là chu trình Euler.

- Đường đi đơn chứa tất cả các cạnh của đồ thị gọi là đường đi Euler.
- Đồ thị được gọi là đồ thị Euler nếu nó chứa một chu trình Euler.
- Đồ thị được gọi là nửa Euler nếu nó chứa đường đi Euler.
Xét ví dụ mơ tả trong hình 1.3, đồ thị G1 là đồ thị Euler và đồ thị G2 là
đồ thị nữa Euler.

G1
G2
Hình 1.3. Đồ thị minh họa đồ thị Euler
Định lý: Một đa đồ thị vô hướng liên thông là đồ thị Euler khi và chỉ
khi mỗi đỉnh của nó đều có bậc chẵn.


13

Hệ quả: Một đa đồ thị vô hướng liên thông có đường đi Euler (và
khơng có chu trình Euler) khi và chỉ khi nếu có đúng hai đỉnh bậc lẻ.
Định lý: Một đa đồ thị có hướng liên thơng yếu là đồ thị Euler khi và
chỉ khi mọi đỉnh đều có bậc vào bằng bậc ra.
Định lý: Một đa đồ thị có hướng liên thơng yếu là đồ thị nửa Euler khi
và chỉ khi tồn tại đúng hai đỉnh x và y sao cho:
deg+(x) = deg(x)+1; deg (x) = deg+(x) + 1; deg+() = deg(),
trong đó   V, v  x, v  y.
b. Các tính chất của đồ thị Hamilton
- Chu trình đơn chứa tất cả các đỉnh của đồ thị gọi là chu trình
Hamilton.
- Đường đi đơn chứa tất cả các đỉnh của đồ thị gọi là đường đi
Hamilton.
- Đồ thị được gọi là đồ thị Hamilton nếu nó chứa một chu trình
Hamilton.

Xét ví dụ chỉ ra ở hình 1.4, đồ thị G1 có chu trình Hamilton nên nó là
đồ thị Hamilton. Đồ thị G2 có đường đi Hamilton. Đồ thị G3 khơng có chu
trình Hamilton lẫn đường đi Hamilton.

G1

G2

G3

Hình 1.4. Đồ thị minh họa đồ thị Hamilton


14

Bổ đề: Nếu G là một đồ thị Hamilton, khi đó, với mỗi tập con khác
rỗng S  VG, ta có: c(G-S)  |S|.
Định lý ORE: Cho G là một đồ thị có cấp G  3, và giả sử u, v  G,
trong đó u, v là hai đỉnh không liền kề trong G và thỏa mãn:
dG (U )  dG (v)  vG ,

khi đó G là đồ thị Hamilton.
Hệ quả: Giả sử G là một đơn đồ thị liên thơng có cấp vG  3. Khi đó G
là đồ thị Hamilton nếu bậc của mỗi đỉnh ít nhất bằng

vG
.
2

Định lý: Mọi đồ thị có hướng đầy đủ là đồ thị nửa Hamilton.

Định lý Dirac: Cho G là đơn đồ thị n đỉnh (n  3) . Nếu bậc deg(v) 

n
2

với mọi đỉnh v của G, thì G có chu trình Hamilton.
Hệ quả: Nếu G là đơn đồ thị có n đỉnh và mọi đỉnh của G đều có bậc
deg(v) 

n 1
thì G có đường đi Hamilton.
2

Định lý 2.4. Cho G là đơn đồ thị n đỉnh (n  3) . Giả sử u và v là hai đỉnh
không kề nhau của G sao cho deg(u)  deg(v)  n .Khi đó G có chu trình
Hamilton khi và chỉ khi đồ thị G+(u,v) (đồ thị G thêm cạnh (u,v)) có chu trình
Hamilton.
Định lý 2.5. Cho G là đồ thị đơn giản n đỉnh. Giả sử G’ và G” là hai đồ
thị thu được từ G bằng quy nạp nối tất cả cặp đỉnh khơng kề nhau có tổng các
bậc ít nhất bằng n. Khi đó ta có G’  G”.


15

1.3. Tình hình nghiên cứu bài tốn TSP
1.3.1. Các hướng tiếp cận giải bài tốn TSP
a. Thuật giải chính xác
Trong các thuật giải chính xác cho bài tốn người du lịch, đầu tiên phải
kể đến thuật toán vét cạn. Thuật tố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. Thực vậy, 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 tổ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.
b. Thuật giải gần đúng heuristic
Khi bài tốn có kích thước n đỉnh nhỏ thì các thuật giải chính xác được
áp dụng cho kết quả nhanh chóng và duy nhất. Nhưng khi số đỉnh của bài
tốn tăng lên đáng kể thì độ phức tạp của thuật tốn do đó cũng tăng lên.
Trong trường hợp này, chất lượng của giải pháp không phải là vấn đề quan
tâm nhất mà hiệu suất tính tốn và sự đơn giản về khái niệm được ưu tiên
hơn, khi đó thuật tố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


16

nhất không nhiều. Trong luận văn này giới thiệu 4 thuật toán nổi tiếng nhất là:
thuật toán láng giềng gần nhất, thuật tốn tìm kiếm cục bộ, thuật tốn nhánh
cận và thuật tốn di truyền. Trong đó thuật tốn cục bộ thường được sử dụng
kết hợp với thuật toán đàn kiến ACO để tăng hiệu suất tìm kiếm giải pháp.
- Thuật toán láng giềng gần nhất:
Thuật giải vét cạn ở trên cho ta một đáp án tối ưu, tuy nhiên độ phức

tạp của nó là quá cao (n-1)! (O(n!)). Do đó trong thực tế, người ta chấp nhận
các thuật giải cho kết quả tốt (nhưng không phải lúc nào cũng tốt) bởi sự
đơn giản, nhanh chóng và cài đặt dễ dàng. Một trong các thuật giải đó là
thuật tốn láng giềng gần nhất hay cịn được gọi là thuật tốn tham lam [2].
Thuật toán này bắt đầu từ một thành phố tùy ý, duyệt lần lượt tất cả các cạnh
kề với nó rồi lựa chọn đỉnh có cạnh nối với đỉnh hiện tại đang xét có chi phí
là thấp nhất để đưa vào hành trình. Bắt đầu từ đỉnh mới đưa vào hành trình
này, lại xét tiếp tục các đỉnh kề với nó như vậy cho đến khi khơng cịn đỉnh
nào để xét nữa thì thuật tốn dừng. Các đỉnh đưa vào hành trình cần thỏa
mãn 2 u cầu:
- Khơng tạo thành một chu trình thiếu (khơng đi qua đủ n đỉnh)
- Khơng tạo thành một đỉnh có cấp  3 (tức là khơng được có nhiều hơn
hai cạnh xuất phát từ một đỉnh, do yêu cầu của bài toán là mỗi thành
phố chỉ được đến một lần: một lần đến và một lần đi)
Độ phức tạp của thuật toán là O(n2). Tuy nhiên khi áp dụng thuật toán
này sẽ có lúc phải đưa vào hành trình đang xét một cạnh có chi phí rất cao do
các cạnh có chi phí thấp nối với đỉnh hiện tại đang xét đã được thăm. Với
trường hợp này, giải pháp tìm được khơng tối ưu.


×