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

Các thuật toán gần đúng giải bài toán cực tiểu hóa độ trễ (minimum latency problem-MLP)

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 (5.81 MB, 130 trang )

i

LỜI CAM ĐOAN
Tôi xin cam đoan luận án này là kết quả nghiên cứu của tôi. Các kết quả viết chung với các
tác giả khác đều đã được sự nhất trí của các đồng tác giả khi đưa vào luận án. Những kiến
thức tham khảo để hoàn thành luận án đều được trích dẫn đầy đủ từ danh mục tài liệu tham
khảo.



Người hướng dẫn khoa học




PGS.TS. Nguyễn Đức Nghĩa
Hà Nội, 04-2014

Tác giả luận án




Ban Hà Bằng















ii

LỜI CẢM ƠN
Luận án này được hoàn thành tại Bộ môn Khoa học Máy tính, Viện Công nghệ Thông tin và
Truyền thông, Trường Đại học Bách Khoa Hà Nội dưới sự hướng dẫn của PGS. TS. Nguyễn
Đức Nghĩa. Tôi xin chân thành cảm ơn Thầy hướng dẫn, người đã trực tiếp hướng dẫn khoa
học và tận tình giúp đỡ tôi trong quá trình nghiên cứu.
Tôi xin bày tỏ lòng biết ơn tới Bố Mẹ và Gia đình đã giúp đỡ, tạo điều kiện cho tôi
trong quá trình học tập và hoàn thành luận án này.
Tôi cũng xin gửi lời cảm ơn tới các thầy cô trong Viện Công Nghệ Thông Tin, cũng
như các thầy cô trong trường Đại học Bách khoa Hà Nội đã truyền thụ những kiến thức bổ
ích trong quá trình tôi học tập và nghiên cứu tại Trường.
Mặc dù đã rất cố gắng nhưng do thời thời gian và kiến thức còn hạn chế nên luận án
chắc còn có nhiều thiếu sót. Tôi rất mong nhận được những ý kiến đóng góp quý báu từ các
Thầy Cô và các bạn.












iii

Mục Lục
LỜI CAM ĐOAN i
LỜI CẢM ƠN ii
Tóm tắt v
Danh mục thuật ngữ vii
Danh mục bảng viii
Danh mục hình vẽ x
CHƢƠNG 1 TỔNG QUAN VỀ BÀI TOÁN 1
1.1 Mô hình toán học của bài toán cực tiểu hóa độ trễ 2
1.2 Một số hướng tiếp cận giải bài toán tối ưu hóa tổ hợp 5
1.2.1 Thuật toán nhánh cận 5
1.2.2 Thuật toán di truyền 8
1.2.3 Thuật toán đàn kiến 10
1.2.4 Thuật toán Tabu 10
1.2.5 Thuật toán lân cận biến đổi 11
1.3 Các nghiên cứu liên quan giải bài toán MLP 11
1.3.1 Thuật toán đúng 12
1.3.2 Thuật toán gần đúng cận tỷ lệ 12
1.3.3 Thuật toán meta-heuristic 13
1.4 Mục đích, phạm vi nghiên cứu 14
1.5 Dữ liệu thực nghiệm 15
1.6 Kết quả của luận án 18
1.7 Cấu trúc của luận án 20
CHƢƠNG 2 THUẬT TOÁN NHÁNH CẬN 21
2.1 Lược đồ thuật toán 22

2.2 Kết quả thực nghiệm 26
2.2.1 Thực nghiệm bộ dữ liệu ngẫu nhiên 26
2.2.2 Thực nghiệm bộ dữ liệu thực 28
2.3 Kết luận chương 2 35
CHƢƠNG 3 CÁC THUẬT TOÁN GẦN ĐÚNG CẬN TỶ LỆ 36
iv

3.1 Đánh giá thực nghiệm hiệu quả của các thuật toán gần đúng cận
tỷ lệ 37
3.1.1 Các thuật toán gần đúng cận tỷ lệ 37
3.1.2 Kết quả thực nghiệm 45
3.2 Thuật toán dựa trên phương pháp Subgradient 53
3.2.1 Lược đồ thuật toán 53
3.2.2 Kết quả thực nghiệm 58
3.3 Kết luận chương 3 65
CHƢƠNG 4 CÁC THUẬT TOÁN META-HEURISTIC 66
4.1. Thuật toán di truyền 67
4.1.1 Lược đồ của thuật toán 67
4.1.2 Kết quả thực nghiệm 72
4.2 Thuật toán di truyền lai ghép đàn kiến 83
4.2.1 Lược đồ của thuật toán 84
4.2.2 Kết quả thực nghiệm 89
4.3 Thuật toán lai thuật toán Tabu và thuật toán lân cận biến đổi 96
4.3.1 Lược đồ của thuật toán 96
4.3.2 Kết quả thực nghiệm 104
4.4 Kết luận chương 4 112
KẾT LUẬN 113
DANH MỤC CÁC CÔNG TRÌNH 116
CÔNG BỐ ĐƢỢC SỬ DỤNG TRONG LUẬN ÁN 116
TÀI LIỆU THAM KHẢO 117






v

Tóm tắt
Bài toán cực tiểu hóa độ trễ (Minimum latency problem - MLP) dưới dạng tổng quát có thể
phát biểu trong ngôn ngữ của lý thuyết đồ thị như sau: Cho G = (V, E) là đồ thị vô hướng có
trọng số không âm trên mỗi cạnh e  E. Giả sử, T là một hành trình xuất phát từ đỉnh s,
chúng ta định nghĩa độ trễ của một đỉnh v bất kỳ thuộc T là độ dài của đường đi từ đỉnh xuất
phát s đến v trên T. Độ trễ của hành trình T được định nghĩa như là tổng độ trễ của tất cả các
đỉnh
thuộc hành trình T.
Bài toán cực tiểu hóa độ trễ MLP yêu cầu tìm một hành trình T bắt đầu từ
đỉnh xuất phát s đi qua tất cả các đỉnh còn lại của đồ thị với tổng độ trễ là nhỏ nhất.

Bài toán MLP có nhiều ứng dụng trong thực tiễn. Cụ thể, trong lý thuyết lập lịch khi
một máy chủ hay một người thợ phải lên kế hoạch phục vụ một tập các yêu cầu sao cho tổng
(trung bình) thời gian chờ đợi của các yêu cầu là cực tiểu. Trong tìm đường đi trên mạng, bài
toán cũng được ứng dụng để tìm hành trình với tổng độ trễ là nhỏ nhất. Trong bài toán tìm
kiếm thông tin, bài toán MLP được ứng dụng để cực tiểu hóa độ trễ của việc tìm kiếm thông
tin trên mạng.
Mục đích nghiên cứu của chúng tôi trong luận án này là đề xuất các thuật toán giải bài
toán MLP với chất lượng lời giải tốt hơn chất lượng lời giải của các thuật toán giải bài toán
MLP đã được công bố. Đối với một bài toán NP-khó như bài toán MLP, hiện tại có ba hướng
tiếp cận chính để phát triển thuật toán giải: 1) hướng tiếp cận đúng, 2) hướng tiếp cận gần
đúng cận tỷ lệ, 3) hướng tiếp cận meta-heuristic. Đóng góp của chúng tôi trong luận án là đề
xuất các thuật toán giải theo cả ba hướng tiếp cận:

 Phát triển thuật toán đúng đưa ra lời giải tối ưu cho bài toán MLP với kích thước
bài toán lên đến 40 đỉnh.
 Khảo sát thực nghiệm về hiệu quả của các thuật toán gần đúng cận tỷ lệ hiện biết,
là cơ sở để đề xuất thuật toán gần đúng mới có cận tỷ lệ tốt hơn.
 Phát triển ba thuật toán theo hướng tiếp cận meta-heuristic. Chúng tôi đề xuất
