Mintaillesztés Knuth-Morris-Pratt (KMP) algoritmus

Slides:



Advertisements
Hasonló előadás
ADATSZERZÉS, INFORMÁCIÓ HASZNOSULÁS Biztonságtudatos vállalati kultúra Készítette: Jasenszky Nándor egyetemi szakoktató NKE NBI TEH tanszék.
Advertisements

Bevezetés a C# nyelvbe Az alapok összefoglalása Farkas Csaba.
A magyarországi vállalatok információszerzési szokásai - üzleti körben végzett online piackutatás fő eredményei - Készítette: Nagy Péter Támogatóink H-1024.
1 Az önértékelés mint projekt 6. előadás 1 2 Az előadás tartalmi elemei  A projekt fogalma  A projektek elemei  A projekt szervezete  Projektfázisok.
Vetésforgó tervezése és kivitelezése. Vetésforgó Vetésterv növényi sorrend kialakításához őszi búza250 ha őszi árpa50 ha lucerna ebből új telepítés 300.
FELSŐOKTATÁSI INTÉZMÉNYEK WEBOMETRICS RANGSORÁNAK VIZSGÁLATA GOOGLE PAGERANK TEKINTETÉBEN DOSz – Tavaszi Szél Konferencia 2016 Losonczi György.
TEROTECHNOLÓGIA Az állóeszközök újratermelési folyamata.
Internet tudományos használata
Valószínűségi kísérletek
Becslés gyakorlat november 3.
Végeselemes modellezés matematikai alapjai
AWK ismétlés AWK: adatvezérelt nyelv:
Scilab programozás alapjai
Adatok importálása, rendezése és szűrése
Lineáris függvények.
Kockázat és megbízhatóság
Becsléselmélet - Konzultáció
KRE-AKTÍV motivációs projekt
Technológiai folyamatok optimalizálása
Technológiai folyamatok optimalizálása
Struktúra predikció ápr. 6.
Konszolidáció Guzmics Zsuzsanna
Rendszerező összefoglalás
Szervezetfejlesztés II. előadás
Lexikális elemző: lex (flex)
Kockázat és megbízhatóság
Kvantitatív módszerek
A mozgási elektromágneses indukció
Számításelmélet 1.
Gazdaságstatisztika Korreláció- és regressziószámítás II.
Bevezetés Az ivóvizek minősége törvényileg szabályozott
Adatbázis-kezelés (PL/SQL)
FÜGGVÉNYEK Legyen adott A és B két nem üres (szám)halmaz. Az A halmaz minden eleméhez rendeljük hozzá a B halmaz pontosan egy elemét. Ezt az egyértelmű.
Algebrai specifikációk
2. Bevezetés A programozásba
VB ADATTÍPUSOK.
Közigazgatási alapvizsga a Probono rendszerben
Kvantitatív módszerek
Business Mathematics
Grosz imre f. doc. Kombinációs hálózatok /43 kép
Algoritmusok és Adatszerkezetek I.
Dr. habil. Gulyás Lajos, Ph.D. főiskolai tanár
Regressziós modellek Regressziószámítás.
Teljes visszalépéses elemzés
Algoritmusok és Adatszerkezetek I.
Tilk Bence Konzulens: Dr. Horváth Gábor
Cash flow A vállalat működése, befektetései és pénzügyi tevékenysége által genarált pénzáramlásokat tartalmazó kimutatás. Az eredménykimutatásban és a.
Készítette: Sinkovics Ferenc
AVL fák.
Aritmetikai kifejezések lengyelformára hozása
Csomagoló Üzemi optimalizáló és Szimulációs rendszer
Legyünk tisztában a piaci kilátásokkal
Szoftverrobotok vs biorobotok Bemutatkozik Albert, a vállalati robot
A Lineáris Keresés Buktatói
További rendező és kereső algoritmusok
A szállítási probléma.
I. HELYZETFELMÉRÉSI SZINT FOLYAMATA 3. FEJLESZTÉSI FÁZIS 10. előadás
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Dr. Varga Beatrix egyetemi docens
Matematika 11.évf. 1-2.alkalom
Játékosított keretrendszerben történő tanulás log-adatainak elemzése
Binomiális fák elmélete
Matematika II. 5. előadás Geodézia szakmérnöki szak 2015/2016. tanév
Fizikai kémia 2 – Reakciókinetika
Tájékoztató az EPER pályázati folyamatáról
Szöveges adatok tárolása
Edényrendezés - RADIX „vissza” - bináris számokra
Algoritmusok és Adatszerkezetek I.
Algoritmusok.
Név: Pókó Róbert Neptun: OYJPVP
Előadás másolata:

