Pencocokan pola dengan tidak peduli: banyak pola

9

Makalah SODA 2 halaman Kalai memberikan algoritma yang sederhana dan efisien untuk pencocokan pola dengan tidak peduli (wildcard yang cocok dengan satu karakter). Intinya, semudah berbelit-belit.

Tetapi apa yang terjadi jika kita mencari beberapa pola dengan tidak peduli? Bisakah kita masih menyelesaikannya misalnya dengan teknik berbasis FFT?

Jukka Suomela
sumber

Jawaban:

5

Untuk kasus pola berganda, tampaknya hanya memindai untuk masing-masing mungkin solusi terbaik, setidaknya kecuali hipotesis waktu eksponensial yang kuat gagal.

Ingat bahwa set yang diberikan dan T 1 , T 2 , ... , T n di atas alam semesta [ m ] , jika kita dapat memutuskan apakah ada S i dan T j sehingga S iT j = [ m ] dalam waktu O ( n 2 - ε poli ( m ) )S1,S2,...,SnT1,T2,...,Tn[m]SsayaTjSsayaTj=[m]HAI(n2-εpoli(m)), maka SETH gagal, yaitu kita memiliki algoritma CNF-SAT dengan waktu berjalan .HAI(2(1-ε/2)n)

Diberikan set dan T 1 , T 2 , ... , T n , kami menyandikan masalah di atas sebagai pencocokan multi-pola dengan tidak peduli pada alfabet biner sebagai berikut:S1,S2,...,SnT1,T2,...,Tn

  • Teksnya adalah mana [ T i ] adalah penyandian alami T i sebagai string biner.
    1[T1]10m+21[T2]10m+2...0m+21[Tn]1,
    [Tsaya]Tsaya
  • Kami memiliki pola bentuk 1 S i1 , di mana S i adalah string y = y 1 y 2 ... y m sehingga y j = 1 jika j S i dan y j = * jika j S i (di sini adalah simbol tidak peduli).n1Ssaya1Ssayay=y1y2...ymyj=1jSsayayj=jSsaya

Sekarang jelas bahwa pola dapat mencocokkan teks pada terjadinya 1 [ T j ] 1 , dan hanya jika S iT j = [ m ] . Total panjang dari pola dan panjang teks keduanya O ( n m ) , misalnya sehingga algoritma single-pass linear dekat-untuk beberapa pola akan memberikan substansial perbaikan lebih dikenal algoritma CNF-SAT ...1Ssaya11[Tj]1SsayaTj=[m]HAI(nm)

(Perhatikan bahwa ini tidak mengatakan apa pun tentang algoritma yang menggunakan banyak waktu untuk memproses ulang pola, katakanlah, kuadratik dalam total panjang pola.)

Janne H. Korhonen
sumber