Szövegfeldolgozás II.

Hasonló dokumentumok
32. A Knuth-Morris-Pratt algoritmus

Knuth-Morris-Pratt algoritmus

Algoritmizálás és adatmodellezés tanítása 3. előadás

Algoritmizálás és adatmodellezés 2. előadás

Mintaillesztő algoritmusok. Ölvedi Tibor OLTQAAI.ELTE

Megjegyzés: A programnak tartalmaznia kell legalább egy felhasználói alprogramot. Példa:

MINTAILLESZTÉS Brute-Force algoritmus (BF) Knuth-Morris-Pratt algoritmus (KMP) Quick-Search algoritmus (QS)

Algoritmizálás és adatmodellezés tanítása 9. előadás

Algoritmuselmélet 7. előadás

Multihalmaz, intervallumhalmaz

Visszalépéses kiválogatás

Algoritmusok és adatszerkezetek I. 2. előadás

Algoritmusok és adatszerkezetek I. 2. előadás

Symbol LS 2208 vonlakód olvasó programozása a DOAS ügyviteli rendszerhez

H=0 H=1. Legyen m pozitív egészre {a 1, a 2,, a m } különböző üzenetek halmaza. Ha az a i üzenetet k i -szer fordul elő az adásban,

ELEMI PROGRAMOZÁSI TÉTELEK

EGYSZERŰ, NEM IRÁNYÍTOTT (IRÁNYÍTATLAN) GRÁF

Feladat. Bemenő adatok. Bemenő adatfájlok elvárt formája. Berezvai Dániel 1. beadandó/4. feladat április 13. Például (bemenet/pelda.

Algoritmizálás és adatmodellezés tanítása 2. előadás

Programozási tételek. Dr. Iványi Péter

Algoritmizálás, adatmodellezés 1. előadás

Algoritmizálás, adatmodellezés tanítása 1. előadás

A továbbiakban Y = {0, 1}, azaz minden szóhoz egy bináris sorozatot rendelünk

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés. Szekvenciális fájlkezelés Fájlok használata

Egyszerű programozási tételek

Visszalépéses maximumkiválasztás

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés

I. Specifikáció készítés. II. Algoritmus készítés

Informatikai tehetséggondozás:

Tájékoztató. Használható segédeszköz: -

Írjon olyan programot a standard könyvtár alkalmazásával, amely konzolról megadott valós adatokból meghatározza és kiírja a minimális értékűt!

Algoritmusok és adatszerkezetek 2.

Kép mátrix. Feladat: Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés 2/35

Az informatika kulcsfogalmai

INFORMATIKA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)

Feltételes formázás az Excel 2007-ben

Bevezetés a programozásba I.

Közismereti informatika I. 4. előadás

Időjárási csúcsok. Bemenet. Kimenet. Példa. Korlátok. Nemes Tihamér Nemzetközi Informatikai Tanulmányi Verseny, 2-3. korcsoport

A 2017/2018 tanévi Országos Középiskolai Tanulmányi Verseny első fordulójának feladatai. INFORMATIKA II. (programozás) kategória

Diákigazolvány Elektronikus Igénylési Rendszer Oktatási Hivatal által biztosított igénylő felület. Felhasználói kézikönyv. v 4.1

Algoritmusok és adatszerkezetek I. 1. előadás

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez

Bevezetés az informatikába

Infóka verseny. 1. Feladat. Számok 25 pont

Tudnivalók az otthon kidolgozandó feladatokról

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

SZÁMLÁZÁSI ÉS KÉSZLETEZÉSI PROGRAM

8. Mohó algoritmusok Egy esemény-kiválasztási probléma. Az esemény-kiválasztási probléma optimális részproblémák szerkezete

35. MINTAILLESZTÉS AUTOMATÁVAL

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

Nagy Gábor compalg.inf.elte.hu/ nagy

KETTŐS KÖNYVELÉS PROGRAM

