Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

KNUTH-MORRIS-PRATT ALGORITMUS (KMP) KÉSZÍTETTE: ZELNIK MÁRTON.

Hasonló előadás


Az előadások a következő témára: "KNUTH-MORRIS-PRATT ALGORITMUS (KMP) KÉSZÍTETTE: ZELNIK MÁRTON."— Előadás másolata:

1 KNUTH-MORRIS-PRATT ALGORITMUS (KMP) KÉSZÍTETTE: ZELNIK MÁRTON

2 KNUTH-MORRIS-PRATT ALGORITMUS (KMP) TÖMÖREN Adott egy szöveg, és egy keresendő minta (szó). A feladat az, hogy megkeressük a szövegben a minta első előfordulását. A KMP lényege, hogy nem kell betűnként a szövegre illesztenünk a szót, hanem nagyobb lépésekkel haladhatunk. Ahova már láthatóan nem fog illeszkedni, ott nem is próbálkozunk

3 KNUTH-MORRIS-PRATT ALGORITMUS (KMP) RÉSZLETESEN Ez az algoritmus egy lineáris idejű mintaillesztő algoritmus. Az algoritmus kiküszöböli a δ átmeneti függvény kiszámítását és az illesztési ideje Θ (n). Egy π[1..m] segédfüggvényt használunk, amelyet előzetesen számítunk ki a minta alapján Θ (m) idő alatt. A π tömb segítségével a δ átmeneti függvény értékei „menet közben” hatékonyan számolhatók. Ez azt jelenti, hogy bármely q=0,1,…,m állapotra és a єΣ jelre, π(q) érték adja meg δ (q,a) számítási módját és ez független a-tól. A π tömbnek csak m eleme van, míg δ -nak σ (m| Σ |), így az előfeldolgozás során megspóroljuk a | Σ | tényezőt, ha π-t határozzuk meg δ helyett. Alapötlet: a léptetés mértéke előre kiszámítható a mintára, továbbá a léptetés után az összehasonlítást nem kell a minta elejéről kezdeni.

4 KNUTH-MORRIS-PRATT ALGORITMUS (KMP) ÉRDEKESSÉG Hasonlóan működik mint a Brute Force algoritmus, ám kihasználja a mintában levő prefix-suffix kapcsolatokat (ha vannak), így ha egy szöveg vizsgálata elromlik bizonyos karakternél, nem feltétlen kell a vizsgálatot a minta elejétől újrakezdeni. Csak a megfelelő prefixszel kell odébb tolni a mintát, az „elromlott” karakterhez. Viszont ahhoz, hogy tudjuk a mintával való ugrás lehetséges értékeit, definiálnunk kell egy next függvényt, amely megadja a minta egyes kezdőszeleteire a leghosszabb egymással egyező prefix-szuffix párok hosszát. Ezt a gyakorlatban egy vektorral lehet megvalósítani, amit az initnext(M[1..m],next[1..m-1]) eljárásban töltünk fel. (M a minta, m hosszúsággal)

5 KNUTH-MORRIS-PRATT ALGORITMUS (KMP) ALGORITMUS Initnext(M[1..m], next[1..m-1]) i, j := 0, 0 i<n ⋀ j<m S[i+1] = M[j+1] i, j := i+1, j+1j = 0 i := i+1j := next[j] j = m k, u := i+m, ↑u := ↓ next(j) = max{ h ∊ [ 0..j-1 ]: M[ 1..h ] = M[ j-h+1..j ] }

6 KNUTH-MORRIS-PRATT ALGORITMUS (KMP) PÉLDA Szöveg: ABCABCABCYXYZ… Minta: ABCABCY

7 KNUTH-MORRIS-PRATT ALGORITMUS (KMP) PÉLDA Szöveg: ABCABCABCYXYZ… Minta: ABCABCY

8 KNUTH-MORRIS-PRATT ALGORITMUS (KMP) PÉLDA Szöveg: ABCABCABCYXYZ… Minta: ABCABCY

9 KNUTH-MORRIS-PRATT ALGORITMUS (KMP) PÉLDA Szöveg: ABCABCABCYXYZ… Minta: ABCABCY

10 KNUTH-MORRIS-PRATT ALGORITMUS (KMP) PÉLDA Szöveg: ABCABCABCYXYZ… Minta: ABCABCY

11 KNUTH-MORRIS-PRATT ALGORITMUS (KMP) PÉLDA Szöveg:ABCABCABCYXYZ… Minta: ABCABCY

12 KNUTH-MORRIS-PRATT ALGORITMUS (KMP) PÉLDA Szöveg:ABCABCABCYXYZ… Minta: ABCABCY

13 KNUTH-MORRIS-PRATT ALGORITMUS (KMP) PÉLDA Szöveg: ABCABCABCYXYZ… Minta: ABCABCY

14 KNUTH-MORRIS-PRATT ALGORITMUS (KMP) PÉLDA Szöveg:ABCABCABCYXYZ… Minta: ABCABCY ‚ABCABC’-ig jó, onnantól nem illeszkedik.

15 KNUTH-MORRIS-PRATT ALGORITMUS (KMP) PÉLDA Szöveg:ABCABCABCYXYZ… Minta: ABCABCY ‚ABCABC’-ig jó, onnantól nem illeszkedik. A lehető legkisebb ugrással, a lehető legnagyobb azonos résszel kell tovább illesztenünk a mintát.

