INFOÉRA 2006 Szövegfeldolgozás III.

Slides:



Advertisements
Hasonló előadás
Egyszerű LL grammatika.  Definíciók  Példa. Ábrákkal  MASM program (szó felismerése LL(1) –ben )
Advertisements

Fejmozgás alapú gesztusok felismerése
Készítette: Mester Tamás METRABI.ELTE.  Egy bemeneten kapott szöveg(karakter sorozat) méretét csökkenteni, minél kisebb méretűre minél hatékonyabb algoritmussal.
Programozási alapismeretek 5. előadás. ELTE Szlávi - Zsakó: Programozási alapismeretek 5.2/  Programozási tételek.
Gazdi László – mérnök informatikus Bsc. Tipikus viselkedési minták felismerése Bsc. Önálló labor téma Készítette: Gazdi László Konzulens:
INFOÉRA 2006 Kombinatorika
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.
Algoritmus és adatszerkezet Tavaszi félév Tóth Norbert1.
Algoritmusok és adatszerkezetek 2 Újvári Zsuzsanna.
Gubicza József (GUJQAAI.ELTE)
Programozási alapismeretek 3. előadás
Programozási alapismeretek 13. előadás. ELTE Érdekességek - kombinatorika  Az iskola bejáratánál N lépcsőfok van. Egyszerre maximum K fokot tudunk lépni,
Programozási alapismeretek
Programozási alapismeretek 10. előadás
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.
Programozási alapismeretek 8. előadás. ELTE 2/  További programozási tételek További programozási tételek 
Sztringek.
MI 2003/ Alakfelismerés - még egy megközelítés: még kevesebbet tudunk. Csak a mintánk adott, de címkék nélkül. Csoportosítás (klaszterezés, clustering).
A HTML alapjai Havlik Barnabás Készítette:
ELTE Szlávi-Zsakó: Programozási alapismeretek 10.1/ Összegzés mátrixra Feladat: Egy mátrix elemeinek összege.
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Huffman Kódolás.
ELTE Szlávi-Zsakó: Programozási alapismeretek Szlávi-Zsakó: Programozási alapismeretek 3. 1/
Bekezdésformázás Nevem: Berkes András Speciális kategória
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ő:
Microsoft Excel Függvények II.
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.
Knuth-Morris-Pratt algoritmus
Adatbányászati módszerek a térinformatikában
Brute Force algoritmus
Programozási alapismeretek 11. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 11.2/ Tartalom  Rendezési.
– SQL 3: SELECT - 1. – Tarcsi Ádám, január 31. Adatbázis gyakorlat.
A Huffman féle tömörítő algoritmus
Algoritmizálás, adatmodellezés tanítása 8. előadás.
Algoritmizálás, adatmodellezés tanítása 2. előadás.
Alapfogalmak, módszerek, szoftverek
Bekezdések formázása 1..
Nagy Szilvia 7. Lineáris blokk-kódok
INFOÉRA 2006 Nagypontosságú aritmetika I.
C Programozási alapok.
Programozási alapismeretek 8. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 8.2/  További programozási.
Programozási alapismeretek 10. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 10.2/  Kiválogatás + összegzés.
Plakát Ha lehet, akkor ez 1.oldalon lévő mintából kellene plakátot készíteni A szöveg középen : Kabát akció!, mellette a piros alapú logo A divat.
Összeállította: Gergely János
INFOÉRA 2006 Nagypontosságú aritmetika II.
KNUTH-MORRIS-PRATT ALGORITMUS (KMP) KÉSZÍTETTE: ZELNIK MÁRTON.
Huffman kód.
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.
LZW (Lempel-Ziv-Welch) tömörítő algoritmus
Huffman tömörítés.
INFOÉRA 2006 Nagypontosságú aritmetika III.
LZW tömörítés Akopjan Alex Algoritmusok és adatszerkezetek 2.
TÁMOP /1-2F Informatikai gyakorlatok 11. évfolyam Alapvető programozási tételek megvalósítása Czigléczky Gábor 2009.
Készítette: Horváth Zoltán
Számábrázolás.
Nevezetes algoritmusok
INFOÉRA Gráfok, gráfalgoritmusok II. (Horváth Gyula és Szlávi Péter előadásai felhasználásával) IDE KELL: prioritási sor kupaccal. Juhász.
INFOÉRA Gráfok, gráfalgoritmusok III. (Horváth Gyula és Szlávi Péter előadásai felhasználásával) Juhász István-Zsakó László: Informatikai.
Algoritmusok és Adatszerkezetek I.
Informatikai gyakorlatok 11. évfolyam
Szövegfeldolgozás 3. Copyright, 1999 © Szlávi Péter Szlávi Péter
Mintaillesztés Knuth-Morris-Pratt (KMP) algoritmus
Programozási tételek.
Algoritmusok és Adatszerkezetek I.
INFOÉRA 2006 Miért tanítsunk informatikát?
Programozási tételek.
Algoritmusok és Adatszerkezetek I.
Szövegfeldolgozás II. INFOÉRA perc kell még hozzá
Előadás másolata:

