En Kısa Ortak Süper Dize: verilen tüm dize parçalarını içeren en kısa dizeyi bulun


12

Bazı dize parçaları göz önüne alındığında, tüm parçaları içeren mümkün olan en kısa tek dize ("çıkış dizesi") bulmak istiyorum. Parçalar çıktı dizesinde birbiriyle çakışabilir.

Misal:

Dize parçaları için:

BCDA
AGF
ABC

Aşağıdaki çıktı dizesi tüm parçaları içerir ve naif eklenerek yapılmıştır:

BCDAAGFABC

Bununla birlikte, bu çıkış dizesi çakışma kullandığından daha iyidir (daha kısa):

ABCDAGF
^
ABC
 ^
 BCDA
    ^ 
    AGF

Bu sorun için algoritmalar arıyorum. Kesinlikle en kısa çıktı dizesini bulmak kesinlikle önemli değildir, ancak daha kısa olan daha iyidir. Ben giriş fragmanlarının tüm permütasyonları ekleme ve (ki NP-Complete gibi görünecektir) çakışma kaldırarak açık naif bir daha iyi bir algoritma arıyorum.

Bir çözüm üzerinde çalışmaya başladım ve bu oldukça ilginç; Başkalarının neler yapabileceğini görmek istiyorum. Bir süredir bu soruya devam eden çalışmamı ekleyeceğim.


3
Sorun NP-tam gibi görünüyor. Öyleyse, en kısa dizeyi belirlemek için bir polinom algoritması bulamazsınız, ancak yaklaşık (mümkün olan en kısa değil) çözümler veren polinom algoritmaları olabilir.
superM

3
NP-Complete ile ilgili bu blog yazısı güzel: codinghorror.com/blog/2008/11/…
occulus

Blog gerçekten güzel, her zaman okuyorum)))
superM

@superM Bu, seyahat eden satıcıya yeterince benziyor (her bir şehir bir şehir ve şehirler arasındaki maliyet = bir miktar örtüşme)
cırcır ucube

@ratchet ucube, daha fazla ortak harfleri varsa şehirler arasında küçük bir maliyet ve hiç ortak bir harfleri olmadığında en büyük maliyet
verebilirsiniz

Yanıtlar:


14

Sorduğunuz şey, tüm durumlar için çalışan bir algoritmanın olmadığı En Kısa Ortak Süper Serseri problemidir. Ancak bu yaygın bir sorundur (sıkıştırma ve DNA dizilemesinde) ve çeşitli yaklaşım algoritmaları iyi bilinmektedir.

"Açgözlü" algoritmalar genellikle en etkili olarak kabul edilirler (en az kötü durumları en az olduğu gibi).

Çok daha fazla bilgi için Jonathan Turner'ın En Kısa Yaygın Süper Basma Sorunu için Yaklaşım Algoritmaları makalesini okuyun .



Hmm, yorumumdaki ilk bağlantının süper sicimler değil, üstdelikleri ele aldığını unutmayın! Bir üst sekans, bir dizideki tüm karakterlerin bitişik olmasını gerektirmez.
okulu

Bağlantınız öldü.
Majid
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.