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

Nghiên cứu thuật toán tối ưu hóa đàn kiế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 (868.34 KB, 55 trang )

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

NGUYỄN DOÃN CHUNG

NGHIÊN CỨU THUẬT TỐN TỐI ƯU HĨA
ĐÀN KIẾN CHO BÀI TỐN NGƯỜI DU LỊCH

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

Nghệ An, 2017


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

NGUYỄN DOÃN CHUNG

NGHIÊN CỨU THUẬT TỐN TỐI ƯU HĨA
ĐÀN KIẾN CHO BÀI TỐN NGƯỜI DU LỊCH

Chun 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, 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
thuật tốn tối ưu hóa đàn kiế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ội dung tham khảo từ sách, tài liệu khác đều được trích
dẫn đầy đủ. 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 Doãn Chung


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 đỡ tôi 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 đốc, tổ Tin học - Trung
tâm Thực hành Thí nghiệm - Trường Đại học Vinh, 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 q trình thực
hiện đề tài nghiên cứu của mình.
Nghệ An, ngày 10 tháng 02 năm 2017

TÁC GIẢ LUẬN VĂN

Nguyễn Doãn Chung

.


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
DANH MỤC CÁC 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 ....................................... 14

1.3.2. Tình hình nghiên cứu trong nước và ngồi nước ...................... 21
CHƯƠNG 2. THUẬT TỐN TỐI ƯU HÓA ĐÀN KIẾN ............................ 23
2.1. Giới thiệu ............................................................................................ 23
2.2. Thuật tốn AS ..................................................................................... 24
2.2.1. Mơ tả thuật tốn ......................................................................... 24
2.2.2. Ví dụ các bước của thuật tốn ................................................... 26
2.3. Thuật toán ACS .................................................................................. 30
2.4. Thuật toán Ant-Q ................................................................................ 32


4

CHƯƠNG 3. ỨNG DỤNG THUẬT TỐN TỐI ƯU HĨA ĐÀN KIẾN CHO
BÀI TOÁN NGƯỜI DU LỊCH ...................................................................... 34
3.1. Phương pháp tạo dữ liệu thử nghiệm ................................................. 34
3.2. So sánh hiệu quả của các thuật toán AS, ACS và Ant-Q ................... 35
3.2.1. Minh họa các bước cài đặt thuật toán ........................................ 35
3.2.2. So sánh hiệu quả của các thuật toán .......................................... 38
3.3. Một số nhận xét và đề xuất ................................................................. 41
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ...................................................... 43
TÀI LIỆU THAM KHẢO ............................................................................... 45


5

DANH 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

4

AS

Ant System

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


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.............................................. 16
Hình 1.6. Thuật tốn tham lam cho trường hợp xấu nhất ............................... 17
Hình 1.7. Minh họa thuật tốn 2-opt ............................................................... 18
Hình 1.8. Minh họa thuật tốn 3-opt. .............................................................. 19
Hình 2.1. Cách đàn kiến tìm đường ngắn nhất dựa trên vết mùi .................... 24
Hình 2.2. Đồ thị K8.......................................................................................... 27
Hình 2.3. Chu trình tìm được của các kiến sau vịng lặp 1 ............................. 29
Hình 3.1. Đồ thị đầy đủ với 10 đỉnh ............................................................... 34
Hình 3.2. Chiều dài tìm được của vịng lặp 1 ................................................. 36
Hình 3.3. Chiều dài tìm được của vịng lặp 2 ................................................. 36
Hình 3.4. Chiều dài tìm được của vịng lặp 3 ................................................. 37
Hình 3.5. Chiều dài tìm được của vịng lặp 4 ................................................. 37
Hình 3.6. Chiều dài tìm được của vịng lặp 5 ................................................. 38
Hình 3.7. Đồ thị K50 ........................................................................................ 39
Hình 3.8. Đường đi tìm được của thuật toán AS cho đồ thị K50 .................... 39
Hình 3.9. Đường đi tìm được của thuật tốn ACS cho đồ thị K50 .................. 40
Hình 3.10. Đường đi tìm được của thuật toán Ant-Q cho đồ thị K50.............. 40