thuật toán dựa trên lược đồ của thuật toán di truyền để giải bài toán MLP và một
số kỹ thuật mới được tích hợp vào từng bước của thuật toán. Nhằm nâng cao chất
lượng lời giải và thời gian chạy thuật toán, chúng tôi đề xuất hai thuật toán meta-
heuristic lai là: Thuật toán (ACO-GA) lai ghép giữa thuật toán di truyền (GA) và
thuật toán đàn kiến (ACO); và thuật toán TS-VNS lai ghép giữa thuật toán Tabu
(TS) và thuật toán lân cận biến đổi (VNS).
vi

Để đánh giá hiệu quả của các thuật toán đề xuất, chúng tôi tiến hành thực nghiệm trên các bộ
dữ liệu chuẩn và so sánh kết quả thu được với kết quả của các công trình nghiên cứu liên
quan. Kết quả thực nghiệm chỉ ra các thuật toán đề xuất đưa ra lời giải tốt hơn các thuật toán
tốt nhất hiện biết trên nhiều bộ dữ liệu.



















vii

Danh mục thuật ngữ
STT
Từ viết tắt
Giải nghĩa tiếng Anh
Giải nghĩa tiếng Việt
1
ACO
Ant conoly optimization
Tối ưu hoá đàn kiến
2
ACO-GA
-
Thuật toán di truyền lai ghép thuật
toán đàn kiến
3
GA
Genetic algorithm
Thuật toán di truyền
4
TS
Tabu search
Tìm kiếm Tabu
5

VNS
Variable neighborhood search
Tìm kiếm lân cận biến đổi
6
TS-VNS
-
Thuật toán tabu lai ghép thuật toán
đa lân cận
7
MLP
Minimum latency problem
Bài toán cực tiểu hóa độ trễ
8
TSP
Traveling salesman problem
Bài toán người du lịch
9
TRP
Traveling repairman problem
Bài toán thợ sửa chữa lưu động
10
DMP
Delivery man problem
Bài toán người giao hàng
11
TDTSP
Time dependent traveling
Salesman pproblem
Bài toán người du lịch với thời gian
bị chặn

12
DP
Dynamic programming
Quy hoạch động
13
B&B
Branch and bound
Phương pháp nhánh cận
14
CP
Constraint programming
Quy hoạch ràng buộc
15
-
Approximation algoirthm
Thuật toán gần đúng
16
-
Simulated annealing algorithm
Thuật toán phỏng tôi luyện
17
-
Local search
Tìm kiếm địa phương
18
GRASP
Greedy randomized adaptive
search procedure
Thủ tục tìm kiếm tham lam ngẫu
nhiên tự thích nghi

19
ILS
Iterated local search
Tìm kiếm địa phương leo đồi
20
RVND
Random variable neighborhood
descend
Tụt lân cận biến đổi ngẫu nhiên
21
k-MST
k-minimum spanning tree
Bài toán cây khung nhỏ nhất đi qua
k đỉnh
22
k-troll
Minimum k-troll problem
Bài toán hành trình ngắn nhất đi qua
k đỉnh
23
PCST
Prize collecting steiner tree
Bài toán cây Steiner
24
-
Polynomial time algorithm
(Polynomial algorithm)
Thuật toán thời gian tính đa thức
25


Benchmark test
Bộ dữ liệu chuẩn
26
OPT
Best known solution
Lời giải tốt nhất hiện biết
27
SDT
Social disaster technique
Kỹ thuật hủy diệt
viii

Danh mục bảng
Bảng 1. 1 Mô tả các bộ dữ liệu 16
Bảng 2. 1 Thời gian chạy của thuật toán trong bộ dữ liệu ngẫu nhiên 1 (tính theo phút) 30
Bảng 2. 2 Thời gian chạy của thuật toán trong bộ dữ liệu ngẫu nhiên 2 (tính theo phút) 31
Bảng 2. 3 Thời gian chạy của thuật toán trong bộ dữ liệu thực 2 (tính theo phút) 32
Bảng 2. 4 Thời gian chạy của thuật toán trong bộ dữ liệu ngẫu nhiên 3 (TPR-10-Rx) (tính theo giây)
33
Bảng 2. 5 Thời gian chạy của thuật toán trong bộ dữ liệu ngẫu nhiên 3 (TPR-20-Rx) (tính theo giây)
34
Bảng 2. 6 Thời gian chạy của thuật toán cho các file dữ liệu nhỏ trong 34
Bảng 3. 1 Kết quả thực nghiệm các thuật toán trong các bộ dữ liệu nhỏ 49
Bảng 3. 2 Kết quả thực nghiệm các thuật toán trên bộ dữ liệu ngẫu nhiên 3 (TPR-50-Rx) 50
Bảng 3. 3 Kết quả thực nghiệm các thuật toán trên bộ dữ liệu ngẫu nhiên 3 (TPR-100-Rx) 51
Bảng 3. 4 Kết quả thực nghiệm các thuật toán trên bộ dữ liệu thực 1 52
Bảng 3. 5 Kết quả thực nghiệm cho các bộ dữ liệu nhỏ 61
Bảng 3. 6 Kết quả thực nghiệm với bộ dữ liệu ngẫu nhiên 3 (TPR-50-Rx) 62
Bảng 3. 7 Mô tả
12

,gap gap
đối với các bộ dữ liệu nhỏ 62
Bảng 3. 8 Mô tả
T
đối với các bộ dữ liệu nhỏ 62
Bảng 3. 9 Kết quả thực nghiệm với bộ dữ liệu ngẫu nhiên 3 (TPR-100-Rx) 63
Bảng 3. 10 Kết quả thực nghiệm với bộ dữ liệu thực 1 64
Bảng 3.11 Mô tả
12
,gap gap
đối với các bộ dữ liệu lớn 64
Bảng 3. 12 Mô tả
T
đối với các bộ dữ liệu lớn 64
Bảng 4. 1 Thực nghiệm lựa chọn kích thước quần thể 74
Bảng 4. 2 Thực nghiệm lựa chọn tham số xác xuất lai ghép và đột biến 74
Bảng 4. 3 Thực nghiệm lựa chọn kích thước nhóm 74
Bảng 4. 4 Thực nghiệm lựa chọn tỷ lệ
1

75
Bảng 4. 5 Thực nghiệm xác định giá trị NGD 75
Bảng 4. 6 Thực nghiệm xác định giá trị NGT 75
Bảng 4. 7 Kết quả thực nghiệm các thuật toán cho các bộ dữ liệu nhỏ 79
Bảng 4. 8 Kết quả thực nghiệm các thuật toán cho bộ dữ liệu ngẫu nhiên 3 (TPR-50-Rx) 80
Bảng 4. 9 Kết quả thực nghiệm các thuật toán cho bộ dữ liệu ngẫu nhiên 3 (TPR-100-Rx) 80
Bảng 4. 10 Kết quả thực nghiệm các thuật toán cho bộ dữ liệu ngẫu nhiên 3 (TPR-200-Rx) 81
Bảng 4. 11 Kết quả thực nghiệm các thuật toán cho bộ dữ liệu thực 1 82
Bảng 4. 12 Mô tả
T

theo phút đối với các bộ dữ liệu lớn 82
Bảng 4. 13 Kết quả thực nghiệm của các thuật toán 90
Bảng 4. 14 Kết quả so sánh các thuật toán cho cho các bộ dữ liệu nhỏ 92
Bảng 4. 15 Kết quả so sánh các thuật toán cho bộ dữ liệu ngẫu nhiên 3 (TPR-50-Rx) 93
Bảng 4. 16 Kết quả so sánh các thuật toán cho bộ dữ liệu ngẫu nhiên 3 (TPR-100-Rx) 93
ix

