Chuỗi siêu ngắn phổ biến nhất: tìm chuỗi ngắn nhất chứa tất cả các đoạn chuỗi đã cho


12

Đư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.


3
Vấn đề dường như là NP-đầy đủ. Nếu vậy, bạn sẽ không thể tìm thấy thuật toán đa thức để xác định chuỗi ngắn nhất, nhưng có thể có các thuật toán đa thức cung cấp các giải pháp gần đúng (không phải ngắn nhất có thể).
superM

3
Bài viết trên blog này về NP-đầy đủ là tốt đẹp: codinghorror.com/blog/2008/11/...
occulus

Blog thực sự rất hay, tôi đọc nó mọi lúc)))
superM

@superM điều này tương tự với nhân viên bán hàng du lịch (mỗi chuỗi một thành phố và chi phí giữa các thành phố = một số chồng chéo)
ratchet freak

@ratchet quái đản, đó là _ bạn có thể đưa ra chi phí nhỏ giữa các thành phố nếu chúng có nhiều chữ cái phổ biến hơn và chi phí lớn nhất khi chúng không có bất kỳ chữ cái chung nào
superM

Câu trả lời:


14

Những gì bạn đang hỏi là vấn đề Siêu chuỗi phổ biến ngắn nhất mà không có thuật toán nào hoạt động cho tất cả các trường hợp. Nhưng đó là một vấn đề phổ biến (trong quá trình nén và giải trình tự DNA) và một số thuật toán gần đúng đã được biết đến.

Các thuật toán "Tham lam" thường được chấp nhận là hiệu quả nhất (như trong trường hợp chúng có trường hợp xấu nhất tồi tệ nhất).

Hãy đọc các thuật toán xấp xỉ bằng giấy cho bài toán siêu chuỗi phổ biến ngắn nhất của Jonathan Turner để biết thêm thông tin.



Hmm, lưu ý rằng liên kết đầu tiên trong nhận xét của tôi chỉ ở trên siêu giải quyết và không phải là siêu liên kết! Một siêu kết quả dường như không yêu cầu tất cả các ký tự trong một chuỗi phải liền kề nhau.
Chiếm

Liên kết của bạn đã chết.
Majid
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.