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

Slides:



Advertisements
Hasonló előadás
Készítette: Kosztyán Zsolt Tibor
Advertisements

Készítette: Kosztyán Zsolt Tibor
Nevezetes algoritmusok
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
A prezentáció művészete
Elemi algoritmusok Páll Boglárka.
Programozási tételek, és „négyzetes” rendezések
A SZABÁLYOZOTT JELLEMZŐ MINŐSÉGI MUTATÓI
Tömbök C#-ban.
Matematika és Tánc Felkészítő tanár: Komáromi Annamária
Rangszám statisztikák
Programozási alapismeretek 5. előadás. ELTE Szlávi - Zsakó: Programozási alapismeretek 5.2/  Programozási tételek.
Kötelező alapkérdések
Matematika II. 3. előadás Geodézia szakmérnöki szak 2010/2011. tanév Műszaki térinformatika ágazat tavaszi félév.
3. Folytonos wavelet transzformáció (CWT)
Matematika II. 2. előadás Geodézia szakmérnöki szak 2012/2013. tanév Műszaki térinformatika ágazat őszi félév.
Illés Tibor – Hálózati folyamok
Térinformatikai elemzések. Megválaszolható kérdések Pozíció - mi van egy adott helyen Feltétel - hol vannak …? Trendek - mi változott meg? Minta - milyen.
INFOÉRA Dinamikus programozás (Horváth Gyula és Szlávi Péter előadásai felhasználásával) Juhász István-Zsakó László: Informatikai képzések.
Tóth István Algoritmusok és adatszerkezetek 2.
Algoritmusok és adatszerkezetek 2 Újvári Zsuzsanna.
Gubicza József (GUJQAAI.ELTE)
Programozási alapismeretek 5. előadás. ELTE 2/  Programozási tételek – a lényeglényeg  Sorozatszámítás Sorozatszámítás.
Bevezetés a Java programozásba
Lineáris és nemlineáris regressziók, logisztikus regresszió
VEKTORMŰVELETEK Készítette: Sike László Kattintásra tovább.
Készítette: Pető László
Turbo pascal feladatok 2
A digitális számítás elmélete
Leszámoló rendezés Készítette: Várkonyi Tibor Zoltán VATNABI.ELTE
Trajectori Adatok feldolgozása DirectionPreserving Trajectory Simplification (Cheng Long, Raymond ChiWing Wong, H. V. Jagadish) Forrás: Készítette: Béleczki.
Lineáris egyenletrendszerek megoldása
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Ficsor Lajos Template-ek CPP8/ 1 Template-ek. Ficsor Lajos Template-ek CPP8/ 2 A template fogalma Kiindulási probléma: tetszőleges típusokon kellene ugyanolyan.
Microsoft Excel Függvények VIII.
Nevezetes algoritmusok Beszúrás Van egy n-1 elemű rendezett tömbünk. Be akarunk szúrni egy n-edik elemet. Egyik lehetőség, hogy végigszaladunk a tömbön,
Dr. Balogh Péter Gazdaságelemzési és Statisztika Tanszék DE-AMTC-GVK
Betűk rendezésétől egy valós számokat tartalmazó vektor rendezéséig Kiss László főiskolai docens OE RKK MKI augusztus 25.
Statisztika.
Elemi algoritmusok Páll Boglárka.
16. Modul Egybevágóságok.
Összetett adattípusok
Lineáris programozás.
A sztochasztikus kapcsolatok (Folyt). Korreláció, regresszió
Brute Force algoritmus
Táblázatkezelés KÉPLETEK.
Többdimenziós valószínűségi eloszlások
1. feladat  Készíts olyan függvényt, mely paraméterül kapja két egész típusú változó címét, s hívása után a két változó értéke helyet cserél.
(Bináris) Kupac (heap) adattípus
Statisztikai és logikai függvények
A Huffman féle tömörítő algoritmus Huffman Kód. Az Algoritmus Alapelvei Karakterek hossza különböző A karakter hossza sűrűsége határozza meg: Minél több.
Quick-Search algoritmus. Bevezet ő Az eljárás működése során két esetet különböztetünk meg: A szöveg minta utáni első karaktere nem fordul elő a mintában.
Huffman algoritmus Gráf-algoritmusok Algoritmusok és adatszerkezetek II. Gergály Gábor WZBNCH1.
TÁMOP /1-2F Informatikai gyakorlatok 11. évfolyam Alapvető programozási tételek megvalósítása Czigléczky Gábor 2009.
Script nyelvek előadás
Nevezetes algoritmusok
Mediánok és rendezett minták
Technológiai folyamatok optimalizálása
Kockázat és megbízhatóság
A maximum kiválasztás algoritmusa
Grosz Imre f. doc. Sorrendi áramkörök
Algoritmusok és Adatszerkezetek I.
Informatikai gyakorlatok 11. évfolyam
Illesztések.
Bevezetés a mély tanulásba
Algoritmusok és Adatszerkezetek I.
Programozási tételek.
INFOÉRA 2006 Szövegfeldolgozás III.
Szövegfeldolgozás II. INFOÉRA perc kell még hozzá
Előadás másolata:

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+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 ] }

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

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

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

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

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

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

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

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

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

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.

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: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: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: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) ELTOLÁS PÉLDA 1.

Szöveg: ABABAX… Minta: ABABAY

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

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

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.

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.

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. ►

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.

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

Szöveg: ABCX… Minta: ABCY

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.

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.

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. ►

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.