Bảng 4. 17 Kết quả so sánh các thuật toán cho bộ dữ liệu ngẫu nhiên 3 (TPR-200-Rx) 94
Bảng 4. 18 Kết quả so sánh các thuật toán cho bộ dữ liệu thực 2 95
Bảng 4. 19 Mô tả
T
đối với các bộ dữ liệu lớn 95
Bảng 4. 20 Kết quả thực nghiệm các thuật toán cho các bộ dữ liệu nhỏ 107
Bảng 4. 21 Kết quả thực nghiệm các thuật toán cho các bộ dữ liệu ngẫu nhiên 3 (TPR-50-Rx) 108
Bảng 4. 22 Kết quả thực nghiệm các thuật toán cho bộ dữ liệu ngẫu nhiên 3 (TPR-100-Rx) 108
Bảng 4. 23 Kết quả thực nghiệm các thuật toán cho các bộ dữ liệu ngẫu nhiên 3 (TPR-200-Rx) 109
Bảng 4. 24 Kết quả thực nghiệm các thuật toán cho các bộ dữ liệu ngẫu nhiên 3 (TPR-500-Rx) 109
Bảng 4. 25 Kết quả thực nghiệm các thuật toán cho bộ dữ liệu thực 1 110
Bảng 4. 26 So sánh độ lệch chuẩn độ trễ lời giải của các thuật toán 111
Bảng 4. 27 Mô tả
T
đối với các bộ dữ liệu lớn 111
Bảng 5. 1 Tổng hợp các thuật toán đề xuất 115




















x

Danh mục hình vẽ
Hình 1. 1 Minh họa bài toán MLP trên cây có trọng số 3
Hình 1. 2 Minh họa bài toán MLP trên đường thẳng 3
Hình 1. 3 Quá trình phân nhánh 6
Hình 1. 4 Phân hoạch tập con 7
Hình 2. 1 Thời gian chạy trung bình các file dữ liệu (n = 30) trong các bộ dữ liệu 27
Hình 2. 2 Thời gian chạy trung bình các file dữ liệu (n = 35) trong các bộ dữ liệu 27
Hình 2. 3 Thời gian chạy trung bình các file dữ liệu (n = 40) trong các bộ dữ liệu 27
Hình 2. 4 Thời gian chạy trung bình các file dữ liệu (n = 10, 20) của bộ dữ liệu ngẫu nhiên 3 27
Hình 2. 5 Thời gian chạy trung bình các file dữ liệu trong mỗi nhóm của bộ dữ liệu thực 2 28
Hình 2. 6 Thời gian chạy trung bình các file dữ liệu nhỏ trong bộ dữ liệu thực 2 28
Hình 3. 1 Hình vuông (bounding box) bao phủ các đỉnh 43
Hình 3. 2 Phân chia ô vuông và quadtree tương ứng 43
Hình 3. 3 Tập các portal 44
Hình 3. 4 Minh họa crossing đi qua các portal 44
Hình 3. 5 Cận tỷ lệ thực nghiệm trung bình của các thuật toán đối với các bộ dữ liệu nhỏ 47

Hình 3. 6 Cận dưới trung bình của các thuật toán đối với các bộ dữ liệu nhỏ 47
Hình 3. 7 Thời gian chạy trung bình của các thuật toán đối với các bộ dữ liệu nhỏ 47
Hình 3. 8 Cận tỷ lệ trung bình của các thuật toán đối với các bộ dữ liệu lớn 47
Hình 3. 9 Thời gian chạy trung bình của các thuật toán đối với các bộ dữ liệu lớn 48
Hình 4. 1 Minh họa sự hội tụ của thuật toán GA−SDT và GA−no−SDT tại file test 1 trong bộ dữ liệu
ngẫu nhiên 1 qua các thế hệ 76
Hình 4. 2 Minh họa sự hội tụ của thuật toán GA−SDT và GA−no−SDT tại file test 1 trong bộ dữ liệu
ngẫu nhiên 2 qua các thế hệ 76
Hình 4. 3 Minh họa sự hội tụ của thuật toán GA−SDT và GA−no−SDT tại file KroA100 trong bộ dữ
liệu thực 2 qua các thế hệ 76
Hình 4.4 Minh họa hành trình MLP tốt nhất hiện biết trên một số file dữ liệu 106




1
CHƢƠNG 1
TỔNG QUAN VỀ BÀI TOÁN
Chương này giới thiệu bài toán cực tiểu hoá độ trễ (Minimum latency problem - MLP), trình
bày một số hướng tiếp cận để giải bài toán, các nghiên cứu liên quan, phạm vi nghiên cứu, bộ
dữ liệu thực nghiệm, đóng góp và cấu trúc của luận án.
Bài toán thiết kế mạng là một vấn đề được rất nhiều nhà nghiên cứu quan tâm. Việc
lựa chọn một cấu hình tối ưu hoặc thiết kế một mạng tối ưu có rất nhiều ứng dụng trong thực
tiễn như trong giao thông, mạng máy tính, … . Trong bài toán thiết kế mạng, nếu độ trễ của
một nút được hiểu là độ dài đường đi từ nút nguồn đến nút đó, thì mục đích đặt ra là tìm một
hành trình bắt đầu từ nút nguồn đến các nút còn lại trên mạng sao cho tổng độ trễ là cực tiểu.
Xét ví dụ minh họa, xét mạng gồm 6 nút, trong đó khoảng cách giữa các nút được cho bởi ma
trận trọng số C = (c
ij
) sau đây:

0 12 40 10 9 16
12 0 19 12 70 15
40 19 0 21 60 17
10 12 21 0 10 16
9 70 60 10 0 10
10 15 17 16 10 0
C











Xét hành trình T bắt đầu từ nút nguồn 1 đi qua tất cả các nút còn lại trên mạng: (1, 5, 4, 2, 3,
6). Khi đó, độ trễ của một nút trên T được hiểu là độ dài của đoạn đường trên T đi từ nút
nguồn 1 đến nó và độ trễ của hành trình T là tổng độ trễ của tất cả các nút trong T: 9 + (9 +
10) + (9 + 10 + 12) + (9 + 10 + 12 + 19) + (9 + 10 + 12 + 19 + 17) = 192. Hành trình T* = (1,
5, 4, 2, 6, 3) với độ trễ 168, đây cũng là hành trình có tổng độ trễ nhỏ nhất. Mục đích đặt ra là
tìm hành trình xuất phát từ nút nguồn 1 đi qua các nút còn lại trên mạng với độ trễ là nhỏ
nhất. Bài toán vừa phát biểu là một ví dụ về bài toán cực tiểu hóa độ trễ.
Bài toán cực tiểu hóa độ trễ (MLP) là một dạng khác của bài toán thợ sửa chữa lưu động
(Traveling repairman problem – TRP) [4, 14, 40], bài toán người giao hàng (Delivery man
problem – DMP) [12, 30, 31]. Bài toán cực tiểu hóa độ trễ cũng là một trường hợp đặc biệt
của bài toán người du lịch với thời gian bị chặn (Time dependent traveling salesman problem
– TDTSP) [28, 36], trong đó để tính tổng chi phí của một hành trình của bài toán TDTSP,

