Tải bản đầy đủ (.pdf) (132 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 problemMLP)

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 (3.84 MB, 132 trang )

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.

Hà Nội, 04-2014
Người hướng dẫn khoa học

Tác giả luận án

PGS.TS. Nguyễn Đức Nghĩa

Ban Hà Bằng

i


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 q 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 q trình học tập và hồ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 q 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 q báu từ các
Thầy Cơ và các bạn.



ii


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 TỐN ...........................................................1

1.1 Mơ hình tốn học của bài tố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 tố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 tố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 Thuật toán của Wu et al. ................................................................... 22
2.2 Lược đồ thuật toán đề xuất ................................................................ 23
2.3 Kết quả thực nghiệm .......................................................................... 28
2.3.1 Thực nghiệm bộ dữ liệu ngẫu nhiên........................................ 30
2.3.2 Thực nghiệm bộ dữ liệu thực ................................................... 31
2.4 Kết luận chương 2 ............................................................................... 37
iii


CHƢƠNG 3 CÁC THUẬT TOÁN GẦN ĐÚNG CẬN TỶ LỆ ...............................38

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ệ ....................................................................................................... 39
3.1.1 Các thuật toán gần đúng cận tỷ lệ ........................................... 39
3.1.2 Kết quả thực nghiệm .................................................................. 47
3.2 Thuật toán dựa trên phương pháp Subgradient ........................... 55
3.2.1 Lược đồ thuật toán ..................................................................... 55
3.2.2 Kết quả thực nghiệm .................................................................. 60
3.3 Kết luận chương 3.......................................................................... 67
CHƢƠNG 4 CÁC THUẬT TỐN META-HEURISTIC........................................68

4.1. Thuật tốn di truyền ........................................................................... 69
4.1.1 Lược đồ của thuật toán .............................................................. 69
4.1.2 Kết quả thực nghiệm ................................................................. 74
4.2 Thuật toán di truyền lai ghép đàn kiến ............................................. 85
4.2.1 Lược đồ của thuật toán .............................................................. 86
4.2.2 Kết quả thực nghiệm .................................................................. 91

4.3 Thuật toán lai thuật toán Tabu và thuật toán lân cận biến đổi ..... 98
4.3.1 Lược đồ của thuật toán .............................................................. 98
4.3.2 Kết quả thực nghiệm ................................................................ 106
4.4 Kết luận chương 4 ............................................................................ 114
KẾT LUẬN .....................................................................................................115
DANH MỤC CÁC CƠNG TRÌNH ......................................................................118
CƠNG BỐ ĐƢỢC SỬ DỤNG TRONG LUẬN ÁN ............................................118
TÀI LIỆU THAM KHẢO ....................................................................................119

iv


TĨM TẮT
Bài tố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 tốn cực tiểu hóa độ trễ MLP 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 tố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
tố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 tốn tìm
kiếm thơng tin, bài tố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 tốn
MLP đã được cơng bố. Đối với một bài tốn NP-khó như bài tốn MLP, hiện tại có ba hướng
tiếp cận chính để phát triển thuật tố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 tốn MLP với kích thước
bài tố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 tố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
tố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 tố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 tố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).
v


Để đá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.

vi


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


Ant conoly optimization

Tối ưu hoá đàn kiến

1

ACO

2

ACO-GA

3
4
5

GA
TS
VNS

6

TS-VNS

7
8
9
10


MLP
TSP
TRP
DMP

11

TDTSP

12

DP

13
14
15
16
17

B&B
CP

18

GRASP

19

ILS


20

RVND

21

k-MST

k-minimum spanning tree

22

k-troll

Minimum k-troll problem

23

PCST

24

-

Genetic algorithm
Tabu search
Variable neighborhood search

-


Minimum latency problem
Traveling salesman problem
Traveling repairman problem
Delivery man problem
Time dependent traveling
Salesman pproblem
Dynamic programming
Branch and bound
Constraint programming
Approximation algoirthm
Simulated annealing algorithm
Local search
Greedy randomized adaptive
search procedure
Iterated local search
Random variable neighborhood
descend

25
26

OPT

Prize collecting steiner tree
Polynomial time algorithm
(Polynomial algorithm)
Benchmark test
Best known solution

27


SDT

Social disaster technique

vii

