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ź.
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ź.
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.
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]]