2
khoảng cách giữa hai đỉnh thứ i và đỉnh thứ (i + 1) trong hành trình cần được nhân với trọng
số w(i) trước khi chúng được cộng lại. Rõ ràng là bài toán người du lịch (Traveling salesman
problem – TSP) thu được từ bài toán TDTSP khi đặt w(i) = 1; còn nếu đặt w(i) = n – i, ta thu
được bài toán MLP. Chúng ta có thể thấy điểm giống nhau của hai bài toán TSP và MLP đều
là tìm một hành trình tối ưu. Tuy nhiên, Blum et al. [6] chỉ ra rằng bài toán MLP được xem là
khó hơn so với bài toán TSP. Với một sự thay đổi nhỏ trong hàm mục tiêu và đồ thị đầu vào
thì bài toán MLP không có đặc tính cục bộ giống như bài toán TSP. Trong bài toán TSP, nếu
hoán đổi vị trí của một vài đỉnh trong hành trình thì sự thay đổi trong hàm mục tiêu chỉ mang
tính cục bộ. Trong khi đó, việc hoán đổi như vậy lại có thể dẫn đến sự thay đổi lớn trong hàm
mục tiêu của bài toán MLP [6]. Một đặc điểm khác nữa của bài toán MLP đó là chỉ cần một
thay đổi nhỏ trong đồ thị đầu vào, đã có thể dẫn đến sự thay đổi lớn trong hành trình tối ưu
của bài toán [43]. Điều này cho thấy, chúng ta khó có thể thiết kế một thuật toán theo hướng
chia để trị để giải bài toán MLP. Bởi vì các bài toán bộ phận có mối liên hệ với các bài toán
bộ phận khác, nên ta khó có thể tìm được cách chia bài toán cần giải ra thành các bài toán bộ
phận; sau đó, tìm lời giải tối ưu của từng bài toán bộ phận bằng cách trị đệ qui chúng, và cuối
cùng, cần xây dựng được phương pháp hiệu quả để tổng hợp lời giải tối ưu của các bài toán
bộ phận này để thu được lời giải tối ưu cho bài toán đặt ra.
Bài toán MLP có nhiều ứng dụng trong thực tiễn. Cụ thể, trong lý thuyết lập lịch khi
một máy chủ hay một người thợ phải lên kế hoạch phục vụ một tập các yêu cầu sao cho tổng
(trung bình) thời gian chờ đợi của các yêu cầu là cực tiểu [6, 41]. Trong tìm đường đi trên
mạng, bài toán cũng được ứng dụng để tìm hành trình với tổng độ trễ là nhỏ nhất [42]. Trong
bài toán tìm kiếm thông tin, bài toán MLP được ứng dụng để cực tiểu hóa độ trễ của việc tìm
kiếm thông tin trên mạng [42].
Bài toán MLP được chứng minh thuộc lớp bài toán NP-khó trong trường hợp tổng
quát [41] và thậm chí vẫn là NP-khó ngay cả với đồ thị là cây có trọng số [44]. Hơn thế nữa,
ngoại trừ P = NP, một lược đồ xấp xỉ với thời gian đa thức trong trường hợp tổng quát là
không tồn tại [41]. Bên cạnh đó, trong một số trường hợp đặc biệt, bài toán giải được bởi
thuật toán có độ phức tạp thời gian đa thức, được đề cập trong các công trình [6, 14, 31, 49].
1.1 Mô hình toán học của bài toán cực tiểu hóa độ trễ

Bài toán cực tiểu hóa độ trễ (MLP) dưới dạng tổng quát có thể phát biểu trong ngôn ngữ của
lý thuyết đồ thị như sau: Cho G = (V, E) là đồ thị vô hướng có trọng số không âm trên mỗi
3
1
1
2
3 5
1
2 4
1
2
5
4
6
7
8 9
3

Hình 1. 1 Minh họa bài toán MLP trên cây có trọng số
14
3 2
7 8 9
5

Hình 1. 2 Minh họa bài toán MLP trên đường thẳng
cạnh e  E. Giả sử, T là một hành trình xuất phát từ s, chúng ta định nghĩa độ trễ của một
đỉnh v bất kỳ thuộc T là độ dài của đường đi từ đỉnh xuất phát s đến v trên T. Độ trễ của hành
trình T được định nghĩa như là tổng độ trễ của tất cả các
đỉnh thuộc nó.
Bài toán cực tiểu hóa độ

trễ MLP yêu cầu tìm một hành trình T bắt đầu từ đỉnh xuất phát từ s đi qua tất cả các đỉnh còn
lại của đồ thị với tổng độ trễ là nhỏ nhất.
Sau đây, chúng ta đưa ra một số ví dụ minh họa về bài toán MLP trên một số dạng đồ
thị đặc biệt:
Ví dụ 1: Xét bài toán MLP trên cây như hình 1.1, giả sử, T là một hành trình xuất phát từ đỉnh
s (s = 1) đi qua các đỉnh còn lại trên cây. Chúng ta định nghĩa lat(v) là độ dài đường đi từ
đỉnh 1 đến đỉnh v trên T và được tính bằng tổng trọng số của các cạnh nằm trên đường đi từ
đỉnh 1 đến đỉnh v trên T. Chúng ta cũng giả sử rằng độ trễ của việc quay ngược trở lại từ đỉnh
hiện tại đến đỉnh trước đó là bằng 0, thì khi đó tổng độ trễ của một hành trình MLP trên cây
được tính như sau:
T = (1, 2, 3, 4, 7, 8, 5, 9, 6) và L(T) =
lat(1) + lat(2)
+
lat(3)
+
lat(4)
+
lat(7)
+
lat(8)
+
lat(5)
+
lat(9) + lat(6)
= 0 + 1 + 2 + 4 + 5 + 7 + 13 + 18 + 25 = 75.
4
Ví dụ 2: Xét bài toán MLP khi mà các đỉnh của đồ thị nằm trên một đường thẳng như Hình
1.2. Chúng ta thấy rằng hành trình MLP có thể duyệt qua duyệt lại các đỉnh của đồ thị với số
lần không xác định. Điều đó cho thấy đặc tính không phẳng của hành trình MLP và đây cũng
là một điểm thể hiện sự khác biệt với hành trình của bài toán TSP.

Bây giờ, chúng ta sẽ mô tả phép biến đổi được đề xuất bởi Wu et al. [50], để quy bài
toán MLP tổng quát về bài toán MLP trên đồ thị metric. Đồ thị metric là đồ thị mà trọng số
trên các cạnh thỏa mãn tính chất bất đẳng thức tam giác. Đầu tiên, chúng ta xây dựng đồ thị
vô hướng đầy đủ
( , ),G V V V
với trọng số trên mỗi cạnh (u, v) là đường đi ngắn nhất giữa
hai đỉnh đó trên đồ thị G. Đối với một hành trình
T

trên
,G
chúng ta có thể xây dựng một
hành trình T tương ứng trên G bằng việc thay thế mỗi cạnh (u, v) trong
T

bởi đường đi ngắn
nhất giữa hai đỉnh u và v trên G. Wu et al. [50] đã chỉ ra rằng hành trình MLP tối ưu của hai
đồ thị là như nhau và nếu chúng ta có một thuật toán giải bài toán MLP trong đồ thị metric
với độ phức tạp thời gian là O(T(n)), thì cùng chất lượng lời giải tương tự, thuật toán đó giải
bài toán MLP tổng quát với độ phức tạp thời gian là O(T(n) + f(n)), trong đó, f(n) là độ phức
tạp thời gian cho việc tính đường đi ngắn nhất giữa các cặp đỉnh trong đồ thị G (chẳng hạn,
nếu sử dụng thuật toán Floyd-Warchall, ta có f(n) = O(n
3
)).
Do có thể quy bài toán MLP tổng quát về bài toán MLP trong trường hợp đồ thị
metric, nên trong luận án này, chúng tôi sẽ chỉ xét bài toán MLP trong trường hợp đồ thị
metric. Bài toán MLP có thể phát biểu như sau: Cho đồ thị đầy đủ K
n
với tập đỉnh V = {1, 2,
…, n} và ma trận chi phí không âm C = {c

ij
| i, j=1, 2, …, n}, với c
ij
là khoảng cách giữa hai
đỉnh i và j. Giả sử, T = (v
1
,

v
2
, …, v
n
) là một hành trình xuất phát từ v
1
(đường đi xuất phát từ
v
1
đi qua mỗi đỉnh của đồ thị đúng một lần) trên K
n
. Ký hiệu
P
(v
1
, v
k
) là đoạn đường đi từ v
1

đến v
k


trên hành trình T. Ta gọi độ trễ của đỉnh v
k

trên hành trình T, ký hiệu bởi lat(v
k
), là độ
dài của đường đi P(v
1
, v
k
):

1
1
1
( ) ( , ), 2, 3, , .
k
k i i
i
lat v c v v k n






Độ trễ của hành trình T, ký hiệu là L(T), được định nghĩa như là tổng độ trễ của tất cả các
đỉnh
thuộc nó:

2
( ) ( ).
n
k
k
L T lat v




Giả sử, v
1
là đỉnh cho trước, bài toán MLP yêu cầu tìm hành trình xuất phát từ v
1
với độ trễ là nhỏ
nhất.
5
1.2 Một số hƣớng tiếp cận giải bài toán tối ƣu hóa tổ hợp
Đối với bài toán thuộc lớp NP – khó như bài toán MLP, hiện tại có một số hướng tiếp cận
thường được áp dụng để phát triển thuật toán sau đây:
 Phát triển thuật toán đúng tìm lời giải tối ưu. Các thuật toán theo hướng này có độ