INFOÉRA 2006 Szövegfeldolgozás III. 2006.11.18 Szövegfeldolgozás III. Juhász István-Zsakó László: Informatikai képzések a ELTE-n

Szövegfeldolgozás: tömörítés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: tömörítés Tömörítés futamhossz kódolással Futam jelentése: azonos karakterből álló karaktersorozat. Futam vége: előreolvasás. A tömörítés elve: a legalább 4 hosszú futamokról tároljuk a bennük szereplő karaktert, valamint a karakterek darab-számát. Kicsomagoláshoz tudnunk kell, hogy kódolt értékről van szó, azaz kell egy speciális karakter (pl. Escape). 2019.07.02. Zsakó László: Szövegfeldolgozás III. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 2

Szövegfeldolgozás: tömörítés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: tömörítés Tömörítés futamhossz kódolással Futam: kar – a futam karaktere, db – a karakterek száma. Tömörítés: Nyitás(f); Nyit(g) Ciklus amíg nem FileVége?(f) Futamolvasás(f,kar,db) Futamírás(g,kar,db) Ciklus vége Ír(g,kar); Zár(f); Zár(g) Eljárás vége. Kérdés: üres sorok a file végén? 2019.07.02. Zsakó László: Szövegfeldolgozás III. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 3

Szövegfeldolgozás: tömörítés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: tömörítés Tömörítés futamhossz kódolással Futamolvasás(f,kar,db): kar:=k; db:=1 Olvas(f,k) Ciklus amíg k=kar és db<255 db:=db+1; Olvas(f,k) Ciklus vége Eljárás vége. Nyitás(f): Nyit(f); Olvas(f,k) Eljárás vége. 2019.07.02. Zsakó László: Szövegfeldolgozás III. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 4

Szövegfeldolgozás: tömörítés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: tömörítés Tömörítés futamhossz kódolással Futamírás(g,kar,db): Ha db<4 akkor Ciklus i=1-től db-ig Ír(g,kar) Ciklus vége különben Ír(g,Esc+Karakter(db)+kar) Eljárás vége. 2019.07.02. Zsakó László: Szövegfeldolgozás III. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 5

Szövegfeldolgozás: tömörítés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: tömörítés Futamhossz kód kicsomagolása Kifejtés: Nyit(f,g) Ciklus amíg nem FileVége?(f) Elemolvasás(f,db,kar) Csoportírás(g,db,kar) Ciklus vége Zár(f,g) Eljárás vége. 2019.07.02. Zsakó László: Szövegfeldolgozás III. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 6

Szövegfeldolgozás: tömörítés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: tömörítés Futamhossz kód kicsomagolása Elemolvasás(f,db,kar): Olvas(f,kar) Ha kar=Esc akkor Olvas(f,kar); db:=Egész(kar) Olvas(f,kar) különben db:=1 Eljárás vége. Csoportírás(g,db,kar) Ciklus i=1-től db-ig Ír(g,kar) Ciklus vége Eljárás vége. 2019.07.02. Zsakó László: Szövegfeldolgozás III. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 7

Szövegfeldolgozás: tömörítés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: tömörítés Tömörítés szótárral Szótár szerepe: a gyakori szavakat egy szótárban tároljuk, majd minden he-lyen a szótárra hivatkozunk. Kicsomagoláshoz tudnunk kell, hogy szótári hivatkozásról van szó, azaz kell egy speciális karakter (pl. Escape). A szótárban csak 256 szó lehet, azaz a szótárbeli sorszámot egyetlen karak-terrel adhatjuk meg. 2019.07.02. Zsakó László: Szövegfeldolgozás III. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 8

Szövegfeldolgozás: tömörítés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: tömörítés Tömörítés szótárral Tömörítés: Nyit(f); Nyit(g) Ciklus amíg nem FileVége?(f) Szóolvasás(f,szó,elv) Keresés(szó,Szótár,van,sorszám) Ha van akkor Ír(g,Esc+Karakter(sorszám)+ elv) különben Ír(g,szó+elv) Ciklus vége Zár(f); Zár(g) Eljárás vége. 2019.07.02. Zsakó László: Szövegfeldolgozás III. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 9

