[algorytmy] Wyszukiwanie wzorca przy m=1

0

Czy opłaca się stosowanie optymalniejszych algorytmów od naiwnego przy wyszukiwaniu wzorca, jeśli długość wzorca wynosi 1?

Jeśli tak, to jaki byłby do tego optymalny?

Z góry dziękuję za odpowiedź.

0

Jeżeli m=1 to naiwny jest najoptymalniejszy.
Sprawdzić musisz każdy znak, więc każdy bardziej skomplikowany algorytm narzucałby jakieś nadmiarowe sprawdzanie.

Mógłby być tylko w jednym przypadku inny bardziej optymalny algorytm: jeżeli posiadałbyś a priori informacje o prawdopodobnym rozkładzie znaków w tekście. Wtedy możnaby się pokusić o coś specjalnie przystosowanego do danych.

0
tekst to t[1..n]
pomocnicze w[1..n] i h[0..256]

przygotowanie
  e=1;
  h[0]=1;
  for i=0..255 {
    for j=1..n 
      if t[j]==i {w[e]=j; e=e+1 }
    h[i+1]=e
  }

wystąpienia c w t
  for i=h[c]..c[c+1]-1 
    t[w[i]]

1 użytkowników online, w tym zalogowanych: 0, gości: 1