Szövegfeldolgozás II. INFOÉRA perc kell még hozzá

Slides:



Advertisements
Hasonló előadás
Én így tanítanám a tabulátorok használatát…
Advertisements

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.
INFOÉRA Kombinatorikai algoritmusok (Horváth Gyula és Szlávi Péter előadásai felhasználásával) Juhász István-Zsakó László: Informatikai.
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.
Készítette: Lakos Péter
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 8. előadás. ELTE 2/  További programozási tételek További programozási tételek 
Sztringek.
Bevezetés a Java programozásba
Táblázatkezelés alapjai MS Excel, OpenOffice Calc
Mátrix függvények Keresőfüggvények
Fák, bináris fák INFOÉRA Ez így 60 perc.
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
ELTE Szlávi-Zsakó: Programozási alapismeretek Szlávi-Zsakó: Programozási alapismeretek 3. 1/
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 VII..
Microsoft Excel Függvények II.
Összetett adattípusok
Knuth-Morris-Pratt algoritmus
Brute Force algoritmus
Programozási alapismeretek 11. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 11.2/ Tartalom  Rendezési.
Informatika I. 4. Szöveg és dátumfüggvények.
Algoritmusok.
– SQL 3: SELECT - 1. – Tarcsi Ádám, január 31. Adatbázis gyakorlat.
– SELECT - 2. – Tarcsi Ádám március Adatbázis gyakorlat.
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
Táblázatok.
Feladatok (értékadás)
– SELECT - 1. – Tarcsi Ádám január Adatbázis gyakorlat.
Bekezdések formázása 1..
Függvények.
INFOÉRA 2006 Nagypontosságú aritmetika I.
C Programozási alapok.
Hibajavító kódok.
Programozási alapismeretek 8. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 8.2/  További programozási.
Feladatok a lista adatszerkezethez Összeállította: Gergely János.
Algoritmizálás, adatmodellezés
Bekezdések formázása 1..
Összeállította: Gergely János
Az 5,6,7 laborok VBA anyagának összefoglalása
KNUTH-MORRIS-PRATT ALGORITMUS (KMP) KÉSZÍTETTE: ZELNIK MÁRTON.
Demo Próbálja meg feltörni a következő Caesar-kódolással kódolt üzenetet. Használja a gyakorisági táblázatot a feltöréshez, úgy hogy a kódolt szövegben.
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.
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.
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.
Halmazműveletek.
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.
Problémamegoldási stratégiák
INFOÉRA Halmazok Juhász István-Zsakó László: Informatikai képzések a ELTE-n.
Informatikai gyakorlatok 11. évfolyam
Mintaillesztés Knuth-Morris-Pratt (KMP) algoritmus
Programozási tételek.
Algoritmusok és Adatszerkezetek I.
Programozási tételek.
INFOÉRA 2006 Szövegfeldolgozás III.
Előadás másolata:

Szövegfeldolgozás II. INFOÉRA 2006 2006.11.18 30 perc kell még hozzá Juhász István-Zsakó László: Informatikai képzések a ELTE-n

