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 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).

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.