Bài toán tìm đường đi ngắn nhất trong nhà kho năm 2024
Bài toán tìm k đường đi ngắn nhất là một bài toán khá quan trọng, ở đây mình sẽ giới thiệu thuật toán Yen để giải quyết bài toán này. Giới thiệu Thuật toán Yen, là thuật toán tìm kiếm K đường đi ngắn nhất không lặp lại của đồ thị không tồn tại cạnh có trọng số âm. Thuật toán được phát minh bởi nhà khoa học Jin Y. Yen vào năm 1971. Ý tưởng Thuật toán lấy nền tảng từ đường đi ngắn nhất được tìm ra từ bất kỳ thuật toán tìm kiếm đường đi ngắn nhất, từ đó tìm kiếm K – 1 đường đi còn lại với độ lệch thấp nhất so với đường đi ngắn nhất được tìm thấy. Thuật toán được chia thành 2 quá trình thực hiện. Trước tiên thuật toán sẽ sử dụng bất kỳ giải thuật tìm kiếm đường đi ngắn nhất để tìm ra đường đi ngắn nhất đầu tiên (A1), sau đó thuật toán sẽ căn cứ vào kết quả đường đi ngắn nhất A1 để chọn tiếp tục K – 1 (A2…Ak) kết quả còn lại. Thuật toán sử dụng tập hợp A lưu trữ kết quả K đường đi ngắn nhất, tập hợp B để lưu trữ những kết quả có khả năng trở thành một trong những đường đi ngắn nhất thuộc tập hợp A. Để tìm lời giải cho đường đi Ak, thuật toán giả định ta đã tìm thấy K – 1 đường đi trước đó. Quá trình được thực hiện gồm 2 giai đoạn: giai đoạn 1, tìm kiếm tất cả cách đi có thể Ak-I. Giai đoạn 2, lựa chọn kết quả tốt nhất trở thành Ak, trong đó I từ 1 đến Qk-k. Giai đoạn một của quá trình tìm kiếm Ak được chia thành 3 bước cụ thể như sau:
Giai đoạn hai của quá trình tìm kiếm Ak. Lựa chọn kết quả tốt nhất hiện có của B và chuyển kết quả trở thành Ak, nếu K đã đạt được K-input ban đầu thì thuật toán kết thúc. Hoặc B rỗng thì thuật toán kết thúc do không thể tìm đủ K kết quả như mong muốn. Mã giải function YenKSP(Graph, source, sink, K):
Chương trình minh họaỞ đây, mình sử dụng thuật toán Yen cho một nút giao thông thực tế với 5011 điểm giao để tìm 10 đường đi ngắn nhất thì mất tầm hơn 2,6 giây. Đây là một kết quả có thể chấp nhận được. |