• Nem Talált Eredményt

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

N/A
N/A
Protected

Academic year: 2022

Ossza meg "Knuth-Morris-Pratt (KMP) algoritmus Mintaillesztés"

Copied!
15
0
0

Teljes szövegt

(1)

Mintaillesztés

Knuth-Morris-Pratt (KMP) algoritmus

CSÓKA BOGLÁRKA

Algoritmusok és bonyolultságuk 2019. 04. 12.

(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

2

(3)

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

3

(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])

4

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

5

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

6

Mintapélda: táblán

(7)

Pszeudokódok

7

(8)

8

(9)

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

9

i=

1 n

(10)

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)

10

(11)

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

(12)

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

(13)

Ö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

(14)

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

Videó: https://www.youtube.com/watch?v=2ogqPWJSftE

Kód:

https://www.geeksforgeeks.org/kmp-algorithm-for-pattern-searchi ng/

14

(15)

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

15

Hivatkozások

KAPCSOLÓDÓ DOKUMENTUMOK

Már csak azért sem, mert ezen a szinten még nem egyértelmű a tehetség irányú fejlődés lehetősége, és végképp nem azonosítható a tehetség, tehát igen nagy hibák

In 2007, a question of the doctoral dissertation of author was that how the employees with family commitment were judged on the Hungarian labor mar- ket: there were positive

Enzim-szubsztrát komplex kialakulása Az indukált illeszkedés modell... A „fluktuációs

3. Azt l|tjuk, amit ő, a sz|zados l|t; azt halljuk, amit ő mond, vagy amit a narr|tor kierősít gondolataiból. És l|t- juk őt mag|t is a gyufa fekete lángján|l, M|ni

Ahogy a fürdőszobaszekrényt kinyitottam most az előbb, láttam, ott a pohár – ilyesképp jöttem rá, hogy álmom, gyötört kis mozzanat, becsapott, a' vagy épp boldogított

Volt abban valami kísérteties, hogy 1991-ben ugyanolyan módon ugyanoda menekültek az emberek, mint az előző két háború során; azok az ösvények most is ugyanarra kanyarodnak..

A már többször emlegetett legutóbbi Király László-kötet címe: Beűzetés. Rejté- lyes maradhat a kifejezés háttere akkor is, ha rögtön a Bibliára, s az édenből kiűzetésre,

„Bűnnek tartom, hogy a háború- ból, mint reális lehetőségből vagy helyzetből vezércikket írnak, olyan bűnnek, amely semmivel sem kisebb, mint egy háborút elkezdeni.&#34;