Thuật toán di truyền lai ghép thuật
toán đàn kiến
Thuật tốn di truyền
Tìm kiếm Tabu
Tìm kiếm lân cận biến đổi
Thuật toán tabu lai ghép thuật toán
đa lân cận
Bài tốn cực tiểu hóa độ trễ
Bài tốn người du lịch
Bài toán thợ sửa chữa lưu động
Bài toán người giao hàng
Bài toán người du lịch với thời gian
bị chặn
Quy hoạch động
Phương pháp nhánh cận
Quy hoạch ràng buộc
Thuật toán gần đúng
Thuật toán phỏng tơi luyện
Tìm kiếm địa phương
Thủ tục tìm kiếm tham lam ngẫu
nhiên tự thích nghi
Tìm kiếm địa phương leo đồi
Tụt lân cận biến đổi ngẫu nhiên

Bài toán cây khung nhỏ nhất đi qua
k đỉnh
Bài tốn hành trình ngắn nhất đi qua
k đỉnh
Bài tốn cây Steiner
Thuật tốn thời gian tính đa thức
Bộ dữ liệu chuẩn
Lời giải tốt nhất hiện biết
Kỹ thuật hủy diệt


DANH MỤC BẢNG
Bảng 1. 1 Mô tả các bộ dữ liệu ................................................................................................ 15
Bảng 2. 1 Thời gian chạy của thuật tốn trong bộ dữ liệu ngẫu nhiên 1 (tính theo phút) ....... 32
Bảng 2. 2 Thời gian chạy của thuật tốn trong bộ dữ liệu ngẫu nhiên 2 (tính theo phút) ....... 33
Bảng 2. 3 Thời gian chạy của thuật tốn trong bộ dữ liệu thực 2 (tính theo phút) .................. 34
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) ................................................................................................................. 35
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) ................................................................................................................. 36
Bảng 2. 6 Thời gian chạy của thuật toán cho các file dữ liệu nhỏ trong ................................. 36
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ỏ ................................ 51
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) .... 52
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) .. 53
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 ..................................... 54
Bảng 3. 5 Kết quả thực nghiệm cho các bộ dữ liệu nhỏ .......................................................... 63
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) ............................ 64
Bảng 3. 7 Mô tả gap1 , gap 2 đối với các bộ dữ liệu nhỏ .......................................................... 64
Bảng 3. 8 Mô tả T đối với các bộ dữ liệu nhỏ .......................................................................... 64
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) .......................... 65

Bảng 3. 10 Kết quả thực nghiệm với bộ dữ liệu thực 1 ........................................................... 66
Bảng 3.11 Mô tả gap1 , gap 2 đối với các bộ dữ liệu lớn .......................................................... 66
Bảng 3. 12 Mô tả T đối với các bộ dữ liệu lớn ........................................................................ 66
Bảng 4. 1 Thực nghiệm lựa chọn kích thước quần thể ............................................................ 76
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 ................................ 76
Bảng 4. 3 Thực nghiệm lựa chọn kích thước nhóm ................................................................. 76
Bảng 4. 4 Thực nghiệm lựa chọn tỷ lệ  1 ............................................................................... 77
Bảng 4. 5 Thực nghiệm xác định giá trị NGD ......................................................................... 77
Bảng 4. 6 Thực nghiệm xác định giá trị NGT .......................................................................... 77
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ỏ ................................... 81
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) .... 82
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) .. 82
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) 83
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 ................................... 84
Bảng 4. 12 Mô tả T theo phút đối với các bộ dữ liệu lớn ........................................................ 84
Bảng 4. 13 Kết quả thực nghiệm của các thuật toán ................................................................ 92
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ỏ .................................. 94
viii


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) .......... 95
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) ........ 95
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) ........ 96
Bảng 4. 18 Kết quả so sánh các thuật toán cho bộ dữ liệu thực 2 ........................................... 97
Bảng 4. 19 Mô tả T đối với các bộ dữ liệu lớn ......................................................................... 97
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ỏ ............................... 109
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)
............................................................................................................................. 110
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)
............................................................................................................................. 110

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-200Rx)....................................................................................................................... 111
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-500Rx)....................................................................................................................... 111
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 ................................. 112
Bảng 4. 26 So sánh độ lệch chuẩn độ trễ lời giải của các thuật tốn ..................................... 113
Bảng 4. 27 Mơ tả T đối với các bộ dữ liệu lớn ...................................................................... 113
Bảng 5. 1 Tổng hợp các thuật toán đề xuất ............................................................................ 117