16 KNUTH-MORRIS-PRATT ALGORITMUS (KMP) PÉLDA Szöveg:ABCABCABCYXYZ… Minta: ABCABCY ‚ABCABC’-ig jó, onnantól nem illeszkedik. A lehető legkisebb ugrással, a lehető legnagyobb azonos résszel kell tovább illesztenünk a mintát. A következő illesztéshez a 2. ‚A’ betűre toljuk el. ►►

17 KNUTH-MORRIS-PRATT ALGORITMUS (KMP) PÉLDA Szöveg:ABCABCABCYXYZ… Minta: ABCABCY ‚ABCABC’-ig jó, onnantól nem illeszkedik. A lehető legkisebb ugrással, a lehető legnagyobb azonos résszel kell tovább illesztenünk a mintát. A következő illesztéshez a 2. ‚A’ betűre toljuk el.

18 KNUTH-MORRIS-PRATT ALGORITMUS (KMP) PÉLDA Szöveg:ABCABCABCYXYZ… Minta: ABCABCY ‚ABCABC’-ig jó, onnantól nem illeszkedik. A lehető legkisebb ugrással, a lehető legnagyobb azonos résszel kell tovább illesztenünk a mintát. A következő illesztéshez a 2. ‚A’ betűre toljuk el.

19 KNUTH-MORRIS-PRATT ALGORITMUS (KMP) PÉLDA Szöveg:ABCABCABCYXYZ… Minta: ABCABCY ‚ABCABC’-ig jó, onnantól nem illeszkedik. A lehető legkisebb ugrással, a lehető legnagyobb azonos résszel kell tovább illesztenünk a mintát. A következő illesztéshez a 2. ‚A’ betűre toljuk el.

20 KNUTH-MORRIS-PRATT ALGORITMUS (KMP) ELTOLÁS PÉLDA 1.

21 Szöveg: ABABAX… Minta: ABABAY

22 KNUTH-MORRIS-PRATT ALGORITMUS (KMP) ELTOLÁS PÉLDA 1. Szöveg: ABABAX… Minta: ABABAY Az illeszkedő részen belül a maximális egyező prefix-szuffix pár

23 KNUTH-MORRIS-PRATT ALGORITMUS (KMP) ELTOLÁS PÉLDA 1. Szöveg: ABABAX… Minta: ABABAY Az illeszkedő részen belül a maximális egyező prefix-szuffix pár p

24 KNUTH-MORRIS-PRATT ALGORITMUS (KMP) ELTOLÁS PÉLDA 1. Szöveg: ABABAX… Minta: ABABAY Az illeszkedő részen belül a maximális egyező prefix-szuffix pár p és s.

25 KNUTH-MORRIS-PRATT ALGORITMUS (KMP) ELTOLÁS PÉLDA 1. Szöveg: ABABAX… Minta: ABABAY Az illeszkedő részen belül a maximális egyező prefix-szuffix pár p és s. Ha |p|=|s|>0 => p-t s-re toljuk.

26 KNUTH-MORRIS-PRATT ALGORITMUS (KMP) ELTOLÁS PÉLDA 1. Szöveg: ABABAX… Minta: ABABAY Az illeszkedő részen belül a maximális egyező prefix-szuffix pár p és s. Ha |p|=|s|>0 => p-t s-re toljuk. ►

27 KNUTH-MORRIS-PRATT ALGORITMUS (KMP) ELTOLÁS PÉLDA 1. Szöveg: ABABAX… Minta: ABABAY Az illeszkedő részen belül a maximális egyező prefix-szuffix pár p és s. Ha |p|=|s|>0 => p-t s-re toljuk.

28 KNUTH-MORRIS-PRATT ALGORITMUS (KMP) ELTOLÁS PÉLDA 2.

29 Szöveg: ABCX… Minta: ABCY

30 KNUTH-MORRIS-PRATT ALGORITMUS (KMP) ELTOLÁS PÉLDA 2. Szöveg: ABCX… Minta: ABCY Az illeszkedő részen belül a maximális egyező prefix-szuffix pár p és s, de itt nincsenek ilyenek.

31 KNUTH-MORRIS-PRATT ALGORITMUS (KMP) ELTOLÁS PÉLDA 2. Szöveg: ABCX… Minta: ABCY Az illeszkedő részen belül a maximális egyező prefix-szuffix pár p és s, de itt nincsenek ilyenek. Ha |p|=|s|=0 => teljes eltolást alkalmazunk.

32 KNUTH-MORRIS-PRATT ALGORITMUS (KMP) ELTOLÁS PÉLDA 2. Szöveg: ABCX… Minta: ABCY Az illeszkedő részen belül a maximális egyező prefix-szuffix pár p és s, de itt nincsenek ilyenek. Ha |p|=|s|=0 => teljes eltolást alkalmazunk. ►

33 KNUTH-MORRIS-PRATT ALGORITMUS (KMP) ELTOLÁS PÉLDA 2. Szöveg: ABCX… Minta: ABCY Az illeszkedő részen belül a maximális egyező prefix-szuffix pár p és s, de itt nincsenek ilyenek. Ha |p|=|s|=0 => teljes eltolást alkalmazunk.


Letölteni ppt "KNUTH-MORRIS-PRATT ALGORITMUS (KMP) KÉSZÍTETTE: ZELNIK MÁRTON."

Hasonló előadás


Google Hirdetések