(a 23/2014 (VI.30) NGM és az azt módosító 2/2015. (II. 3.) NGM rendeletek alapján)

Hatékonyság 2. előadás

Adatszerkezetek II. 3. előadás

Shannon és Huffman kód konstrukció tetszőleges. véges test felett

AWK programozás Bevezetés

OEP Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1. Feladat. Elemzés 1

Algoritmizálás, adatmodellezés tanítása 1. előadás

Algoritmizálás, adatmodellezés tanítása 8. előadás

Adatszerkezetek 1. Dr. Iványi Péter

3. ZH-ban a minimum pontszám 15

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Informatikai Rendszerek Alapjai

Partner adatainak betöltése a CKB Trend rendszerbe.

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

IBAN: INTERNATIONAL BANK ACCOUNT NUMBER. I. Az IBAN formái

Informatikai tehetséggondozás:

COMPLEX ONLINE RENDSZER

Tájékoztató. Használható segédeszköz: -

Országos Középiskolai Tanulmányi Verseny, 2004/2005-ös tanév INFORMATIKA, II. (programozói) kategória második fordulójának javítási útmutatója

Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs

BACKTRACKING Visszalépéses keresés

7. Strukturált típusok

Fájlszervezés. Adatbázisok tervezése, megvalósítása és menedzselése

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

AWK programozás, minták, vezérlési szerkezetek

Azonosító jel: INFORMATIKA EMELT SZINTŰ GYAKORLATI VIZSGA október 27., 8:00. A gyakorlati vizsga időtartama: 240 perc OKTATÁSI MINISZTÉRIUM

I. Internetes keresési feladatok (ajánlott idő: 20 perc)

A 2010/2011 tanévi Országos Középiskolai Tanulmányi Verseny második fordulójának megoldása. II. (programozás) kategória

length (s): Az s karaklerlánc hossza, substr(s,m,n): Az s mezőben levő karakterláncnak az m-edik karakterétől kezdődő, n darab karaktert vágja ki.

Szövegszerkesztés alapok

Összetett programozási tételek 2.

RENDEZÉSEK, TOVÁBBI PROGRAMOZÁSI TÉTELEK

ADATBÁZISOK gyakorlat: SQL 2. rész SELECT

Bevezetés a programozásba I.

w w w. h a n s a g i i s k. h u

Adatbázis és szoftverfejlesztés elmélet. Programozási tételek

Adatbázisrendszerek I. File-szintű adattárolás C-ben. 1. gyakorlat

Algoritmizálás, adatmodellezés 1. előadás

Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs

Gyakorló feladatok Gyakorló feladatok

A billentyűzet az egyik legfontosabb adatbeviteli eszköz. Egyéb utasítás hiányában a számítógép innen várja a bemenő információkat, adatokat,

hatására hátra lép x egységgel a toll

Közismereti informatika 2.zh T-M szakirány

Visszalépéses keresés korlátozással

Függvények II. Indítsuk el az Excel programot! A minta alapján vigyük be a Munka1 munkalapra a táblázat adatait! 1. ábra Minta az adatbevitelhez

Algoritmizálás, adatmodellezés tanítása 2. előadás

Átírás:

Szövegfeldolgozás II.

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 2018. 05. 08. 7:33 2/33

Á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 2018. 05. 08. 7:33 3/33

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 2018. 05. 08. 7:33 4/33

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: nem szóköz karakter; TAB-karakter; szóközök nem szóközig. Zsakó László: Szövegfeldolgozás 2018. 05. 08. 7:33 5/33

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) Ír(g,k); Zár(f); Zár(g) Eljárás Nyitás(f): Nyit(f); Olvas(f,k); oszlop:=1 Zsakó László: Szövegfeldolgozás 2018. 05. 08. 7:33 6/33

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 Betűolvasás(f,fajta,kar): fajta:=1; Olvas(f,k) Ha kar=sorvég akkor oszlop:=1 különben oszlop:=oszlop+1 Zsakó László: Szövegfeldolgozás 2018. 05. 08. 7:33 7/33

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 Ha TAB-pozíció(oszlop) akkor fajta:=2 különben fajta:=3 Elágazás vége Zsakó László: Szövegfeldolgozás 2018. 05. 08. 7:33 8/33

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,' ') Elágazás vége Zsakó László: Szövegfeldolgozás 2018. 05. 08. 7:33 9/33