phức tạp bùng nổ tổ hợp trong trường hợp tồi nhất, mặc dù trong thực tế chúng
thường chạy nhanh hơn đánh giá lý thuyết này. Thuật toán quy hoạch động
(Dynamic programming – DP) [7], thuật toán nhánh cận (Branch and bound –
B&B), quy hoạch có ràng buộc (Constraint programming – CP), quy hoạch tuyến
tính dựa trên nhánh cận (Linear programming based branch and bound – LP),
Branchcut, Branchprice, và Branchcutprice [29, 38] thuộc lớp thuật toán này.
 Phát triển thuật toán gần đúng cận tỷ lệ α (α – approximation algoirthm). Ưu điểm
của lớp thuật toán là nó đảm bảo đưa ra lời giải với chi phí không lớn hơn α lần
chi phí của lời giải tối ưu [19, 47, 48].

 Phát triển thuật toán meta-heuristic có độ phức tạp thời gian không quá lớn và tiến
hành thực nghiệm đánh giá hiệu quả của thuật toán trên các bộ dữ liệu chuẩn.
Thuật toán di truyền (Genetic algorithm) [13, 32], thuật toán phỏng tôi luyện
(Simulated annealing algorithm) [19], thuật toán Tabu (Tabu search) [20, 46]
thuật toán lân cận biến đổi (Variable neighborhood search-VNS) [21, 22, 23, 33]
và thuật toán tìm kiếm địa phương (Local search) [37] thuộc lớp thuật toán này.
Tiếp theo, là phần trình bày tổng quan về sơ đồ của một số thuật toán cơ bản để giải
bài toán tối ưu tổ hợp: Thuật toán nhánh cận [29, 38], thuật toán di truyền [13, 32], thuật toán
đàn kiến [10], thuật toán tabu và thuật toán lân cận biến đổi [21, 22, 23, 33].
1.2.1 Thuật toán nhánh cận
Ý tưởng của thuật toán trên mô hình bài toán tối ưu tổ hợp tổng quát được mô tả như sau:
min {f(x): x  D},
trong đó D là tập hữu hạn phần tử.
Giả thiết rằng tập D được mô tả như sau:
D = {x = (x
1
, x
2
, , x
n
)  A
1
× A
2
× × A
n
: x thoả mãn tính chất P},
trong đó A
1
, A

2
, , A
n
là các tập hữu hạn và P là tính chất cho trên tích Đề–các A
1
× A
2
× ×
A
n
. Mỗi phần tử x  D được gọi là một phương án (hay còn gọi là lời giải chấp nhận được),
còn tập D được gọi là tập các phương án của bài toán.
6
Thuật toán nhánh cận bao gồm hai thủ tục: Phân nhánh (Branching procedure) và tính cận
(Bounding procedure).
Phân nhánh: Thủ tục này thực hiện việc phân hoạch tập các phương án ra thành các
tập con với kích thước càng ngày càng nhỏ cho đến khi thu được phân hoạch tập các phương
án ra thành các tập con một phần tử. Quá trình phân nhánh được thực hiện nhờ thuật toán
quay lui. Thoạt tiên, trên cơ sở tính chất P, ta có thể xác định được tập


1
12
1 1 1 1
, , ,
n
S a a a

những phần tử của tập A
1

