Das Problem, LPS eines Strings zu finden, kann in das Finden der längsten gemeinsamen Folge zweier Strings umgewandelt werden. In diesem Fall ist eine Zeichenfolge die ursprüngliche und die zweite die Umkehrung der ursprünglichen Zeichenfolge.
Das Problem mit der längsten allgemeinen Folge ähnelt dem Problem mit dem Mustervergleich, außer dass Sie Zeichen im Text überspringen dürfen. Das Ziel ist es auch, nur ein Spiel zurückzugeben, das so lang wie möglich ist.
LCS kann in mit Rekursion und Memoisierung gelöst werden.O(n2)
Es gibt einen etwas schnelleren Algorithmus, der von Masek und Paterson für die Zeitkomplexität . Papierlink : Masek und PatersonO(n2/lgn)
Zwei weitere von Hirschberg vorgestellte Algorithmen zur Berechnung der LCS von zwei Strings (Größe ) und (Größe ). Basierend auf der Annahme, dass die Symbole, die in diesen Zeichenfolgen erscheinen können, aus einem Alphabet der Größe (das ist in den meisten Fällen tatsächlich der Fall). So können Symbole mit -Bits im Speicher gespeichert werden, die in ein Speicherwort passen. Zwei Symbole können in -Zeit verglichen werden. Die Anzahl der Unterschiede in Zeichenfolge wird mit , was natürlich weniger als und .AnBmtlog(t)O(1)Bsmt
Dieser benötigt Zeit, wobei die Länge von LCS ist. Dies wird verwendet, wenn erwartet wird, dass die Länge des LCS gering ist. Wenn wir dieses Problem mithilfe der dynamischen Programmierung lösen, stellen wir fest, dass die meisten Einträge in der Matrix identisch sind, sodass wir die Idee der sparsamen dynamischen Programmierung verwenden können.O(pn+nlgn)p
Dieser Algorithmus benötigt Zeit. Dies ist sehr effizient, wenn die Länge des LCS nahe bei , in diesem Fall nahe bei .O(p(m+1−p)logn)mO(nlgn)
Detaillierte Verfahren und Algorithmen werden in der Arbeit von Hirschberg erläutert .
Ein weiterer guter Algorithmus wird von Sohel Rahman vorgeschlagen, der in der Zeit wird, wobei die Gesamtzahl der geordneten Positionspaare ist, an denen die Zeichenfolgen übereinstimmen. Es ist nicht anwendbar, wenn die Ordnung von , aber es gibt viele Fälle, in denen die Ordnung von . Dieser verwendet das Konzept RMQ (Range Maximum Query). Papierlink: RahmanO(Rloglogn)RRO(n2)Rn