Superstring Umum Terpendek: menemukan string terpendek yang berisi semua fragmen string yang diberikan

12

Diberikan beberapa fragmen string, saya ingin mencari string tunggal yang sesingkat mungkin ("string keluaran") yang berisi semua fragmen. Fragmen dapat saling tumpang tindih dalam string output.

Contoh:

Untuk fragmen string:

BCDA
AGF
ABC

String output berikut berisi semua fragmen, dan dibuat oleh penambahan naif:

BCDAAGFABC

Namun string output ini lebih baik (lebih pendek), karena mempekerjakan tumpang tindih:

ABCDAGF
^
ABC
 ^
 BCDA
    ^ 
    AGF

Saya mencari algoritme untuk masalah ini. Tidak sepenuhnya penting untuk menemukan string keluaran yang paling pendek, tetapi semakin pendek semakin baik. Saya mencari algoritma yang lebih baik daripada yang naif yang akan mencoba menambahkan semua permutasi dari fragmen input dan menghapus tumpang tindih (yang tampaknya NP-Lengkap).

Saya sudah mulai mengerjakan solusi dan terbukti cukup menarik; Saya ingin melihat apa yang mungkin muncul dari orang lain. Saya akan menambahkan pekerjaan saya dalam proses untuk pertanyaan ini sebentar lagi.

occulus
sumber
3
Masalahnya tampaknya NP-lengkap. Jika demikian, Anda tidak akan dapat menemukan algoritma polinomial untuk menentukan string terpendek sama sekali, tetapi mungkin ada algoritma polinomial yang memberikan solusi perkiraan (bukan yang sesingkat mungkin).
superM
3
Posting blog ini tentang NP-Complete bagus: codinghorror.com/blog/2008/11/…
occulus
Blognya sangat bagus, saya membacanya sepanjang waktu)))
superM
@superM ini cukup mirip dengan penjual keliling (setiap string kota dan biaya antar kota = beberapa angka tumpang tindih)
ratchet freak
@ scratchet freak, adalah _ Anda bisa memberikan biaya kecil antar kota jika mereka memiliki surat yang lebih umum, dan biaya terbesar ketika mereka tidak memiliki surat biasa sama sekali
superM

Jawaban:

14

Apa yang Anda tanyakan adalah masalah Shortest Common Superstring, yang tidak ada algoritma yang berfungsi untuk semua kasus. Tetapi ini adalah masalah umum (dalam kompresi dan sekuensing DNA) dan beberapa algoritma aproksimasi sudah terkenal.

Algoritma "serakah" umumnya diterima sebagai yang paling efektif (seperti, mereka memiliki kasus terburuk paling buruk).

Bacalah makalah Algoritma Aproksimasi untuk Masalah Superstring Terpendek oleh Jonathan Turner untuk informasi lebih lanjut.

pdr
sumber
Hmm, perhatikan bahwa tautan pertama dalam komentar saya tepat di atas alamat supersequences dan bukan superstring! Supersequence tampaknya tidak mengharuskan semua karakter secara berurutan bersebelahan.
occulus
Tautan Anda mati.
Majid