có thể chọn vào vị trí thứ nhất của lời giải. Do đó, ta có phân hoạch
của tập D ra thành n
1
tập con được mô tả trong Hình 1.3. Ở đây, ta ký hiệu
1 1 1 1
( ) { } 1, 2, ,
ii
D a x D : x a , i n   
là tập các phương án có thể phát triển từ phương án bộ
phận rỗng (). Ta có:
D =
)( )()(
1
1
2
1
1
1
n
aDaDaD 
.
Như vậy, ta có thể đặt tương ứng mỗi phương án bộ phận cấp k (a
1
, a
2
, , a
k
) với một tập con
các phương án của bài toán:
D(a

1
, , a
k
) = {x

D: x
i
= a
i
, i = 1, , k}.
Ở bước tổng quát của thuật toán quay lui, ta sẽ làm việc với phương án bộ phận (a
1
, a
2
, , a
k
)
và xét các cách tiếp tục phát triển phương án này. Điều đó tương đương với việc phân hoạch
tập D ra thành các tập con nhỏ hơn. Giả sử
1
11
, ,
p
kk
aa

là các khả năng lựa chọn thành phần
thứ k+1 của lời giải, quá trình phân hoạch tập D(a
1
, …, a

k
) được thực hiện như:
D =
)( )()(
1
1
2
1
1
1
n
aDaDaD 
.
Như vậy, ta có thể đặt tương ứng mỗi phương án bộ phận cấp k (a
1
, a
2
, , a
k
) với một tập con
các phương án của bài toán:
D(a
1
, , a
k
) = {x

D: x
i
= a

i
, i = 1, , k}
( ) D



-


Hình 1. 3 Quá trình phân nhánh









1
1
1
()
n
Da


1
1
()

n
Da

7

















Hình 1. 4 Phân hoạch tập con
Ở bước tổng quát của thuật toán quay lui, ta sẽ làm việc với phương án bộ phận (a
1
, a
2
, , a
k
)
và xét các cách tiếp tục phát triển phương án này. Điều đó tương đương với việc phân hoạch

tập D ra thành các tập con nhỏ hơn. Giả sử
1
11
, ,
p
kk
aa

là các khả năng lựa chọn thành phần
thứ k+1 của lời giải, quá trình phân hoạch tập D(a
1
, …, a
k
) được thực hiện như sau: Ta có
phân hoạch:
1 1 1
1
( , , ) ( , , , )
p
i
k k k
i
D a a D a a a



. Thay biểu diễn của D(a
1
, …, a
k

) vào chỗ của
nó trong phân hoạch đang có của tập D ta thu được phân hoạch mới của tập D ra thành các
tập con.
Tính cận: Cần đưa ra cách tính cận cho giá trị hàm mục tiêu của bài toán trên mỗi tập
con trong phân hoạch của tập các phương án. Cần xây dựng hàm g xác định trên tập tất cả các
phương án bộ phận của bài toán thoả mãn bất đẳng thức sau:
g(a
1
, , a
k
) ≤ min{f(x): x

D, x
i
= a
i
, i = 1, , k} (1.1)
Bất đẳng thức (1.1) có nghĩa là giá trị của hàm g tại phương án bộ phận (a
1
, a
2
, , a
k
) không
vượt quá giá trị nhỏ nhất của hàm mục tiêu của bài toán trên tập con các phương án:
D(a
1
, , a
k
) = {x


D: x
i
= a
i
, i = 1, , k},
nghĩa là g(a
1
, a
2
, , a
k
) là cận dưới cho giá trị hàm mục tiêu trên tập D(a
1
, a
2
, , a
k
). Vì lẽ
đó, hàm g được gọi là hàm cận dưới và giá trị g(a
1
, a
2
, , a
k
) được gọi là cận dưới của tập
D(a
1
, a
2

, , a
k
). Do có thể đồng nhất tập D(a
1
, a
2
, , a
k
) với phương án bộ phận (a
1
, a
2
, ,
a
k
), nên ta cũng gọi giá trị g(a
1
, a
2
, , a
k
) là cận dưới của phương án bộ phận (a
1
, , a
k
).
Giả sử, đã có hàm g, ta xét cách sử dụng hàm này để giảm bớt khối lượng duyệt trong
quá trình duyệt tất cả các phương án theo thuật toán quay lui. Trong quá trình liệt kê các



 

   

 





 

   

 







 

   


    

 


      
8
Thuật toán 1.1. Thuật toán nhánh cận
1. BEGIN
2.
f
:= +∞;
3. Branch (1);
4. if (
f
< +∞) then
5. <
f
là giá trị tối ưu và x là phương án tối ưu>;
6. else
7. <Bài toán không có phương án>;
8. end if
9. END


Thuật toán 1.2. Branch (k)
1. BEGIN
2. for a
k


A
k
do

3. if (a
k


S
k
) then
4. x
k
:= a
k
;
5. if (k == n) then < Cập nhật kỉ lục>
6. else
7. If (g(x
1
, , x
k
) ≤
f
) then Branch(k + 1);
8. end if
9. end for
10. END


phương án có thể đã thu được một số phương án của bài toán. Gọi
x

là phương án với giá trị

hàm mục tiêu nhỏ nhất trong số các phương án đã tìm được và
)(xff 
. Ta sẽ gọi
x


phương án tốt nhất hiện có và
f

là kỉ lục. Giả sử đã có
f
, khi đó nếu
g(a
1
, a
2
, , a
k
) >
f

thì từ bất đẳng thức (1.1) suy ra
f
< g(a
1
, a
2
, , a
k
) ≤ min{f(x): x


D(a
1
, a
2
, , a
k
)}. Vì thế
tập D(a
1
, a
2
, , a
k
) chắc chắn không chứa phương án tối ưu và có thể loại bỏ khỏi quá trình
duyệt. Lược đồ của thuật toán nhánh cận được trình bày chi tiết ở Thuật toán 1.1 và 1.2.
1.2.2 Thuật toán di truyền
Lược đồ tổng quát của thuật toán di truyền [13, 32] đòi hỏi xác định phương pháp mã hóa lời
giải và xây dựng các toán tử: ước lượng, lựa chọn, lai ghép và đột biến. Đầu tiên, ta khởi tạo
quần thể của các cá thể ban đầu. Sau đó, trong mỗi bước lặp, các thể cha mẹ được lựa chọn từ
quần thể để thực hiện lai ghép tạo ra các cá thể con cháu. Các cá thể con cháu sẽ được đột
9
Thuật toán 1.3. Lược đồ tổng quát của thuật toán di truyền
1. BEGIN
2. Khởi tạo quần thể ban đầu SP;
3. while (Điều kiện kết thúc chưa thỏa) do
4. (TP, TM) = Lựa chọn từ SP; //TP và TM là cá thể cha và mẹ
5. TC = Lai ghép TP và TM; //TC là cá thể con cháu được lai ghép từ TP và TM
6. TCˊ = Đột biến cá thể con cháu TC; //TCˊ là cá thể sau khi đột biến
7. SP = SP  TCˊ; //Bổ sung cá thể TCˊ vào trong quần thể

8. Giảm kích thước quần thể về kích thước ban đầu;
9. end while
10. Đưa ra lời giải tốt nhất;
11. END


Thuật toán 1.4. Lược đồ tổng quát của thuật toán đàn kiến
1. BEGIN
2. Khởi tạo thông tin vết mùi τ;
3. while (Điều kiện kết thúc chưa thỏa) do
4. Khởi tạo cá thể kiến T
k
; //T
k
là cá thể kiến ở vòng lặp thứ k
5. Cho T
k
dò đường dựa trên thông tin vết mùi τ;
6. Cập nhập thông tin vết mùi τ do cá thể T
k
để lại;
7. end while
8. Đưa ra lời giải tốt nhất;
9. END


Thuật toán 1.5. Lược đồ tổng quát của thuật toán tabu
1. BEGIN
2. Khởi tạo solution ban đầu s
o

;
3. s = s
o
;
*
s
= s
o
;
4. tabulist = Ø; //tabulist là danh sách tabu
5. while (Điều kiện kết thúc chưa thỏa) do
6. M = Ø; //M là tập các bước chuyển ứng viên
7.
s
sN


(là lân cận của s):
8. m = move (s,
);s


9. if (m


tabulist) M = M

{m};
10. if (m


tabulist nhưng cải thiện được lời giải tốt nhất) M = M

{m};
11. Chọn bước chuyển m tốt nhất trong tập M.
12.
( );
t
s m s


;
t
ss



13. if (
*
( ( ) ( ))
t
f s f s


*
;
t
ss




14. Cập nhập tabulist;
15. Tăng cường hóa lời giải;
16. Đa dạng hóa lời giải;
17. end while
18. Đưa ra lời giải tốt nhất;
19. END
10
Thuật toán 1.6. Lược đồ tổng quát của thuật toán lân cận biến đổi
1. BEGIN
2.
*
;T 

3.
//thực hiện lần lượt k thuật toán lận cận

4. for i =1 to k do
5.
()
argmin ( )
i
T N T
T L T





6. if ((L(
'

T
) < L(
*
T
)) then
7.
*'
;TT
T ←
'
;T

8. i ← 1;
9. else
10. i++;
11. end if
12. END

biến và được bổ sung vào quần thể ban đầu. Cuối cùng, một vài cá thể bị loại bỏ từ quần thể
theo một tiêu chí lựa chọn để đảm bảo kích thước quần thể là không thay đổi. Thuật toán sẽ
lặp lại các bước trên cho đến khi điều kiện kết thúc được thỏa mãn và đưa ra lời giải tốt nhất
trong số các lời giải tìm được. Toán tử lai ghép và toán tử đột biến đóng một vai trò quan
trọng trong thuật toán di truyền. Mục đích của toán tử lai ghép nhằm cải thiện chất lượng của
quần thể sau mỗi thế hệ. Trong khi đó, toán tử đột biến giúp cho quần thể đa dạng hơn. Mã
giả của thuật toán di truyền được trình bày trong Thuật toán 1.3.
1.2.3 Thuật toán đàn kiến
Thuật toán đàn kiến [10] mô phỏng hành vi của các đàn kiến trong thực tế. Khi di chuyển các
con kiến để lại vết mùi trên đường đi để các con kiến theo sau lần theo vết mùi đó. Dựa vào
nồng độ mùi, các con kiến theo sau lựa chọn đường đi có nồng độ mùi cao hơn. Việc thực
hiện thuật toán đàn kiến bao gồm các bước: Đầu tiên, ta khởi tạo vết mùi xuất phát. Tiếp đến,

tại mỗi bước lặp, ta tạo ra một cá thể kiến và cho kiến dò đường dựa trên vết mùi do các cá
thể kiến trước đó để lại trên đường đi. Khi cá thể kiến này di chuyển, thì bản thân nó cũng để
lại vết mùi trên đường đi nó đi qua. Vết mùi này sẽ được cập nhập và bay hơi để các cá thể
kiến theo sau lần theo vết mùi đó. Thuật toán sẽ thực hiện các bước lặp cho đến khi điều kiện
kết thúc được thỏa mãn. Mã giả của thuật toán được trình bày trong Thuật toán 1.4.
1.2.4 Thuật toán Tabu
Từ một lời giải ban đầu, thuật toán tabu [20, 46] lặp đi lặp lại việc tìm kiếm nhằm cải thiện
dần lời giải tốt nhất của bài toán. Tại mỗi bước lặp, thuật toán duyệt trong lân cận của lời giải
11
hiện tại để chọn ra lời giải tốt nhất và lời giải này thay thế cho lời giải hiện tại ở bước lặp kế
tiếp. Mỗi lời giải trong lân cận của lời giải hiện tại được gọi là một lân cận của lời giải hiện
tại. Việc thực hiện tác động lên lời giải hiện tại để biến nó thành một lân cận được gọi là một
bước chuyển (move). Điểm khác biệt căn bản của tìm kiếm tabu so với các thuật toán tìm
kiếm địa phương khác là: Tại mỗi bước lặp, để tránh việc duyệt trở lại những lời giải đã từng
được khảo sát, thuật toán tabu sử dụng một danh sách (được gọi là danh sách tabu) để lưu trữ
một số bước chuyển đã từng được sử dụng. Danh sách tabu sẽ chứa một số bước chuyển vừa
được thực hiện trong một số bước lặp ngay trước đó và các bước chuyển nằm trong danh
sách tabu được gọi là các bước chuyển tabu. Các bước chuyển tabu sẽ bị cấm sử dụng lại khi
nó còn nằm trong danh sách tabu. Mỗi bước chuyển tabu sẽ được cập nhập vào trong danh
sách tabu khi thực hiện bước lặp. Sau đó, các bước chuyển này có thể được loại khỏi danh
sách tabu và tái dụng lại. Mã giả của thuật toán được trình bày trong Thuật toán 1.5.
1.2.5 Thuật toán lân cận biến đổi
Ý tưởng của thuật toán lân cận biến đổi (Variable neighborhood search-VNS) [21, 22, 23,
33] là thực hiện lần lượt từng thuật toán lân cận, hết thuật toán lân cận này đến thuật toán lân
cận khác. Trong quá trình thực hiện thuật toán VNS, ta luôn ghi nhận lời giải tốt nhất (kỉ
lục). Khi thực hiện một thuật toán lân cận, nếu tìm được kỉ lục mới thì ta quay trở lại thực
hiện thuật toán VNS từ đầu. Ngược lại, ta chuyển sang thuật toán lân cận tiếp theo. Quá trình
được tiếp tục cho đến khi thực hiện hết tất cả các thuật toán lân cận mà lời giải tốt nhất không
được cải thiện. Mã giả của thuật toán được trình bày trong Thuật toán 1.6.
1.3 Các nghiên cứu liên quan giải bài toán MLP

Bài toán MLP giải được bằng thuật toán thời gian tính đa thức trong một số trường hợp đặc
biệt khi đồ thị của bài toán là:
 Cây không trọng số – độ phức tạp thời gian của thuật toán là O(max(n + m)) [6] (n
và m lần lượt là số lượng đỉnh và cạnh của đồ thị).
 Đường thẳng – độ phức tạp thời gian của thuật toán là O(n
2
) [6, 49].
 Cây với đường kính là 3 (đường kính của cây là số đỉnh trên đường đi đơn đi qua
nhiều đỉnh nhất trên cây) – độ phức tạp thời gian của thuật toán là O(n
2
) [6].
 Cây với số lượng lá là hằng số k – độ phức tạp thời gian của thuật toán là O(n
k
)
(với k là một hằng số cho trước) [49].
12
Trong trường hợp tổng quát, ngoại trừ P = NP, một lược đồ xấp xỉ với thời gian đa
thức là không tồn tại [41]. Hiện nay, một số công trình nghiên cứu đã được đề xuất để giải bài
toán MLP. Có thể phân loại các thuật toán hiện biết ra thành ba nhóm chính: Các thuật toán
đúng, các thuật toán gần đúng cận tỷ lệ, và các thuật toán meta-heuristic. Dưới đây chúng tôi
sẽ điểm qua các kết quả đó.
1.3.1 Thuật toán đúng
Các thuật toán đúng cho phép tìm lời giải tối ưu nhưng có đánh giá độ phức tạp thời gian
bùng nổ tổ hợp trong tình huống tồi nhất. Mặc dù trong thực tế chúng thường chạy nhanh hơn
đánh giá lý thuyết này, tuy vậy, chúng cũng chỉ có thể áp dụng để giải các bài toán MLP với
kích thước nhỏ.
Theo hướng thuật toán quy hoạch động, Wu. [49] đề xuất một thuật toán với độ phức
tạp thời gian hàm mũ để giải bài toán MLP. Sau đó, Wu et al. [50] phát triển thuật toán của
mình bằng việc kết hợp thuật toán quy hoạch động với phương pháp nhánh cận. Để đánh giá
hiệu quả của thuật toán, Wu et al. tiến hành thực nghiệm thuật toán trên một số file dữ liệu

ngẫu nhiên và một số file dữ liệu được trích rút từ bộ dữ liệu TSPLIB [51]. Kết quả thực
nghiệm chỉ ra rằng thuật toán của Wu et al. có thể giải bài toán MLP với kích thước lên đến
26 đỉnh. Tuy nhiên, hiệu quả của thuật toán trong các trường hợp có kích thước lớn hơn chưa
được xem xét.
1.3.2 Thuật toán gần đúng cận tỷ lệ
Các thuật toán gần đúng cận tỷ lệ α (α – approximation algoirthm) có ưu điểm là nó đảm bảo
đưa ra lời giải với chi phí không lớn hơn α lần chi phí của lời giải tối ưu.
Hiện nay, có một vài thuật toán gần đúng cận tỷ lệ được đề xuất. Blum et al. [6] đưa
ra một thuật toán với cận tỷ lệ là 144 trong trường hợp metric. Goemans et al. [18] đưa ra cận
tỷ lệ 21.55. Sau đó, Arora et al. [3] đề xuất thuật toán gần đúng với cận tỷ lệ là 17.24. Thuật
toán gần đúng của Archer et al. [1] có cận tỷ lệ 7.18 trong trường hợp metric và 3.01 trong bộ
dữ liệu TSPLIB [51]. Gần đây, K.Chaudhuri et al. [9] đưa ra thuật toán gần đúng với cận tỷ lệ
là 3.59. Cận tỷ lệ này được biết là cận tỷ lệ nhỏ nhất hiện nay cho bài toán MLP.
Hiện tại, trong hướng tiếp cận gần đúng cận tỷ lệ, phần lớn các công trình chỉ ra rằng
chi phí tối ưu của bài toán k-MST được xem như cận dưới cho độ trễ đỉnh thứ k trong hành
trình tối ưu MLP [1, 6, 18]. Blum et al. [6] chỉ ra rằng nếu có thuật toán gần đúng với cận tỷ
13
lệ β cho bài toán k-MST (k = 2, 3, , n), thì ta có thuật toán gần đúng với cận tỷ lệ 8×β cho
bài toán MLP. Sau đó, Goeman et al. [18] giảm cận tỷ lệ bài toán MLP xuống còn 3.59×β.
Nếu sử dụng thuật toán gần đúng có cận tỷ lệ nhỏ nhất là 2 cho bài toán k-MST [15], thì thuật
toán gần đúng cho bài toán MLP của Blum et al. và Goeman et al. có cận tỷ lệ lần lượt là 16
và 7.18. Gần đây, Archer et al. [1] trình bày thuật toán tạo ra các k-MST (k = 2, 3, , n) bằng
việc sử dụng kỹ thuật nới lỏng lagrange thay vì sử dụng thuật toán giải bài toán k-MST như
trong [15]. Tuy không giảm được cận tỷ lệ 7.18 nhưng thời gian chạy thuật toán được giảm
đáng kể. Khác với các cách tiếp cận trên, K.Chaudhuri et al. [9] chỉ ra rằng lời giải tối ưu của
bài toán đường đi ngắn nhất đi qua k đỉnh (ta gọi là bài toán k-troll) là một cận dưới tốt hơn
cho độ trễ đỉnh thứ k trong hành trình tối ưu MLP. Tuy nhiên, bài toán k-troll cũng khó tương
tự như bài toán k-MST, bởi vậy họ đưa ra thuật toán cho bài toán tìm cây khung đi qua k đỉnh
có chi phí bị chặn bởi chi phí tối ưu của bài toán k-troll. Để thu được lời giải cho bài toán
MLP, họ chuyển các cây khung này thành các hành trình đi qua k đỉnh và kết nối các hành

trình này. Như vậy, ta không phải mất cận tỷ lệ 2 cho bài toán k-MST và thuật toán của
K.Chaudhuri et al. có cận tỷ lệ là 3.59. Hầu hết các kết quả có được từ hướng tiếp cận gần
đúng cận tỷ lệ đều đưa ra cận tỷ lệ ở dạng lý thuyết (cận tỷ lệ trường hợp tồi nhất), có một
ngoại lệ trong [1], khi Archer et al. tiến hành thực nghiệm trên bộ dữ liệu TSPLIB [51]. Kết
quả thực nghiệm cho thấy, cận tỷ lệ trung bình đạt được từ bộ dữ liệu này là 3.01 tốt hơn rất
nhiều so với cận tỷ lệ lý thuyết. Tuy vậy, cận tỷ lệ này vẫn còn là quá lớn, chưa đáp ứng yêu
cầu giải các bài toán ứng dụng thực tế.
1.3.3 Thuật toán meta-heuristic
Các thuật toán meta-heuristic là những thuật toán có độ phức tạp thời gian thường không quá
lớn, nhưng chất lượng lời giải tìm được bởi các thuật toán này chỉ có thể đánh giá thông qua
thực nghiệm. Thuật toán meta-heuristic thường áp dụng hiệu quả cho các bài toán tối ưu hóa
tổ hợp như bài toán MLP.
Hiện nay, có hai công trình nghiên cứu theo hướng tiếp cận meta-heuristic giải bài
toán MLP đã được công bố. Trong công trình [40], A. Salehipour et al. đề xuất thuật toán
meta-heuristic dựa trên GRASP (Greedy randomized adaptive search procedure) và VNS
(Variable neighborhood search). Sau đó, M. Silva et al. [43] cũng đề xuất một thuật toán
meta-heuristic khác dựa trên lược đồ của GRASP, ILS (Iterated local search) và RVND
(Random variable neighborhood descend). Để đánh giá hiệu quả của các thuật toán, A.
Salehipour et al. và M. Silva et al. thực nghiệm thuật toán của họ trên các bộ dữ liệu. Kết quả
14
thực nghiệm cho thấy, chất lượng lời giải thu được từ các thuật toán meta-heuristic tốt hơn rất
nhiều so với chất lượng lời giải của các thuật toán gần đúng cận tỷ lệ hiện biết. Điều đó
chứng tỏ, meta-heuristic là hướng tiếp cận tiềm năng cho bài toán MLP.
1.4 Mục đích, phạm vi nghiên cứu
Do bài toán MLP là bài toán NP-Khó, do đó không có một hướng tiếp cận hiệu quả duy nhất
cho bài toán trong mọi trường hợp. Việc đưa ra các hướng tiếp cận hiệu quả cho nhiều trường
hợp khác nhau của bài toán này có ý nghĩa về mặt khoa học. Đối với một bài toán NP-khó,
hiện tại có ba hướng tiếp cận chính để phát triển thuật toán giải: 1) hướng tiếp cận đúng; 2)
hướng tiếp cận gần đúng cận tỷ lệ; 3) hướng tiếp cận meta-heuristic. Trước hết, các thuật toán
đúng tìm lời giải tối ưu thường có độ phức tạp tính toán bùng nổ tổ hợp trong tình huống tồi

