Như đã trình bày ở phần trước, các thuật toán đưa ra lời giải chính xác đều có độ phức tạp tính toán rất cao, đòi hỏi nhiều tài nguyên để tính toán. Việc để một người dùng phổ thông tiếp cận đến lời giải của những bài toán như bài toán người du lịch là không thực tế. Trong khi đó, có rất nhiều vấn đề thực tế liên quan đến bài toán người du lịch. Vì vậy, những nhà nghiên cứu đã đi theo một hướng khác. Đó là phát triển những thuật toán xấp xỉ, hiệu quả và có nhiều ứng dụng thực tế hơn. Thay vì cố gắng tìm cho ra lời giải tốt nhất, một điều gần như không thể, các thuật toán này cố gắng tìm ra những lời giải chấp nhận được trong thời gian đa thức.
Thuật toán láng giềng gần nhất (NN – Nearest Neighbor) là một trong những thuật toán đầu tiên được dùng để tìm lời giải cho bài toán người bán hàng (bài toán người du lịch), và thường cho kết quả chênh lệch trong phạm vi 25% so với đường đi tối ưu [9]. Thuật toán này chạy nhanh hơn rất nhiều so với việc kiểm tra mọi tuyến đường và một số thuật toán khác. Tuy nhiên, vẫn còn tồn tại nhiều bản dữ liệu phân phối thành phố sắp xếp đặc biệt làm cho thuật toán láng giềng gần
29
đưa ra lời là các tuyến đường tồi tệ nhất (Gutin, Yeo và Zverovich, 2002) [4]. Điều này đúng cho cả TSPs bất đối xứng và đối xứng (Gutin và Yeo, 2007).
Các thuật toán heuristic dựa trên cấu trúc cây khung nhỏ nhất thường có kết quả không quá hai lần kết quả tốt nhất. Thuật toán nổi tiếng nhất là thuật toán của Christofides, được giới thiệu ở CSE4101, có tỉ lệ ước lượng 3/2 [12]. Thuật toán này tìm cách kết nối các đỉnh có bậc lẻ của cây khung nhỏ nhất. Một thuật toán khác sử dụng cây khung nhỏ nhất là thuật toán Double-MST [12]. Thuật toán này yêu cầu liệt kê cây khung nhỏ nhất theo thứ tự trước. Thuật toán này đã được chứng minh trong [21] là kết quả không lớn hơn quá 2 lần so với kết quả tốt nhất.
Thuật toán trao đổi cặp cạnh hay còn gọi là 2-opt thực hiện loại bỏ hai cạnh và thay bằng hai cạnh khác kết nối hai vùng tạo bởi hai cạnh vừa bị loại bỏ tạo thành một chu trình ngắn hơn. Thuật toán này được tổng quát hóa thành thuật toán k-opt, hay còn gọi là thuật toán Lin–Kernighan [21]. Thuật toán k-opt thực hiện xóa bỏ k cạnh rời rạc, nghĩa là các cạnh không có chung điểm đầu và điểm cuối, sau đó lắp ráp các phần của chu trình vào thành một chu trình mới. Thuật toán k-opt là một trường hợp đặc biệt của thuật toán v-opt. Trường hợp phổ biến nhất của thuật toán k-opt là thuật toán 3-opt, được giới thiệu bởi Shen Lin và Dell Labs năm 1965. Thuật toán v-opt, hay còn gọi là opt biến thiên, là trường hợp tổng quát của k-opt. Trong khi thuật toán k-opt loại bỏ một số lượng cạnh cố định (k), thì thuật toán v- opt không cố định số cạnh sẽ bị loại bỏ. Thay vào đó, thuật toán sẽ tăng dần số cạnh bị loại bỏ trong quá trình tìm kiếm.
Nhà nghiên cứu trí tuệ nhân tạo Marco Dorigo đã mô tả một phương pháp heuristic vào năm 1993 tạo ra "giải pháp tốt" cho TSP sử dụng mô phỏng của một đàn kiến hay còn gọi là ACS (Ant Colony System) [11]. Thuật toán mô phỏng hành vi của đàn kiến được quan sát trong thực tế để tìm con đường ngắn giữa nguồn thức ăn và làm tổ của chúng. Năm 2007, thuật toán dựa trên học thuyết tối ưu hóa bầy đàn (PSO) cho bài toán TSP được trình bày và so sánh với các thuật toán hiện có để giải quyết bài toán. Tác giả đã chứng minh rằng kích thước lớn hơn của bài toán
30 được giải quyết khi sử dụng thuật toán được đề xuất [22]. Năm 2011, Ivan Brezina J.r thảo luận về tối ưu hóa đàn kiến (ACO), thuộc nhóm các kỹ thuật tiến hóa và trình bày các phương pháp được sử dụng trong ứng dụng của ACO cho TSP [8].
Năm 1997, Rong Yang giới thiệu một số toán tử di truyền đã đưa giải thuật di truyền hướng tới chất lượng các lời giải tốt hơn và không mắc phải cực trị địa phương sớm. Giải thuật áp dụng một phép lai tham lam và hai toán tử đột biến tiên tiến dựa trên 2-opt và 3-opt heuristics [20]. Năm 2005, Lawrence V.Snyder trình bày một heuristic để giải quyết bài toán người du lịch tổng quát. Phương thức này kết hợp một thuật toán di truyền (GA) với heuristic cải tiến các tour địa phương. Giải pháp được mã hóa sử dụng khóa ngẫu nhiên, phá vỡ các vấn đề gặp phải khi sử dụng bảng mã hóa GA truyền thống. Thuật toán thực hiện khá tốt khi thử nghiệm trên tập 41 bộ dữ liệu cơ bản với giá trị mục tiêu tối ưu đã được biết trước [10].
31
CHƯƠNG 3 - GIẢI THUẬT DI TRUYỀN GIẢI BÀI TOÁN NGƯỜI DU LỊCH