KNUTHMORRISPRATT ALGORITMUS KMP KSZTETTE ZELNIK MRTON KNUTHMORRISPRATT ALGORITMUS
- Slides: 33
KNUTH-MORRIS-PRATT ALGORITMUS (KMP) KÉSZÍTETTE: ZELNIK MÁRTON
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
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.
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)
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+1 j=0 i : = i+1 j : = next[j] j=m k, u : = i+m, ↑ u : = ↓ next(j) = max{ h∊[ 0. . j-1 ]: M[ 1. . h ] = M[ j-h+1. . j ] }
KNUTH-MORRIS-PRATT ALGORITMUS (KMP) PÉLDA Szöveg: Minta: ABCABCABCYXYZ… ABCABCY
KNUTH-MORRIS-PRATT ALGORITMUS (KMP) PÉLDA Szöveg: Minta: ABCABCABCYXYZ… ABCABCY
KNUTH-MORRIS-PRATT ALGORITMUS (KMP) PÉLDA Szöveg: Minta: ABCABCABCYXYZ… ABCABCY
KNUTH-MORRIS-PRATT ALGORITMUS (KMP) PÉLDA Szöveg: Minta: ABCABCABCYXYZ… ABCABCY
KNUTH-MORRIS-PRATT ALGORITMUS (KMP) PÉLDA Szöveg: Minta: ABCABCABCYXYZ… ABCABCY
KNUTH-MORRIS-PRATT ALGORITMUS (KMP) PÉLDA Szöveg: Minta: ABCABCABCYXYZ… ABCABCY
KNUTH-MORRIS-PRATT ALGORITMUS (KMP) PÉLDA Szöveg: Minta: ABCABCABCYXYZ… ABCABCY
KNUTH-MORRIS-PRATT ALGORITMUS (KMP) PÉLDA Szöveg: Minta: ABCABCABCYXYZ… ABCABCY
KNUTH-MORRIS-PRATT ALGORITMUS (KMP) PÉLDA Szöveg: Minta: ABCABCABCYXYZ… ABCABCY ‚ABCABC’-ig jó, onnantól nem illeszkedik.
KNUTH-MORRIS-PRATT ALGORITMUS (KMP) PÉLDA Szöveg: Minta: ABCABCABCYXYZ… 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.
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.
KNUTH-MORRIS-PRATT ALGORITMUS (KMP) PÉLDA Szöveg: Minta: ABCABCABCYXYZ… 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.
KNUTH-MORRIS-PRATT ALGORITMUS (KMP) PÉLDA Szöveg: Minta: ABCABCABCYXYZ… 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.
KNUTH-MORRIS-PRATT ALGORITMUS (KMP) PÉLDA Szöveg: Minta: ABCABCABCYXYZ… 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.
KNUTH-MORRIS-PRATT ALGORITMUS (KMP) ELTOLÁS PÉLDA 1.
KNUTH-MORRIS-PRATT ALGORITMUS (KMP) ELTOLÁS PÉLDA 1. Szöveg: Minta: ABABAX… ABABAY
KNUTH-MORRIS-PRATT ALGORITMUS (KMP) ELTOLÁS PÉLDA 1. Szöveg: Minta: ABABAX… ABABAY Az illeszkedő részen belül a maximális egyező prefix-szuffix pár
KNUTH-MORRIS-PRATT ALGORITMUS (KMP) ELTOLÁS PÉLDA 1. Szöveg: Minta: ABABAX… ABABAY Az illeszkedő részen belül a maximális egyező prefix-szuffix pár p
KNUTH-MORRIS-PRATT ALGORITMUS (KMP) ELTOLÁS PÉLDA 1. Szöveg: Minta: ABABAX… ABABAY Az illeszkedő részen belül a maximális egyező prefix-szuffix pár p és s.
KNUTH-MORRIS-PRATT ALGORITMUS (KMP) ELTOLÁS PÉLDA 1. Szöveg: Minta: ABABAX… 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.
KNUTH-MORRIS-PRATT ALGORITMUS (KMP) ELTOLÁS PÉLDA 1. Szöveg: Minta: ABABAX… ► 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.
KNUTH-MORRIS-PRATT ALGORITMUS (KMP) ELTOLÁS PÉLDA 1. Szöveg: Minta: ABABAX… 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.
KNUTH-MORRIS-PRATT ALGORITMUS (KMP) ELTOLÁS PÉLDA 2.
KNUTH-MORRIS-PRATT ALGORITMUS (KMP) ELTOLÁS PÉLDA 2. Szöveg: Minta: ABCX… ABCY
KNUTH-MORRIS-PRATT ALGORITMUS (KMP) ELTOLÁS PÉLDA 2. Szöveg: Minta: ABCX… ABCY Az illeszkedő részen belül a maximális egyező prefix-szuffix pár p és s, de itt nincsenek ilyenek.
KNUTH-MORRIS-PRATT ALGORITMUS (KMP) ELTOLÁS PÉLDA 2. Szöveg: Minta: ABCX… 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.
KNUTH-MORRIS-PRATT ALGORITMUS (KMP) ELTOLÁS PÉLDA 2. Szöveg: Minta: ABCX… ► 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.
KNUTH-MORRIS-PRATT ALGORITMUS (KMP) ELTOLÁS PÉLDA 2. Szöveg: Minta: ABCX… 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.
- Mrton
- Mrton
- Mrton
- Mrton
- Mrton
- Kmp
- Kmp flowchart construction require
- Kmp algorithm
- Kmp toruń kierownictwo
- Kmp dg
- Kmp algorithm calculator
- Komenda miejska policji w tarnowie
- Algoritmul lui moore
- Kmp algorithm animation
- Kmp algorithm
- Knuth morris pratt pronunciation
- Kmp algorithm
- Rubikova kocka algoritmi
- Lll algoritmus
- Algoritmus vlastnosti
- Dda algoritmus
- Algoritmus fogalma
- Genetikus algoritmus
- Oszd meg és uralkodj algoritmus
- Kruskal algoritmus
- Lll algoritmus
- Algoritmus delenia
- Greedy algoritmus
- Boruvkuv algoritmus
- Dijkstra algoritmus
- Avpu scale
- Algoritmus leíró eszközök
- Backtrack algoritmus
- Algoritmus vlastnosti