Đưa ra một số đoạn chuỗi, tôi muốn tìm chuỗi đơn ngắn nhất có thể ("chuỗi đầu ra") có chứa tất cả các đoạn. Các mảnh có thể chồng lên nhau trong chuỗi đầu ra.
Thí dụ:
Đối với các đoạn chuỗi:
BCDA
AGF
ABC
Chuỗi đầu ra sau đây chứa tất cả các đoạn và được tạo bằng cách nối thêm ngây thơ:
BCDAAGFABC
Tuy nhiên, chuỗi đầu ra này tốt hơn (ngắn hơn), vì nó sử dụng các lớp phủ:
ABCDAGF
^
ABC
^
BCDA
^
AGF
Tôi đang tìm kiếm các thuật toán cho vấn đề này. Nó không hoàn toàn quan trọng để tìm chuỗi đầu ra ngắn nhất, nhưng càng ngắn càng tốt. Tôi đang tìm kiếm một thuật toán tốt hơn thuật toán ngây thơ rõ ràng sẽ thử nối thêm tất cả các hoán vị của các đoạn đầu vào và loại bỏ các phần trùng lặp (có vẻ là NP-Complete).
Tôi đã bắt đầu thực hiện một giải pháp và nó tỏ ra khá thú vị; Tôi muốn xem những gì người khác có thể nghĩ ra. Tôi sẽ thêm công việc đang thực hiện vào câu hỏi này sau một thời gian.