Szövegfeldolgozás: tömörítés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: tömörítés Tömörítés szótárral Szóolvasás(f,szó,k): szó:=’’; k:=’’ Ciklus amíg k’ ’ és kElvJel szó:=szó+k; Olvas(f,k) Ciklus vége Eljárás vége. 2019.07.02. Zsakó László: Szövegfeldolgozás III. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 10

Szövegfeldolgozás: tömörítés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: tömörítés Szótáros kód kicsomagolása Kifejtés: Nyit(f,g) Ciklus amíg nem FileVége?(f) Olvas(f,kar) Ha karEsc akkor Ír(g,kar) különben Olvas(f,kar) Ír(g,Szótár(egész(kar))) Ciklus vége Zár(f,g) Eljárás vége. 2019.07.02. Zsakó László: Szövegfeldolgozás III. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 11

Szövegfeldolgozás: tömörítés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: tömörítés További kódolások Huffman-kód Hivatkozások a szövegre LZW kódolás Változás kódolás 2019.07.02. Zsakó László: Szövegfeldolgozás III. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 12

Szövegfeldolgozás: keresés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: keresés Általános feladat: egy szövegben vagy szövegfile-ban keressünk egy szöveget! Elemi módszer: A keresett szöveg minden karakterét hasonlítsuk a hosszú szöveg elejétől a megfelelő számú karakterrel! Ha nem egyezik, akkor a hosszú szö-vegben 1 karakterrel lépjünk tovább és újra hasonlítsunk! 2019.07.02. Zsakó László: Szövegfeldolgozás III. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 13

Szövegfeldolgozás: keresés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: keresés Elemi módszer Keresés(s,minta,siker,i): siker:=Hamis; i:=1 h:=Hossz(s)-Hossz(minta)+1 Ciklus amíg ih és nem siker j:=1 Ciklus amíg jHossz(minta) és minta(j)=s(i+j-1) j:=j+1 Ciklus vége siker:=(j>Hossz(minta)) Ha nem siker akkor i:=i+1 Ciklus vége Eljárás vége. 2019.07.02. Zsakó László: Szövegfeldolgozás III. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 14

Szövegfeldolgozás: keresés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: keresés Elemi módszer egyszerűbben (lásd mátrixban keresés) Keresés(s,minta,siker,i): siker:=Hamis; i:=0; j:=1 h:=Hossz(s)-Hossz(minta) Ciklus amíg ih és jHossz(minta) Ha minta(j)=s(i+j) akkor j:=j+1 különben i:=i+1; j:=1 Ciklus vége siker:=(ih) Eljárás vége. 1-1 2-2 3-3 2-1 3-2 4-3 3-1 4-2 5-3 4-1 5-2 6-3 2019.07.02. Zsakó László: Szövegfeldolgozás III. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 15

Szövegfeldolgozás: keresés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: keresés Elemi módszer elemzése A külső ciklus lépésszáma: a két szöveg hosszának H különbsége. A belső ciklus maximális lépésszáma: a keresett szöveg K hossza. A maximális futási idő: K*H. Javítási ötletek: K csökkentése H csökkentése 2019.07.02. Zsakó László: Szövegfeldolgozás III. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 16

Szövegfeldolgozás: keresés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: keresés Elemi módszer megfordítva Keresés(s,minta,siker,i): siker:=Hamis; i:=1 h:=Hossz(s)-Hossz(minta)+1 Ciklus amíg ih és nem siker j:=hossz(minta) Ciklus amíg j>0 és minta(j)=s(i+j-1) j:=j-1 Ciklus vége siker:=(j=0) Ha nem siker akkor i:=i+1 Ciklus vége Eljárás vége. 2019.07.02. Zsakó László: Szövegfeldolgozás III. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 17

Szövegfeldolgozás: keresés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: keresés Eltolás a minta elemei alapján – pró-báljuk felhasználni a hasonlítás ered-ményét a minta több karakterrel eltolá-sára! s: abbccacabc  minta: abc eltolás: ??1 Az utolsó karakterek nem egyeznek, elto-lás jobbra 1 hellyel. 2019.07.02. Zsakó László: Szövegfeldolgozás III. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 18