2

DANH MỤC CÁC BẢNG
Trang
Bảng 2.1. Ma trận kề của đồ thị K8 ................................................................. 26

Bảng 2.2. Khởi tạo tham số  .......................................................................... 27
Bảng 2.3. Giá trị khởi tạo tham số  .............................................................. 28
Bảng 2.4. Giá trị của tham số  sau vòng lặp 1 ............................................... 29
Bảng 3.1. Tọa độ các đỉnh và ma trận kề biểu diễn khoảng cách giữa các đỉnh
của đồ thị ........................................................................................ 35


1

MỞ ĐẦU
1. Sự cần thiết của vấn đề nghiên cứu
Hiện nay có rất nhiều cơng trình nghiên cứu đề cập đến vấn đề tối ưu tổ
hợp. Nhiều phương pháp mới mẻ đã được đưa ra và đạt hiệu quả cao. Một
trong những cách tiếp cận có hiệu quả đối với bài tốn tối ưu tổ hợp tĩnh đó là
phương pháp tối ưu hóa đàn kiến (Ant Colony Optimization - ACO). Được
giới thiệu lần đầu tiên vào năm 1991 bởi A. Colorni và M. Dorigo [9], giải
thuật kiến đã nhận được sự chú ý rộng lớn nhờ vào khả năng tối ưu của nó
trong nhiều lĩnh vực khác nhau. Khái niệm ACO lấy cảm hứng từ việc quan
sát hành vi của đàn kiến trong quá trình chúng tìm kiếm nguồn thức ăn.
Người ta đã khám phá ra rằng, đàn kiến luôn tìm được đường đi ngắn nhất từ
tổ của chúng đến nguồn thức ăn. Phương tiện truyền đạt tín hiệu được kiến sử
dụng để thông báo cho những con khác trong việc tìm đường đi hiệu quả nhất
chính là mùi của chúng (pheromone). Kiến để lại vệt mùi trên mặt đất khi
chúng di chuyển với mục đích đánh dấu đường đi cho các con theo sau.
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 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 toá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ó

nhiều thuật tố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 toán TSP.
Xuất phát từ nhu cầu tìm đường đi ngắn nhất cho bài tốn TSP lớn và
khả năng áp dụng được cho nhiều bài toán tối ưu tổ hợp trong thực tế nên


2

chúng tơi chọn đề tài: “Nghiên cứu thuật tốn tối ưu hóa đàn kiến cho bài
tốn người du lịch” làm đề tài luận văn.
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á thuật tốn tối ưu hóa đàn kiến cho bài
tốn bài tố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:
- 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.
- Nghiên cứu giải thuật tối ưu hóa đàn kiến.
- Áp dụng giải thuật tối ưu hóa đàn kiến cho bài tốn TSP.
- Nghiên cứu ngơn ngữ lập trình Matlab, cài đặt và đánh giá hiệu quả
của các thuật tốn tối ưu hóa đàn kiến (AS, ACS, Ant-Q) cho bài toán TSP.
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 thuật tốn tối ưu hóa đàn kiến.
- Nghiên cứu áp dụng thuật toán tối ưu hóa đàn kiến cho bài tố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.
(b) Nghiên cứu thực nghiệm
- Cài đặt và đánh giá hiệu quả của lớp các thuật toán tối ưu hóa đàn
kiến cho bài tốn TSP.


3

