Sai lầm
Trước hết, trong các nhận xét tôi đã mắc một vài lỗi: Cả hai tuyên bố ban đầu tôi đưa ra về xen kẽ và nhận xét "sửa" nó (hiện đã bị xóa) đều sai, và riêng tôi cho rằng việc thử tất cả các xen kẽ có thể phải mang lại một giải pháp tối ưu cũng sai (tôi đưa ra một ví dụ đơn giản dưới đây). Cuối cùng, đề nghị của tôi để thiết lậpx+=zj và lặp đi lặp lại, hoặc sử dụng tìm kiếm chùm tia, thực sự cũng không hữu ích: Bất kỳ câu trả lời nào có thể được tạo ra bằng cách thực hiện điều này và áp dụng DP của Aryabhata không bao giờ có thể tốt hơn sử dụng bản gốc x+, vì tất cả những gì nó làm là giảm kích thước của bộ giải pháp mà DP có thể chọn. Lấy làm tiếc! Hy vọng rằng phiên bản cải tiến dưới đây không có vấn đề gì nữa ...
Tôi cũng nhận thấy hai sai lầm trong DP của Aryabhata . May mắn là cả hai có thể dễ dàng sửa chữa (xem bình luận của tôi về bài đăng đó).
Một giải pháp heuristic sử dụng xen kẽ ngẫu nhiên
Nếu bạn không cần hoàn toàn ngắn nhất, bạn có thể sử dụng thực tế là, nếu một chuỗi s là một phần sau của một số x−i, sau đó nó cũng là một chuỗi của tất cả các chuỗi xen kẽ có thể có của tất cả các chuỗix−i. Xoay cái này đi, nếus không phải là một chuỗi của một chuỗi xen kẽ cụ thể của tất cả các chuỗi x−i, sau đó nó không phải là một con của bất kỳ cá nhân nàox−i.
Vì vậy, bạn có thể thử nhiều cách khác nhau để xen kẽ ngẫu nhiên n dây x−i thành một chuỗi duy nhất và cho mỗi chuỗi xen kẽ như vậy yj, tìm kiếm đoạn ngắn nhất zj của x+ tránh được việc là một yjsử dụng thuật toán DP đẹp của Aryabhata cho trường hợp hai chuỗi và chọn bất kỳzj là ngắn nhất trong tất cả các xen kẽ bạn đã thử.
Hãy cẩn thận: Không đảm bảo sự tối ưu ngay cả khi chúng tôi thử tất cả các xen kẽ
Đáng ngạc nhiên (ít nhất là với tôi), ngay cả khi bạn lặp lại quy trình trên cho tất cả các xen kẽ có thể, bạn không được đảm bảo để tìm giải pháp tối ưu: Hãy xem xét trường hợp trong đó x+=aaa, n=2và x−1=x−2=a. Sau đóaa là một giải pháp tối ưu với chiều dài 2, nhưng giải pháp ngắn nhất được tìm thấy bằng cách thử tất cả các xen kẽ của x−1 và x−2 Là aaa, với chiều dài 3.