ix


DANH MỤC HÌNH VẼ
Hình 1. 1 Minh họa bài tốn MLP trên cây có trọng số............................................................. 3
Hình 1. 2 Minh họa bài tố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 ................ 29
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 ................ 29
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 ................ 29
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
................................................................................................................................. 29
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 . 30
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 .................. 30
Hình 3. 1 Hình vng (bounding box) bao phủ các đỉnh......................................................... 45
Hình 3. 2 Phân chia ơ vng và quadtree tương ứng ............................................................... 45
Hình 3. 3 Tập các portal ........................................................................................................... 46
Hình 3. 4 Minh họa crossing đi qua các portal ........................................................................ 46
Hình 3. 5 Cận tỷ lệ thực nghiệm trung bình của các thuật tốn đối với các bộ dữ liệu nhỏ .... 49
Hình 3. 6 Cận dưới trung bình của các thuật tốn đối với các bộ dữ liệu nhỏ......................... 49
Hình 3. 7 Thời gian chạy trung bình của các thuật tốn đối với các bộ dữ liệu nhỏ ............... 49
Hình 3. 8 Cận tỷ lệ trung bình của các thuật tốn đối với các bộ dữ liệu lớn .......................... 49

Hình 3. 9 Thời gian chạy trung bình của các thuật tốn đối với các bộ dữ liệu lớn ................ 50
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ệ ........................................................................ 78
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ệ ........................................................................ 78
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ệ..................................................................... 78
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 ..................... 108

x


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 = (cij) sau đây:

0
12

 40
C

10
9

10

12 40 10

9

0

19 12 70

19

0

12 21

21 60
0

10

70 60 10

0

15 17 16 10


16 
15 

17 

16 
10 

0

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 tốn vừa phát biểu là một ví dụ về bài tốn cực tiểu hóa độ trễ.
Bài tố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

1


TDTSP, 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 tố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 tố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 tố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 hố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 hố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 tố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 tố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 tốn bộ phận có mối liên hệ với
các bài tốn bộ phận khác, nên ta khó có thể tìm được cách chia bài tốn cần giải ra thành các
bài tố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 tố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 tố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 tốn tìm kiếm thơng tin, bài tố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 tốn MLP được chứng minh thuộc lớp bài tố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 tốn giải được bởi
thuật tố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 tốn học của bài tốn cực tiểu hóa độ trễ
Bài tố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

2



1
1

1
7

2
2

1

2

4

4

3
3

8

5

5

9


6

Hình 1. 1 Minh họa bài tốn MLP trên cây có trọng số

5

4

3

2

1

7

8

9

Hình 1. 2 Minh họa bài tố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 tố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 tốn MLP trên một số dạng đồ
thị đặc biệt:
Ví dụ 1: Xét bài tố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.

3


Ví dụ 2: Xét bài tố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 tố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 tốn đó giải
bài tố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 tốn Floyd-Warshall, ta có f(n) = O(n3)).
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 tốn MLP trong trường hợp đồ thị
metric. Bài tốn MLP có thể phát biểu như sau: Cho đồ thị đầy đủ Kn với tập đỉnh V = {1, 2,
…, n} và ma trận chi phí khơng âm C = {cij | i, j=1, 2, …, n}, với cij là khoảng cách giữa hai

đỉnh i và j. Giả sử, T = (v1, v2, …, vn) là một hành trình xuất phát từ v1 (đường đi xuất phát từ
v1 đi qua mỗi đỉnh của đồ thị đúng một lần) trên Kn. Ký hiệu P(v1, vk) là đoạn đường đi từ v1
đến vk trên hành trình T. Ta gọi độ trễ của đỉnh vk trên hành trình T, ký hiệu bởi lat(vk), là độ
dài của đường đi P(v1, vk):
k 1

lat (vk )   c(vi , vi 1 ), k  2, 3, ..., n.
i 1

Độ 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ó:
n

L(T )   lat (vk ).
k 2

Giả sử, v1 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ừ v1 với độ trễ là nhỏ
nhất.
4


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 tốn thuộc lớp NP – khó như bài tố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 tốn sau đây:
 Phát triển thuật tố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 tố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 tố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 tốn phỏng tơi luyện