Szövegfeldolgozás: keresés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: keresés Ha a minta betűi mind különbözőek: s: abbccacabc  minta: abc eltolás: ?2? Hátulról második, eltolás jobbra 2 hellyel. s: abbccacabc  minta: abc eltolás: 3?? Hátulról harmadik, eltolás jobbra 3 hellyel. Különböző elemekre - eltolás: 321 2019.07.02. Zsakó László: Szövegfeldolgozás III. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 19

Szövegfeldolgozás: keresés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: keresés Ha a minta betűi közel ismétlődnek: s: abccbcabbc  minta: abbc eltolás: ??21 Hátulról második, eltolás jobbra 2 hellyel. s: abccbcabbc  minta: abbc eltolás: ?321 Hátulról harmadik, eltolás jobbra 3 hellyel. Tehát az eltolás: 4321 2019.07.02. Zsakó László: Szövegfeldolgozás III. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 20

Szövegfeldolgozás: keresés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: keresés Ha a minta betűi távol ismétlődnek: s: dbbaabba  minta: abba eltolás: 3321 Hátulról negyedik, eltolás csak 3 hellyel. s: dbbacabbac  minta: abbac eltolás: 54321 Hátulról ötödik, eltolás mégis 5 hellyel. 2019.07.02. Zsakó László: Szövegfeldolgozás III. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 21

Szövegfeldolgozás: keresés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: keresés Az eltolási vektor hátulról monoton növekvő, a (hátulról) elsőként előfordulóhoz a hátulról vett sorszáma, a nem először előforduló esetén vagy az előzőtől vett távolság; vagy a saját sorszáma (hátulról), ha előző (hátulról) az első ilyen, vagy ha a monotonitási szabály szerinti minimális távolságon túl van vele azonos, akkor a legközelebbi ilyentől vett távolsága. 2019.07.02. Zsakó László: Szövegfeldolgozás III. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 22

Szövegfeldolgozás: keresés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: keresés Eltolásvektor előállítása Eltolás(minta,ev): n:=hossz(minta); ev(n):=1 Ciklus i=n-1-től 1-ig -1-esével ev(i):=ev(i+1) Ciklus amíg i+ev(i)n és minta(i)minta(i+ev(i)) ev(i):=ev(i)+1 Ciklus vége Ciklus vége Eljárás vége. 2019.07.02. Zsakó László: Szövegfeldolgozás III. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 23

Szövegfeldolgozás: keresés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: keresés Eltolás a minta elemei alapján Keresés(s,minta,siker,i): siker:=Hamis; i:=1 h:=Hossz(s)-Hossz(minta)+1 Ciklus amíg ih és nem siker j:=hossz(minta) Ciklus amíg j>0 és minta(j)=s(i+j-1) j:=j-1 Ciklus vége siker:=(j=0) Ha nem siker akkor i:=i+ev(j) Ciklus vége Eljárás vége. 2019.07.02. Zsakó László: Szövegfeldolgozás III. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 24

Szövegfeldolgozás: keresés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: keresés Knuth-Morris-Pratt módszer – pró-báljunk a szöveg karakterein előre haladni! s: abababac  minta: ababac Eltolás 2-vel jobbra! Ha az utolsó helyen eltérés van, hogyan lehetne megúszni, hogy a korábbi ka-raktereket ne kelljen még egyszer ha-sonlítani? 2019.07.02. Zsakó László: Szövegfeldolgozás III. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 25

Szövegfeldolgozás: keresés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: keresés s: abababac  minta: ababac Olyan eltolás kell, hogy az eddig illesz-kedő betűk továbbra is illeszkedjenek! Az a-betű miatt 2 vagy 4 vagy 5, a b betű miatt 2 vagy 4 lehetne az eltolás. Azaz az adott rész elejét (prefix) olyan helyre tolhatjuk, ahol éppen megegye-zik az adott rész végével (szuffix), s ebből a legnagyobbat kell venni. 2019.07.02. Zsakó László: Szövegfeldolgozás III. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 26

Szövegfeldolgozás: keresés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: keresés köv(j) – mi a következő jó mintabeli ha-sonlítandó, ha a minta j+1-edik tagja nem illeszkedett. Azaz legyen köv(j) a leghosszabb mintabeli kezdőszelet (prefix) és vele egyező minta(1..j) végszelete (szuffix) távolsága! s: abudabudabusz  minta: abudabusz Ha nincs ilyen kezdőszelet, akkor köv(j)=1. 2019.07.02. Zsakó László: Szövegfeldolgozás III. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 27

