Az egyszerű mintaillesztő algoritmus alapötlete az, hogy a
mintát toljuk végig a
szövegen
balról jobbra és ellenőrizzük, hogy a minta karakterei megegyeznek-e a szöveg
karaktereivel. Elképzelhetjük úgy is, mintha a mintát tartalmazó sablont tolnánk végig a szövegen,
és közben minden egyes olyan eltolást feljegyzünk, amikor a sablonban található jelek megegyeznek a
szöveg megfelelő karaktereivel.
Az egyszerű algoritmus megtalálja az összes érvényes $s$ eltolást úgy,
hogy egy
ciklusban vizsgálja a $P[0 . . m) = T[s . . s + m)$ feltétel teljesülését az összes, $n − m +
1$, lehetséges $s$ értékre.
Ez a módszer nem biztosít hatékony megoldást a problémára, ugyanis figyelmen
kívül hagyja a szövegre vonatkozó ismereteket, amiket a korábbi lehetséges
$s$
értékek kipróbálásakor szerzett.
Műveletigény:
A különböző algoritmusok hatékonysága abban fog különbözni a mintaillesztésnél,
hogy ebben az esetben mennyire gyorsan tudnak végig menni a szövegen. Az összehasonlítások száma:
$(n-m+1)$.
A $match(T, P, s)$ függvény, azaz a $T[s..s + m) = P[0..m)$ egyenlőségvizsgálat műveletigénye:
- $MT(m) \in \Theta(m)$
- $mT(m) \in \Theta(1)$
A teljes algoritmus műveletigénye:
- $MT(n, m) \in \Theta((n - m + 1) \cdot m)$, ha minden eltolásánál csak a minta utolsó
karakterénél
romlik el az illeszkedés.
- $mT(n,m) \in \Theta((n-m+1) \cdot 1)$, ha a minta első karaktere egyáltalán nem szerepel a
szövegben, tehát minden eltolásnál csak egy összehasonlítás történik.
Gyakorlati alkalmazása:
Mintaillesztő algoritmusokat használnak a plágium keresők, böngésző
keresőmotorjai. Használják továbbá spamek kiszűréséhez, szöveg szerkesztő programokban a
helyesírásunk ellenőrzéséhez, illetve a bioinformatikában DNS láncokban egy-egy szakasz
megtalálásához is.