Szövegfeldolgozási alapfeladatok INFOÉRA 2006 2006.11.18 Szövegfeldolgozási alapfeladatok Tömörítés: egy szöveget vagy szövegfájlt alakítsunk át úgy, hogy kevesebb helyet foglaljon (valamint alakítsuk vissza)! Keresés: egy szövegben vagy szövegfájlban keressünk egy szöveget! Zsakó László: Szövegfeldolgozás 2019.10.09. 8:23 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 Általános feladat: egy szöveget alakítsunk át olyan ábrázolásúra, hogy kevesebb helyet foglaljon! A tömörített szövegnek visszaalakíthatónak kell lenni! Módszerek: karakterek kódolása karaktersorozatok kódolása Zsakó László: Szövegfeldolgozás 2019.10.09. 8:23 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 TAB-karakterekkel TAB karakter jelentése: az aktuális pozíciótól a következő tabulációs-pozícióig szóközöket kell írni! Tabulációs pozíció (balra igazított): fix távolságra egymástól; beállítható pozíciókban. Tömörítés: szóközök helyére TAB. Kicsomagolás: TAB helyére szóközök. Zsakó László: Szövegfeldolgozás 2019.10.09. 8:23 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 TAB-karakterekkel A bemenő elemek csoportosítása: nem szóköz karakter; szóközök TAB-pozícióig; szóközök nem szóközig. A kimenő elemek csoportosítása: TAB-karakter; Zsakó László: Szövegfeldolgozás 2019.10.09. 8:23 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 Tömörítés TAB-karakterekkel Csoport: fajta – az eset sorszáma, kar – a beolvasott karakter, db – a szóközök száma, k – az előreolvasott karakter, oszlop – aktuális pozíció. Eljárás Tömörítés: Nyitás(f); Nyit(g) Ciklus amíg nem FileVége?(f) Csoportolvasás(f,fajta,kar,db) Csoportírás(g,fajta,kar,db) Ciklus vége Ír(g,k); Zár(f); Zár(g) Eljárás vége. Eljárás Nyitás(f): Nyit(f); Olvas(f,k); oszlop:=1 Eljárás vége. Zsakó László: Szövegfeldolgozás 2019.10.09. 8:23 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 Tömörítés TAB-karakterekkel Eljárás Csoportolvasás(f,fajta,kar,db): kar:=k Ha k' ' akkor Betűolvasás(f,fajta,kar) különben Szóközolvasás(f,fajta,kar,db) Eljárás vége. Eljárás Betűolvasás(f,fajta,kar): fajta:=1; Olvas(f,k) Ha kar=Sorvég akkor oszlop:=1 különben oszlop:=oszlop+1 Eljárás vége. Zsakó László: Szövegfeldolgozás 2019.10.09. 8:23 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 TAB-karakterekkel Eljárás Szóközolvasás(f,fajta,kar,db): db:=0 Ciklus amíg k=' ' és nem TAB-pozíció(oszlop) db:=db+1; Olvas(f,k) oszlop:=oszlop+1 Ciklus vége Ha TAB-pozíció(oszlop) akkor fajta:=2 különben fajta:=3 Elágazás vége Eljárás vége. Zsakó László: Szövegfeldolgozás 2019.10.09. 8:23 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 TAB-karakterekkel Eljárás Csoportírás(g,fajta,kar,db): Ha fajta=1 akkor Ír(g,kar) különben ha fajta=2 akkor Ír(g,TAB) különben Ciklus i=1-től db-ig Ír(g,' ') Ciklus vége Elágazás vége Eljárás vége. Zsakó László: Szövegfeldolgozás 2019.10.09. 8:23 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 TAB-ok kicsomagolása A bemenő elemek csoportosítása: TAB karakter; egyéb karakter. A kimenő elemek csoportosítása: szóközök TAB-pozícióig; Zsakó László: Szövegfeldolgozás 2019.10.09. 8:23 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 TAB-ok kicsomagolása Eljárás TABtalanítás: Nyit(f); Nyitás(g) Ciklus amíg nem FileVége?(f) Olvas(f,kar) Csoportírás(g,kar) Ciklus vége Zár(f); Zár(g) Eljárás vége. Eljárás Nyitás(g): Nyit(g); oszlop:=1 Eljárás vége. Zsakó László: Szövegfeldolgozás 2019.10.09. 8:23 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 TAB-ok kicsomagolása Eljárás Csoportírás(g,kar): Ha kar=TAB akkor Szóközökírása(g) különben Betűírás(g,kar) Eljárás vége. Eljárás Szóközökírása(g): Ciklus Ír(g,' '); oszlop:=oszlop+1 amíg nem TAB-pozíció(oszlop) Ciklus vége Eljárás vége. Zsakó László: Szövegfeldolgozás 2019.10.09. 8:23 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 12

