1 / 15

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

Mintaillesztés Knuth -Morris- Pratt (KMP) algoritmus. Csóka Boglárka. 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

denisep
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  3. Bevezetés • Lényege: egy minta összes előfordulását keresi a szövegben • Jelentősége: első lineáris idejű „stringmatching” 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

  4. 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])

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

  6. Elmélet – KMP 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

  7. Pszeudokódok

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

  9. 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: ifha belemegy: növeli 1-gyel 5-9. sorokból álló ciklusmag amortizált költsége O(1)

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

  11. 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)

  12. Ö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

  13. Források • Új algoritmusok (Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, CliffordStein) 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.html • Videó: https://www.youtube.com/watch?v=2ogqPWJSftE • Kód: https://www.geeksforgeeks.org/kmp-algorithm-for-pattern-searching/

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

More Related