
497
MÔ HÌNH QUI HOẠCH TUYẾN TÍNH
CHO BÀI TOÁN ĐƯỜNG ĐI NGẮN NHẤT CÓ RÀNG BUỘC
Bùi Thanh Khiết 1
1. Ban Đề án Chuyển đổi số, Trường Đại học Thủ Dầu Một
TÓM TẮT
Bài toán đường đi ngắn nhất được nghiên cứu và áp dụng rộng rãi từ khi nó được ra đời.
Cho tới nay có nhiều biến thể từ bài toán đường đi ngắn nhất gốc, đa phần đường đi ngắn nhất
sẽ có thêm nhiều ràng buộc làm cho bài toán trở nên phức tạp. Để giải quyết bài toán đường
đi ngắn nhất có ràng buộc đã có nhiều đề xuất thuật toán để giải quyết nhưng đa phần đều
dành riêng cho từng ràng buộc cụ thể. Trong bài báo này, chúng tôi trình bày phương pháp mô
hình hóa bài toán đường đi ngắn nhất có ràng buộc dựa trên mô hình qui hoạch tuyến tính.
Theo đó, việc thêm ràng buộc cho bài toán sẽ đơn giản và linh hoạt có thể đáp ứng việc tìm
đường đi ngắn nhất thõa các ràng buộc như bắt buộc đi qua một số đỉnh trong đồ thị hoặc bắt
buộc không đi qua một số đỉnh trong đồ thị hoặc ràng buộc đường đi ngắn nhất bao gồm/không
bao gồm một đường con cho trước. Chúng tôi đã cài đặt thực nghiệm trên công cụ nguồn mở
LP Solve IDE, kết quả cho thấy các ràng buộc cho bài toán được xây dựng tùy biến để tìm
nghiệm của bài toán.
Từ khoá: đường đi ngắn nhất, quy hoạch tuyến tính.
1. GIỚI THIỆU
Bài toán đường đi ngắn nhất (shortest path problem – viết tắt SPP) từ một đỉnh đến tất cả
các đỉnh là một trong số những bài toán tối ưu trên đồ thị và được ứng dụng rộng rãi trong thực
tế. Giải quyết bài toán này giúp chúng ta tìm kiếm phương án tiết kiệm nhất về chi phí, thời
gian, quãng đường có thể áp dụng trong giao thông, lập lịch thi công, … Để giải quyết bài toán
này nhà khoa học máy tính người Hà Lan Edsger Dijkstra đã đề xuất thuật toán Dijkstra[1].
Thuật toán có độ phức tạp là O(n2). Tuy nhiên trong thực tế, bài toán đường đi ngắn nhất lại
phát sinh thêm nhiều nhu cầu từ người dùng, họ cần nhiều lựa chọn hơn cho đường đi. Đã có
nhiều nghiên cứu mở rộng bài toán SPP gốc, các biến thể của bài toán SPP gốc đa số được mở
rộng bằng cách thêm vào ràng buộc (gọi tắt là cSPP) [2]. Ví dụ trên đường đi cần phải bao gồm
có một số nút được chỉ định trước hoặc chỉ định trước số lượng nút [3] hoặc đường đi không
bao gồm những đường bị cấm cho trước [4, 5] hoặc đường đi từ hai đỉnh cho trước phải chứa
tất cả các đỉnh của đồ thi (bài toán phủ đỉnh) – bài toán phủ đỉnh có ý nghĩa trong vấn đề phân
cấp mạng, định tuyến [6, 7]. Bài toán đường đi ngắn nhất có ràng buộc trong trường hợp tổng
quát là bài toán thuộc lớp NP-Hard [8]. Năm 1980, Handler và đồng nghiệp đã đề xuất thuật
toán cho bài toán đường đi có ràng buộc, theo đó thuật toán được phát triển dựa trên Lagrangian
ralaxation để tìm hai tìm đường đi ngắn nhất giữa hai nút trong mạng đồng thời thõa mãn ràng
buộc kiểu Knapsack [9]. Năm 1988, Desrochers và đồng nghiệp đề xuất thuật toán dựa trên gán
nhãn cho tài nguyên và sử dụng luật Dominace cho những nhãn ứng viên [10][11] – được xem
như mở rộng của thuật toán Bellman–Ford. Năm 1996, Jaumard đề xuất mô hình quy hoạch
động cho vấn đề đường đi ngắn nhất ràng buộc tài nguyên hai pha trong đồ thị phi chu trình