Szövegfeldolgozás: keresés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: keresés Következőre lépő vektor készítése Eltolás(minta,köv): i:=1; j:=0; köv[0]:=0 Ciklus amíg i≤hossz(minta) Ha minta(i)=minta(j) vagy j=0 akkor i:=i+1; j:=j+1; köv[i]:=j különben j:=köv[j] Ciklus vége Eljárás vége. 2019.07.02. Zsakó László: Szövegfeldolgozás III. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 28

Szövegfeldolgozás: keresés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: keresés Knuth-Morris-Pratt Keresés(s,minta,siker,hol): i:=1; j:=1; m:=hossz(minta) Ciklus amíg i≤hossz(s) és j≤m Ha minta(j)=s(i)vagy j=0 akkor i:=i+1; j:=j+1 különben j:=köv(j) Ciklus vége siker:=(j>m) Ha siker akkor hol:=i-m Eljárás vége. 2019.07.02. Zsakó László: Szövegfeldolgozás III. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 29

Szövegfeldolgozás: keresés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: keresés Boyer-Moore módszer – a szöveg lehetséges karakterei alapján adjuk meg, hogy a mintát milyen messzire kell tolni! Ha a minta utáni karakter nem szerepel a mintában, akkor a mintát e mögé kell eltolni! Ha szerepel, akkor a mintabeli utolsó előfordulását kell ide tolni! 2019.07.02. Zsakó László: Szövegfeldolgozás III. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 30

Szövegfeldolgozás: keresés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: keresés Boyer-Moore Keresés(s,minta,siker,hol): i:=0; j:=1; m:=hossz(minta) Ciklus amíg i+j≤hossz(s) és j≤m Ha minta(j)=s(i+j) akkor j:=j+1 különben ha i+j=hossz(s) akkor i:=i+1 {kilépés} különben i:=i+ev(s(i+j+1)); j:=1 Ciklus vége siker:=(j>m) Ha siker akkor hol:=i+1 Eljárás vége. 2019.07.02. Zsakó László: Szövegfeldolgozás III. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 31

Szövegfeldolgozás: keresés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: keresés Rabin-Karp módszer – a szöveget ne karakterenként hasonlítsuk! Tekintsük a keresendő, m hosszúságú mintát úgy, mint egy d alapú számrend-szerben felírt egész számot, ahol d=a szövegben előfordulható jelek száma! A mintából és a szöveg részeiből is egy-egy ilyen számot készítünk, majd számonként hasonlítunk. 2019.07.02. Zsakó László: Szövegfeldolgozás III. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 32

Szövegfeldolgozás: keresés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: keresés Rabin-Karp módszer k(i):=Kód(minta(i)); z(i):=Kód(s(i)) X:=k(1)*dm-1+k(2)*dm-2+...+k(m-1)*d+k(m) Y(1):=z(1)*dm-1+z(2)*dm-2+...+z(m) Y(i):=(Y(i-1) mod dm-1)*d+z(i+m-1) Probléma: X és Y(i) túl nagy lehet. Megoldás: X mod P és Y(i) mod P hasz-nálata. Ekkor ha X=Y(i), abból még nem biztos, hogy szövegegyezés van, azt még külön meg kell nézni! 2019.07.02. Zsakó László: Szövegfeldolgozás III. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 33

Szövegfeldolgozás: keresés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: keresés Rabin-Karp módszer Keresés(s,minta,siker,hol): m:=Hossz(minta); dh:=1 Ciklus i=1-től m-1-ig dh:=(d*dh) mod q Ciklus vége s1:=0 Ciklus i=1-től m-ig s1:=(s1*d+Kód(sminta(i))) mod q Ciklus vége s2:=0 Ciklus i=1-től m-ig s2:=(s2*d+Kód(s(i))) mod q Ciklus vége 2019.07.02. Zsakó László: Szövegfeldolgozás III. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 34

Szövegfeldolgozás: keresés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: keresés Rabin-Karp módszer i:=1; siker:=s1=s2 és jó(i) Ciklus amíg i≤Hossz(s)-m és nem siker s2:=(s2+d*q-Kód(s(i))*dh) mod q s2:=(s2*d+Kód(s(i+m))) mod q siker:=s1=s2 és jó(i) i:=i+1 Ciklus vége Eljárás vége. Jó(i). A minta karakterenként megegyezik a szöveggel az i-edik karaktertől kezdve. 2019.07.02. Zsakó László: Szövegfeldolgozás III. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 35

INFOÉRA 2006 2006.11.18 Vége Zsakó László: Szövegfeldolgozás III. Zsakó László: Programozási alapismeretek M Juhász István-Zsakó László: Informatikai képzések a ELTE-n