(Simulated annealing algorithm) [19], thuật tố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 tố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 tốn trên mơ hình bài tố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 = (x1, x2, ..., xn)  A1 × A2 × ... × An: x thoả mãn tính chất P},
trong đó A1, A2, ..., An là các tập hữu hạn và P là tính chất cho trên tích Đề–các A1 × A2 × ... ×
An. 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.

5


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 tố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 S1  a11 , a12 ,..., a1n 
1

những phần tử của tập A1 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 n1 tập con được mơ tả trong Hình 1.3. Ở đây, ta ký hiệu

D(a1i )  {x  D : x1  a1i }, i  1, 2, ..., n1 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 = D (a11 )  D ( a12 )  ...  D ( a1n1 ) .
Như vậy, ta có thể đặt tương ứng mỗi phương án bộ phận cấp k (a1, a2, ..., ak) với một tập con
các phương án của bài toán:
D(a1, ..., ak) = {x  D: xi = ai , 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 (a1, a2, ..., ak)
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ử a1k 1 ,..., akp1 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 = D (a11 )  D ( a12 )  ...  D ( a1n1 ) .
Như vậy, ta có thể đặt tương ứng mỗi phương án bộ phận cấp k (a1, a2, ..., ak) với một tập con
các phương án của bài toán:
D(a1, ..., ak) = {x  D: xi = ai , i = 1,..., k}

()D

-

𝐷(𝑎11 )

𝐷(𝑎12 )
Hình 1. 3 Quá trình phân nhánh


6


𝐷(𝑎1 , 𝑎2 , … , 𝑎𝑘 ) = *𝑥 ∈ 𝐷: 𝑥𝑖 = 𝑎𝑖 , 𝑖 = 1, … , 𝑘+

𝑝

1
𝑎𝑘+1

𝑎𝑘+1

𝑝

𝐷(𝑎1 , 𝑎2 , … , 𝑎𝑘 , 𝑎𝑘+1 )

1
𝐷(𝑎1 , 𝑎2 , … , 𝑎𝑘 , 𝑎𝑘+1
))

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 (a1, a2, ..., ak)
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ử a1k 1 ,..., akp1 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(a1, …, ak) được thực hiện như sau: Ta có
phân hoạch: D (a1 , ..., ak ) 

p


D( a1,..., ak , aki 1 ) . Thay biểu diễn của D(a1, …, ak) vào chỗ của