3.2 Phạm vi nghiên cứu
Hiện nay có nhiều phương pháp giải bài tốn TSP như sử dụng quy
hoạch tuyến tính, thuật toán vét cạn, kỹ thuật nhánh và cận, thuật toán di
truyền và các thuật toán heuristic. Trong đề tài này chúng tôi chỉ hạn chế
nghiên cứu giải thuật tối ưu hóa đàn kiến cho bài tốn TSP và đánh giá hiệu
quả của thuật tốn tối ưu hóa đàn kiến so với kỹ thuật vét cạ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 TSP;
- Nghiên cứu thuật toán ACO và các biến thể của thuật toán ACO;
- Nghiên cứu áp dụng thuật toán ACO và các biến thể của nó cho bài
tố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ác thuật toán vét cạn, thuật toán ACO
và các biến thể của thuật toán ACO cho bài toán TSP;
- 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 tốn
láng giềng gần nhất, thuật tốn tìm kiếm cục bộ, thuật toán nhánh cận và thuật

toán di truyền.
Chương 2: Thuật tốn tối ưu hóa đàn kiến
Chương này trình bày các thuật tốn tối ưu hóa đàn kiến để giải bài
tốn người du lịch: thuật toán Ant System (AS), Ant Colony System (ACS)
và Ant-Q (Ant-Q-learning).


4

Chương 3: Ứng dụng thuật tốn tối ưu hóa đàn kiến cho bài tốn
người du lịch
Chương này mơ tả ứng dụng của thuật toán ACO 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
AS, ACS và Ant-Q, đá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 [12]) 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 như sau: Một người bán hàng xuất phát
từ thành phố của anh ta, anh ta muốn tìm một đường đi ngắn nhất đi qua
tất cả các thành phố của khách hàng mỗi thành phố đúng một lần và sau đó
trở về thành phố ban đầu. 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 [8]. 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ố 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 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ứu 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ó [12] 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 với sai số khơng q 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 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 đồ [2].
- Đồ 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ó khun và khơng có
cạnh song song.


9

- Đ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 khun 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 [2].
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 [2].
- 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

1 2 3 4 5 6

1 0 1 1 0 0 0

1 0 1 1 0 0 0

2 1 0 1 0 1 0

2 0 0 0 0 0 0

3 1 1 0 1 0 0

3 0 1 0 1 0 0

4 0 0 1 0 1 1

4 0 0 0 0 0 0


5 0 1 0 1 0 1

5 0 0 0 1 0 1

6 0 0 0 1 1 0

6 0 0 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 n2 đơn vị
bộ nhớ để lưu trữ ma trận kề của nó [4].
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


13

Đị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.
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: Đơn đồ thị liên thông n đỉnh G là đồ thị Hamilton nếu
bậc của mỗi đỉnh ít nhất bằng

n
.
2

Hệ quả: Nếu G là đơn đồ thị có n đỉnh và mọi đỉnh của G đều có bậc
khơng nhỏ hơn

n 1
thì G là đồ thị nửa Hamilton.
2

Định lý: Nếu G là đồ thị phân đơi với hai tập đỉnh là V1, V2 có số đỉnh
cùng bằng n, n  2 và bậc của mỗi đỉnh lớn hơn

n
thì G là một đồ thị
2

Hamilton.
Định lý: Đồ thị đầy đủ Kn với n lẻ và n  3 có đúng


n 1
chu trình
2

Hamilton phân biệt.
1.3. Tình hình nghiên cứu bài toá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 toán người du lịch, đầu tiên phải
kể đến thuật tốn vét cạn. Thuật tốn này tìm tất cả các chu trình Hamilton


15

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 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 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


16

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 toán tham lam [8].
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à 0(n2). Tuy nhiên khi áp dụng thuật tố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.
2

3
1

4

4
3
7
5

3

2 8

6

1

5

4

7
5


2 8
6

3
6

1

4

5

2 8
6

7

4

5
4

2

1

4

4

3

6
5

3
6

6

3

4

4

2 8

5

3

4

4
3

4
7


1

5

2
3

5

2 8

3
6

6

3

4
3

7

2

3

4

4

3

4

2

3

1

5

6

2

3

7

2 8

5

Hình 1.5. Thuật tốn tham lam với số đỉnh là 5

6

3
6

5
4


×