Szövegfeldolgozás: tömörítés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: tömörítés TAB-ok kicsomagolása Eljárás Betűírás(g,kar): Ír(g,kar) Ha kar=Sorvég akkor oszlop:=1 különben oszlop:=oszlop+1 Eljárás vége. Zsakó László: Szövegfeldolgozás 2019.10.09. 8:23 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 13

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 darabszámát. Kicsomagoláshoz tudnunk kell, hogy kódolt értékről van szó, azaz kell egy speciális karakter (pl. Escape). Zsakó László: Szövegfeldolgozás 2019.10.09. 8:23 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 14

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. Eljárás 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,k); Zár(f); Zár(g) Eljárás vége. Eljárás Nyitás(f): Nyit(f); Olvas(f,k) Eljárás vége. Zsakó László: Szövegfeldolgozás 2019.10.09. 8:23 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 15

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 Eljárás Futamolvasás(f,kar,db): kar:=k; db:=1 Olvas(f,k) Ciklus amíg nem FileVége?(f) és k=kar és db<255 db:=db+1; Olvas(f,k) Ciklus vége Eljárás vége. Zsakó László: Szövegfeldolgozás 2019.10.09. 8:23 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 16

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 Eljárás 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. Zsakó László: Szövegfeldolgozás 2019.10.09. 8:23 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 17

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 Eljárás 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. Zsakó László: Szövegfeldolgozás 2019.10.09. 8:23 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 18

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 Eljárás 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. Eljárás Csoportírás(g,db,kar) Ciklus i=1-től db-ig Ír(g,kar) Ciklus vége Eljárás vége. Zsakó László: Szövegfeldolgozás 2019.10.09. 8:23 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 19

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 helyen 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 karakterrel adhatjuk meg. Zsakó László: Szövegfeldolgozás 2019.10.09. 8:23 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 20

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 Eljárás 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. Zsakó László: Szövegfeldolgozás 2019.10.09. 8:23 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 21

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 Eljárás 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. Zsakó László: Szövegfeldolgozás 2019.10.09. 8:23 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 22

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 Eljárás 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. Zsakó László: Szövegfeldolgozás 2019.10.09. 8:23 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 23

Szövegfeldolgozás: tömörítés INFOÉRA 2006 2006.11.18 Szövegfeldolgozás: tömörítés Huffmann kódolás http://valdar.web.elte.hu/downloads/algoadat2_gy11.pdf Zsakó László: Szövegfeldolgozás 2019.10.09. 8:23 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 Általános feladat: egy szövegben vagy szövegfájlban 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! Zsakó László: Szövegfeldolgozás 2019.10.09. 8:23 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 Elemi módszer Eljárás 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:+1 Ciklus vége siker:=(j>Hossz(minta)) Ha nem siker akkor i:+1 Ciklus vége Eljárás vége. Zsakó László: Szövegfeldolgozás 2019.10.09. 8:23 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 Elemi módszer egyszerűbben (lásd mátrixban keresés) Eljárá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:+1 különben 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 Zsakó László: Szövegfeldolgozás 2019.10.09. 8:23 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 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 karaktereket ne kelljen még egyszer hasonlítani? http://people.inf.elte.hu/fekete/algoritmusok_jegyzet/32_fejezet_Knuth_Morris_Pratt_alg.pdf Zsakó László: Szövegfeldolgozás 2019.10.09. 8:23 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 s: abababac  minta: ababac Olyan eltolás kell, hogy az eddig illeszkedő 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 megegyezik az adott rész végével (szuffix), s ebből a legnagyobbat kell venni. Zsakó László: Szövegfeldolgozás 2019.10.09. 8:23 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 köv(j) – mi a következő jó mintabeli hasonlí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. Zsakó László: Szövegfeldolgozás 2019.10.09. 8:23 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 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. Zsakó László: Szövegfeldolgozás 2019.10.09. 8:23 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 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. Zsakó László: Szövegfeldolgozás 2019.10.09. 8:23 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 32

Szövegfeldolgozás előadás vége INFOÉRA 2006 2006.11.18 Juhász István-Zsakó László: Informatikai képzések a ELTE-n