Dopasowywanie wzorów za pomocą nie obchodzi: wiele wzorów

9

2-stronicowy papier SODA Kalai zapewnia prosty i skuteczny algorytm dopasowywania wzorców bez obojętności (symbole wieloznaczne pasujące do jednej postaci). Zasadniczo jest to tak łatwe jak splot.

Ale co się stanie, jeśli szukamy wielu wzorów z „nie obchodzi”? Czy nadal możemy jakoś rozwiązać to za pomocą np. Technik opartych na FFT?

Jukka Suomela
źródło

Odpowiedzi:

5

W przypadku wielokrotnego wzorca wydaje się, że po prostu skanowanie każdego z nich może być najlepszym możliwym rozwiązaniem, przynajmniej jeśli nie powiedzie się silna hipoteza wykładniczego czasu.

Przypomnij sobie, że podane zestawy S1,S2,,Sn i T1,T2,,Tn nad wszechświatem [m], gdybyśmy mogli zdecydować, czy są Si i Tj takie, że SiTj=[m] w samą porę O(n2εpoly(m)), następnie SETH kończy się niepowodzeniem, tzn. mamy algorytm CNF-SAT z czasem działania O(2(1ε/2)n).

Podane zestawy S1,S2,,Sn i T1,T2,,Tn, kodujemy powyższy problem jako dopasowanie wielu wzorców za pomocą nie dbaj o binarny alfabet w następujący sposób:

  • Tekst jest
    1[T1]10m+21[T2]10m+20m+21[Tn]1,
    gdzie [Ti] jest naturalnym kodowaniem Ti jako ciąg binarny.
  • Mamy n wzory formy 1Si1, gdzie Si jest ciągiem y=y1y2ym takie, że yj=1 gdyby jSi i yj= gdyby jotS.ja (tutaj to symbol „nie obchodzi mnie”).

Teraz jest jasne, że wzór 1S.ja1 może dopasować tekst przy wystąpieniu 1[T.jot]1i tylko wtedy, gdy S.jaT.jot=[m]. Całkowita długość wzorów i długość tekstu są równeO(nm), na przykład prawie liniowy algorytm jednoprzebiegowy dla wielu wzorów dałby znaczną poprawę w stosunku do najbardziej znanych algorytmów CNF-SAT ...

(Należy zauważyć, że nie mówi to nic o algorytmach, które wykorzystują dużo czasu na wstępne przetwarzanie wzorców, powiedzmy, kwadratowe w całkowitej długości wzorców).

Janne H. Korhonen
źródło