Mustervergleich mit egal: Mehrere Muster

9

Kalais 2-seitiges SODA-Papier bietet einen einfachen und effizienten Algorithmus für den Mustervergleich mit egal (Platzhalter, die einem Zeichen entsprechen). Im Wesentlichen ist es so einfach wie Faltung.

Aber was passiert, wenn wir nach mehreren Mustern suchen , ohne sich darum zu kümmern? Können wir es trotzdem irgendwie lösen, zB mit FFT-basierten Techniken?

Jukka Suomela
quelle

Antworten:

5

Für den Fall mit mehreren Mustern scheint es die beste Lösung zu sein, einfach nach jedem der beiden zu suchen, zumindest wenn die Hypothese der starken Exponentialzeit nicht fehlschlägt.

Denken Sie daran, dass gegebene Mengen und T 1 , T 2 , , T n über das Universum [ m ] , wenn wir entscheiden könnten, ob es S i und T j gibt, so dass S iT j = [ m ] in der Zeit O ( n 2 - & epsi ; Poly ( m ) )S1,S2,,SnT1,T2,,Tn[m]SiTjSiTj=[m]O(n2εpoly(m)), dann schlägt SETH fehl, dh wir haben einen CNF-SAT-Algorithmus mit der Laufzeit .O(2(1ε/2)n)

Wenn die Mengen und T 1 , T 2 , ... , T n gegeben sind , codieren wir das obige Problem als Mehrmusterabgleich, wobei das binäre Alphabet nicht wie folgt berücksichtigt wird:S1,S2,,SnT1,T2,,Tn

  • 1[T1]10m+21[T2]10m+20m+21[Tn]1,
    [Ti]Ti
  • n1Si1Siy=y1y2ymyj=1jSiyj=jSi

1Si11[Tj]1SiTj=[m]O(nm)

(Beachten Sie, dass dies nichts über Algorithmen aussagt, die viel Zeit für die Vorverarbeitung der Muster benötigen, z. B. quadratisch in der Gesamtlänge der Muster.)

Janne H. Korhonen
quelle