TAB-ok kicsomagolása Szövegfeldolgozás: 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; egyéb karakter. Zsakó László: Szövegfeldolgozás 2018. 05. 08. 7:33 10/33

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) Zár(f); Zár(g) Eljárás Nyitás(g): Nyit(g); oszlop:=1 Zsakó László: Szövegfeldolgozás 2018. 05. 08. 7:33 11/33

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 Szóközökírása(g): Ciklus Ír(g,' '); oszlop:=oszlop+1 amíg nem TAB-pozíció(oszlop) Zsakó László: Szövegfeldolgozás 2018. 05. 08. 7:33 12/33

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 Zsakó László: Szövegfeldolgozás 2018. 05. 08. 7:33 13/33

Tömörítés futamhossz kódolással Futam jelentése: azonos karakterből álló karaktersorozat. Futam vége: előreolvasás. A 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 2018. 05. 08. 7:33 14/33

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) Ír(g,k); Zár(f); Zár(g) Eljárás Nyitás(f): Nyit(f); Olvas(f,k) Zsakó László: Szövegfeldolgozás 2018. 05. 08. 7:33 15/33

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) Zsakó László: Szövegfeldolgozás 2018. 05. 08. 7:33 16/33

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) különben Ír(g,Esc+Karakter(db)+kar) Zsakó László: Szövegfeldolgozás 2018. 05. 08. 7:33 17/33

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) Zár(f,g) Zsakó László: Szövegfeldolgozás 2018. 05. 08. 7:33 18/33

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 Csoportírás(g,db,kar) Ciklus i=1-től db-ig Ír(g,kar) Zsakó László: Szövegfeldolgozás 2018. 05. 08. 7:33 19/33

Tömörítés szótárral Szövegfeldolgozás: 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 2018. 05. 08. 7:33 20/33

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) Zár(f); Zár(g) Zsakó László: Szövegfeldolgozás 2018. 05. 08. 7:33 21/33

Tömörítés szótárral Szövegfeldolgozás: Eljárás Szóolvasás(f,szó,k): szó:= ; k:= Ciklus amíg k és k ElvJel szó:=szó+k; Olvas(f,k) Zsakó László: Szövegfeldolgozás 2018. 05. 08. 7:33 22/33

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))) Zár(f,g) Zsakó László: Szövegfeldolgozás 2018. 05. 08. 7:33 23/33

Huffmann kódolás Szövegfeldolgozás: http://valdar.web.elte.hu/downloads/algoadat2_gy11. pdf Zsakó László: Szövegfeldolgozás 2018. 05. 08. 7:33 24/33

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 2018. 05. 08. 7:33 25/33

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 siker:=(j>hossz(minta)) Ha nem siker akkor i:+1 Zsakó László: Szövegfeldolgozás 2018. 05. 08. 7:33 26/33

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 siker:=(i h) 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 2018. 05. 08. 7:33 27/33

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 2018. 05. 08. 7:33 28/33

s: abababac minta: Szövegfeldolgozás: ababac keresés 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 2018. 05. 08. 7:33 29/33

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 2018. 05. 08. 7:33 30/33

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] Zsakó László: Szövegfeldolgozás 2018. 05. 08. 7:33 31/33

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) siker:=(j>m) Ha siker akkor hol:=i-m Zsakó László: Szövegfeldolgozás 2018. 05. 08. 7:33 32/33

Szövegfeldolgozás előadás vége