nhất, mặc dù trong thực tế chúng thường chạy nhanh hơn đánh giá lý thuyết này. Tuy vậy,
thuật toán đúng cũng chỉ có thể giải bài toán MLP với kích thước nhỏ. Trong cách tiếp cận
thứ hai, các thuật toán gần đúng với cận tỷ lệ

có ưu điểm lớn là về mặt lý thuyết chúng đảm
bảo đưa ra lời giải có chi phí không vượt quá

lần chi phí của lời giải tối ưu. Cuối cùng, các
thuật toán meta-heuristic là những thuật toán có độ phức tạp tính toán thường là không quá
lớn và khá hiệu quả đối với lớp bài toán NP-khó như bài toán MLP, nhưng chất lượng lời giải
tìm được bởi các thuật toán này chỉ có thể đánh giá thông qua thực nghiệm.
Trong luận án này, chúng tôi nghiên cứu việc phát triển các thuật toán hiệu quả để
giải bài toán cực tiểu hóa độ trễ, là một bài toán tối ưu hóa tổ hợp có nhiều ứng dụng trong
thực tiễn:
 Phát triển thuật toán đúng cho phép giải bài toán với kích thước lớn hơn. Hiện tại,
hầu hết lời giải tối ưu của các bộ dữ liệu được nhiều tác giả sử dụng trong thực
nghiệm xác định hiệu quả của các thuật toán giải bài toán MLP là chưa biết. Điều
này gây khó khăn cho việc đánh giá một cách chính xác hiệu quả của các thuật
toán. Chúng tôi sử dụng các bộ dữ liệu có lời giải tối ưu thu được nhờ thuật toán
đúng để phân tích thêm về hiệu quả của các thuật toán đề xuất và để khảo sát lựa
chọn các tham số trong các thuật toán meta-heuristic.
 Khảo sát thực nghiệm về hiệu quả của các thuật toán gần đúng cận tỷ lệ hiện biết,
