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


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 Si∪Tj=[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+2…0m+21[Tn]1,
    gdzie [Ti] jest naturalnym kodowaniem Ti jako ciąg binarny.
  • Mamy n wzory formy 1⟨Si⟩1, gdzie ⟨Si⟩ jest ciągiem y=y1y2…ym takie, że yj=1 gdyby j∉Si i yj=∗ gdyby jot∈S.ja (tutaj ∗ to symbol „nie obchodzi mnie”).

Teraz jest jasne, że wzór 1⟨S.ja⟩1 może dopasować tekst przy wystąpieniu 1[T.jot]1i tylko wtedy, gdy S.ja∪T.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).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.