Mintaillesztés Knuth-Morris-Pratt (KMP) algoritmus Csóka Boglárka Algoritmusok és bonyolultságuk 2019. 04. 12.

Miről lesz szó? Bevezetés Elmélet - mintaillesztés majd KMP Konkrét példa Futási idő elemzése Gyakorlati alkalmazás Összefoglalás

Bevezetés Lényege: egy minta összes előfordulását keresi a szövegben Jelentősége: első lineáris idejű „string matching” algoritmus (1970) Ötlet: ha nem egyezik meg meghatározza, hogy hol kezdődhet a következő illeszkedés (szóból nyert információval), így elkerülhető a korábban megvizsgált karakterek újra egyeztetése

Elmélet – mintaillesztés I. Jelölések: szöveg: n hosszúságú T[n] tömb minta: m hosszúságú P[m] tömb (ahol m ≤ n) Ezen tömbök elemei: ∑ véges ábécé jelei (pl. {0,1} vagy {a, b, …. , z}) Azt mondjuk, hogy a P minta előfordul s eltolással a T szövegben (vagy másképpen fogalmazva a P minta a T szöveg (s + 1)-edik pozíciójára illeszkedik), ha 0 ≤ s ≤ n − m és T[s+1 . . s+m] = P[1 . . m] (azaz: ∀ j ∈ [1 . . m] : T[s + j] = P[j])

Elmélet - mintaillesztés II. Konkatenáció: Az x és y sorozatok konkatenációja egy olyan sorozat, amelyben x jeleit y jelei követik, és a hossza |x| + |y|. Jele xy. Prefix: A w sorozat az x sorozat prefixe, ha x = wy. Szuffix: A w sorozat az x sorozat szuffixe, ha x = yw. Példa: X = abcca W1 = ab, Y1= cca W2 =cca, Y2= ab „ab” prefixe az „abcca”-nak „cca” szuffixe az „abcca”-nak

Elmélet – KMP Mintapélda: táblán Előfeldolgozás π [1 . . m] segédfüggvényt határozzuk meg a minta alapján (Futásidő: Θ(m)). Megadja, hogy hogyan illeszkedik a minta önmaga eltoltjaira. Leghosszabb prefixet nézünk ami szuffix is. Illesztés Mintapélda: táblán

Pszeudokódok

Futásidő I. Amortizáló elemzés segítségével (potenciál módszer): A Φ potenciál függvény minden Di adatszerkezethez egy valós Φ(Di) számot rendel, ami a Di adatszerkezethez rendelt potenciál. c*i = ci + Φ(Di) − Φ(Di−1) Művelet amortizációs költsége = tényleges költség + a művelet által okozott potenciálváltozás n művelet: ∑ c*i felső becslés n i=1

Futásidő II. Prefix függvény: k potenciált rendelünk az algoritmus aktuális k értékéhez (nem lehet negatív) 3. sor: kezdeti értéke k=0 6. sor: while ciklus ha belemegy: csökkenti, mert π[k] < k ciklusmag egyes végrehajtásait kiegyenlíthetjük a potenciál függvény értékének csökkentésével 8. sor: if ha belemegy: növeli 1-gyel 5-9. sorokból álló ciklusmag amortizált költsége O(1)

Futásidő III. A külső ciklus m-szer fut le, így a futási ideje: Θ(m) Hasonlóan megmutatható az Illesztő függvényre, hogy futási ideje: Θ(n). Így összegezve Θ(m+n) idő alatt futó lineáris algoritmus

Gyakorlati alkalmazás Legtöbb szókeresési szituációban ez használatos, mivel gyorsabb és kevesebb memóriát használ, mint a többi algoritmus Hosszú szövegek, melyek kevés féle karakterből állnak (pl. DNS- láncokban minta keresése) Kód, videó (lásd: források)

Összefoglalás Célja: a szövegben szereplő összes minta megtalálása, helyeiknek visszaadása Lineáris futási idejű, leghatékonyabb algoritmus Alapötlete: prefix függvényből információt nyerünk, melynek segítségével megoldható, hogy nem kell mindig visszalépni a szövegben a minta kezdetére

Források Új algoritmusok (Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein) http://www.informatom.hu/sze/01/LGB_SZ001/Cormen-Lieserson- Rivest-Stein.-.Uj.algoritmusok.pdf ELTE Algoritmusok és adatszerkezetek honlap: http://tamop412.elte.hu/tananyagok/algoritmusok/lecke33_lap1.ht ml Videó: https://www.youtube.com/watch?v=2ogqPWJSftE Kód: https://www.geeksforgeeks.org/kmp-algorithm-for-pattern- searching/

Köszönöm szépen a figyelmet!