là cơ sở để đề xuất thuật toán gần đúng mới với cận tỷ lệ tốt hơn. Theo hướng tiếp
cận thuật toán gần đúng cận tỷ lệ, hiện nay một số thuật toán gần đúng cận tỷ lệ
giải bài toán MLP đã được công bố. Tuy nhiên, hiệu quả của các thuật toán này
15
chỉ được đánh giá trên khía cạnh lý thuyết. Chúng tôi đã tiến hành nghiên cứu
thực nghiệm để đánh giá hiệu quả thực tế của các thuật toán gần đúng. Chúng tôi
tập trung vào phân tích ba khía cạnh chính là cận tỷ lệ, thời gian chạy thực tế và
chất lượng của cận dưới. Nhằm giảm cận tỷ lệ cho thuật toán gần đúng giải bài

toán MLP, chúng tôi đề xuất thuật toán gần đúng dựa trên phương pháp
Subgradient.
 Phát triển ba thuật toán theo hướng tiếp cận meta-heuristic. Chúng tôi đề xuất
thuật toán dựa trên lược đồ tổng quát của thuật toán di truyền để giải bài toán
MLP và một số kỹ thuật mới được tích hợp vào từng bước của thuật toán di
truyền. Nhằm nâng cao chất lượng lời giải và thời gian chạy thuật toán, chúng tôi
đề xuất hai thuật toán meta-heuristic lai là: Thuật toán (ACO-GA) lai ghép giữa
thuật toán di truyền (GA) và thuật toán đàn kiến (ACO); và thuật toán TS-VNS lai
ghép giữa thuật toán Tabu (TS) và thuật toán lân cận biến đổi (VNS).
Để đánh giá hiệu quả của các thuật toán đề xuất, chúng tôi tiến hành thực nghiệm trên
các bộ dữ liệu đã được các nhóm nghiên cứu trên thế giới sử dụng. Các kết quả tính toán thực
nghiệm theo các thuật toán đề xuất được so sánh với kết quả tính toán thực nghiệm của các
công trình nghiên cứu liên quan [1, 3, 6, 9, 18, 40, 43, 50].
1.5 Dữ liệu thực nghiệm
Một trong những cách đánh giá chất lượng của các thuật toán giải bài toán MLP nói riêng và
các bài toán NP-khó nói chung là tiến hành thực nghiệm trên các bộ dữ liệu được cộng đồng
các nhà khoa học cùng nghiên cứu về bài toán đưa ra. Tập các bộ dữ liệu như vậy thường
được gọi là bộ dữ liệu chuẩn (Benchmark test). Hiện nay, đối với bài toán MLP bộ dữ liệu
chuẩn như vậy cũng đã hình thành, tuy rằng chưa đủ nhiều và chưa thật đa dạng. Mục này
dành cho việc mô tả bộ dữ liệu được dùng để tiến hành thực nghiệm khảo sát hiệu quả của
các thuật toán, trong đó ngoài các bộ dữ liệu được đề xuất bởi các nhà khoa học trên thế giới,
có nhiều bộ dữ liệu có kích thước nhỏ hơn 40 đỉnh do chúng tôi xây dựng nhằm làm phong
phú hơn bộ dữ liệu chuẩn. Mục đích của việc tạo thêm các bộ dữ liệu kích thước nhỏ nhằm có
thể tìm được lời giải tối ưu từ thuật toán đúng (chú ý là hiện tại thuật toán đúng chỉ áp dụng
được cho bài toán MLP với kích thước nhỏ hơn 40 đỉnh). Nhờ lời giải tối ưu có được, chúng
ta có thể đánh giá một cách chính xác hiệu quả của các thuật toán gần đúng trên các bộ dữ
liệu này. Ở khía cạnh khác, các bộ dữ liệu này cũng hỗ trợ đắc lực cho việc tiến hành thực
nghiệm xác định các thông số của các giải thuật metaheuristics


×