next up previous contents
Next: Knuth-Morris-Pratt-algoritmi Up: Hahmonsovitusalgoritmit Previous: Hahmonsovitusalgoritmit   Sisältö

Triviaali algoritmi

Helpoin tapa ratkaista hahmonsovitusongelma on verrata hahmoa erikseen jokaiseen tekstin positioon $s_i, i=1 ... n-m+1$ kokeilemalla, onko $p_1=s_i, p_2=s_{i+1}, ... p_m=s_{i+m-1}$. Tämän algoritmin aikavaatimus on suoraan verrannollinen tarvittavien vertailujen määrään. Pahimmassa tapauksessa jokaisessa kohdassa $i$ joudutaan tekemään $m$ vertailua. Tällöin algoritmin aikavaatimus on siis $O(mn)$. Algoritmin keskimääräinen aikavaatimus on kuitenkin $O(n)$, ja se toimii varsin hyvin käytännössä. (Teoriassa algoritmi toimisi huonosti pienillä aakkostoilla, $\vert\Sigma\vert<5$, mutta tekstihakujen tapauksessa aakkoston koko on käytännössä aina $>=127$).



Jani Jaakkola 2004-11-19