i 1

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(a1,..., ak) ≤ min{f(x): x  D, xi = ai, 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 (a1, a2, ..., ak) 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(a1,..., ak) = {x  D: xi = ai, i = 1,..., k},
nghĩa là g(a1, a2, ..., ak) là cận dưới cho giá trị hàm mục tiêu trên tập D(a1, a2, ..., ak). Vì lẽ
đó, hàm g được gọi là hàm cận dưới và giá trị g(a1, a2, ..., ak) được gọi là cận dưới của tập
D(a1, a2, ..., ak). Do có thể đồng nhất tập D(a1, a2, ..., ak) với phương án bộ phận (a1, a2, ...,
ak), nên ta cũng gọi giá trị g(a1, a2, ..., ak) là cận dưới của phương án bộ phận (a1,..., ak).
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 tốn quay lui. Trong q trình liệt kê các

7


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 tốn 1.2. Branch (k)
1. BEGIN
2.
for ak  Ak do
3.
if (ak  Sk) then
4.
xk := ak;
5.
if (k == n) then < Cập nhật kỉ lục>
6.
else
7.
If (g(x1,..., xk) ≤ 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à f  f (x) . Ta sẽ gọi x là
phương án tốt nhất hiện có và f là kỉ lục. Giả sử đã có f , khi đó nếu
g(a1, a2, ..., ak) > f
thì từ bất đẳng thức (1.1) suy ra f < g(a1, a2, ..., ak) ≤ min{f(x): x  D(a1, a2, ..., ak)}. Vì thế
tập D(a1, a2, ..., ak) chắc chắn khơng chứa phương án tối ưu và có thể loại bỏ khỏi q trình
duyệt. Lược đồ của thuật tốn nhánh cận được trình bày chi tiết ở Thuật tố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 tố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 tố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

8


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 qt của thuật tốn đàn kiến
1.
2.
3.
4.
5.
6.
7.
8.
9.

BEGIN
Khởi tạo thơng tin vết mùi τ;
while (Điều kiện kết thúc chưa thỏa) do
Khởi tạo cá thể kiến Tk; //Tk là cá thể kiến ở vịng lặp thứ k
Cho Tk dị đường dựa trên thơng tin vết mùi τ;
Cập nhập thông tin vết mùi τ do cá thể Tk để lại;
end while

Đưa ra lời giải tốt nhất;
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 so;
3.
s = so; s* = so;
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
s  N s (là lân cận của s):
7.
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.
st  m ( s ); s  st;
12.
13.
if ( ( f ( st)  f ( s* )) s*  st;
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
9


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.
2.
3.
4.

BEGIN
T *  ;
//thực hiện lần lượt k thuật toán lận cận
for i =1 to k do
T   arg minT N (T ) L(T )

5.
6.
if ((L( T ' ) < L( T * )) then
T *  T '; T ←T ';
7.

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

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 tố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. Tốn tử lai ghép và tốn tử đột biến đóng một vai trị quan
trọng trong thuật tốn di truyền. Mục đích của tố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 đó, tốn tử đột biến giúp cho quần thể đa dạng hơn. Mã
giả của thuật tốn di truyền được trình bày trong Thuật tốn 1.3.
1.2.3 Thuật tốn đàn kiến
Thuật tố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 tố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 tố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

10


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 tố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 tốn 1.5.
1.2.5 Thuật tố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 tốn VNS, ta ln ghi nhận lời giải tốt nhất (kỉ
lục). Khi thực hiện một thuật tố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 tốn được trình bày trong Thuật tố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 tố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 tố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(n2) [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(n2) [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(nk)
(với k là một hằng số cho trước) [49].

11


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 tốn hiện biết ra thành ba nhóm chính: Các thuật tốn
đúng, các thuật tố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 tốn đúng
Các thuật tố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 tố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 tốn MLP. Sau đó, Wu et al. [50] phát triển thuật tố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 tốn MLP với kích thước lên đến
26 đỉnh. Tuy nhiên, hiệu quả của thuật tố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 algorithm) 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 tố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 tốn gần đúng với cận tỷ

12


lệ β cho bài toán k-MST (k = 2, 3, ..., n), thì ta có thuật tốn gần đúng với cận tỷ lệ 8×β cho
bài tố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 tố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
tốn gần đúng cho bài tố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 tố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 tốn giải bài tố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 tốn k-troll cũng khó tương
tự như bài tốn k-MST, bởi vậy họ đưa ra thuật tốn cho bài tố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 tố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 tố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 tốn có độ phức tạp thời gian thường khơng q
lớn, nhưng chất lượng lời giải tìm được bởi các thuật tốn này chỉ có thể đánh giá thơng qua
thực nghiệm. Thuật tốn meta-heuristic thường áp dụng hiệu quả cho các bài tốn tối ưu hóa
tổ hợp như bài tố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ả

13


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 tốn MLP là bài tố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 tố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 tốn

đúng tìm lời giải tối ưu thường có độ phức tạp tính tố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 tốn đúng cũng chỉ có thể giải bài tố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 q 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 tốn có độ phức tạp tính tố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 tốn MLP, nhưng chất lượng lời giải
tìm được bởi các thuật tố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 tốn cực tiểu hóa độ trễ, là một bài tố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 tố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
tố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 tố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 tốn MLP đã được cơng bố. Tuy nhiên, hiệu quả của các thuật tốn này 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

14


nghiệm để đánh giá hiệu quả thực tế của các thuật tố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 tốn

MLP, chúng tơi đề xuất thuật tố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
tố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 tố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 tốn, chúng tơi đề xuất hai
thuật tố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 tố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 tốn thực
nghiệm theo các thuật tốn đề xuất được so sánh với kết quả tính tố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 tốn MLP nói riêng và
các bài tố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 đó ngồ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 tố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 tố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.
Một bộ dữ liệu chuẩn thường bao gồm các file dữ liệu, mỗi file chứa thơng tin về một
bài tốn cụ thể cần giải. Nếu thơng tin trong file mơ tả bài tốn kích thước lớn (nhỏ) thì để

đơn giản, ta sẽ gọi là file dữ liệu lớn (nhỏ). Ở đây, dựa vào giá trị của n (số đỉnh trong một

15


×