Mintaillesztő algoritmusok. Ölvedi Tibor OLTQAAI.ELTE

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

Szövegfeldolgozás II.

sallang avagy Fordítótervezés dióhéjban Sallai Gyula

Algoritmusok és adatszerkezetek II. kidolgozott vizsgakérdések

Knuth-Morris-Pratt algoritmus

Diszkrét matematika 2. estis képzés

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

XIII. Bolyai Konferencia Bodnár József Eötvös József Collegium, ELTE TTK, III. matematikus. A véletlen nyomában

8. Laboratóriumi gyakorlat: Bevezetés a reguláris kifejezések használatába

Érettségi eredmények 2005-től (Békéscsabai Andrássy Gyula Gimnázium és Kollégium)

A vezérlő alkalmas 1x16, 2x16, 2x20, 4x20 karakteres kijelzők meghajtására. Az 1. ábrán látható a modul bekötése.

A fordítóprogramok szerkezete. Kódoptimalizálás. A kódoptimalizálás célja. A szintézis menete valójában. Kódoptimalizálási lépések osztályozása

Informatika 1 2. el adás: Absztrakt számítógépek

SZOFTVER AJÁNLATOK. A) Építőmérnöki szoftverek. B) AutoCAD programok védelme. C) MÉRNÖK SZÓTÁR rendszer. Érvényes 2014.

Algoritmuselmélet. Bonyolultságelmélet. Katona Gyula Y.

openbve járműkészítés Leírás az openbve-hez kapcsolódó extensions.cfg fájl elkészítéséhez

8. Laboratóriumi gyakorlat: Bevezetés a reguláris kifejezések használatába

Diszkrét matematika 2.C szakirány

2015. évi Bolyai János Megyei Matematikaverseny MEGOLDÁSI ÉS ÉRTÉKELÉSI ÚTMUTATÓ 9. osztály

Nézetek és indexek. AB1_06C_Nézetek_Indexek - Adatbázisok-1 EA (Hajas Csilla, ELTE IK) - J.D. Ullman elıadásai alapján

Komputeralgebrai Algoritmusok

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós szeptember 27. Széchenyi István Egyetem, Gy r

Az Informatika Elméleti Alapjai

Formális nyelvek és automaták vizsgához statisztikailag igazolt várható vizsgakérdések

V. Kétszemélyes játékok

API-MÁGIA MILLIÓ SORNYI ADAT ÚJRARENDEZÉSE. Előadó: Jaksa Zsombor, drungli.com

Véges automaták, reguláris nyelvek

BABEŞ BOLYAI TUDOMÁNYEGYETEM MATEMATIKA ÉS INFORMATIKA KAR BBTE Matek-Infó verseny 1. tételsor INFORMATIKA írásbeli. A versenyzők figyelmébe:

8. Laboratóriumi gyakorlat: Bevezetés a reguláris kifejezések használatába

Algoritmuselmélet. Hashelés. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

C programozás. { Márton Gyöngyvér, 2009 } { Sapientia, Erdélyi Magyar Tudományegyetem }

Adaptív dinamikus szegmentálás idősorok indexeléséhez

Formális nyelvek és automaták

Algoritmuselmélet 7. előadás

Statisztikai módszerek a skálafüggetlen hálózatok

Programozás I. 1. előadás: Algoritmusok alapjai. Sergyán Szabolcs

Magyar és angol szóasszociációs hálózatok vizsgálata. Orosz Katalin Kovács László Pollner Péter

Algoritmusok bonyolultsága

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

Algoritmusok és adatszerkezetek II. régebbi vizsgakérdések.

Biztonságos mobilalkalmazás-fejlesztés a gyakorlatban. A CryptTalk fejlesztése során alkalmazott módszerek. Dr. Barabás Péter Arenim Technologies

Algoritmuselmélet. Hashelés. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

DAT adatcserefájl AutoCAD MAP DWG mapobject konvertáló program dokumentáció

Bevezetés a programozásba

Rekurzió. Dr. Iványi Péter

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

3. ZH-ban a minimum pontszám 15

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

Algoritmuselmélet. 2-3 fák. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 8.

Algoritmusok és adatszerkezetek II.

Algoritmusok és adatszerkezetek 2.

2. Visszalépéses stratégia

35. MINTAILLESZTÉS AUTOMATÁVAL

A kapcsolás alapjai, és haladó szintű forgalomirányítás. 1. Ismerkedés az osztály nélküli forgalomirányítással

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök

Más szavakkal formálisan:, ahol olyan egész szám, hogy. Más szavakkal formálisan:, ahol olyan egész szám, hogy.

Országos Középiskolai Tanulmányi Verseny 2006/2007-os tanév INFORMATIKA, II. (programozás) kategória második fordulójának feladatai

BÖLCS BAGOLY LEVELEZŐS MATEMATIKAVERSENY III. forduló MEGOLDÁSOK

Gráfelmélet. I. Előadás jegyzet (2010.szeptember 9.) 1.A gráf fogalma

Programozás alapjai II. (7. ea) C++

Algoritmuselmélet 18. előadás

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

JAVASLAT a HB nyomtatványok és csekkszelvények gyártására

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

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

Bevezetés a programozásba I.

Dicsőségtabló Beadós programozási feladatok

Diszkrét matematika 2.C szakirány

Országos Középiskolai Tanulmányi Verseny 2009/2010 Matematika I. kategória (SZAKKÖZÉPISKOLA) 2. forduló feladatainak megoldása

7. 17 éves 2 pont Összesen: 2 pont

Új műveletek egy háromértékű logikában

Közönséges differenciál egyenletek megoldása numerikus módszerekkel: egylépéses numerikus eljárások

Hamilton-körök és DNS molekulák

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

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

Megoldás Digitális technika I. (vimia102) 4. gyakorlat: Sorrendi hálózatok alapjai, állapot gráf, állapottábla

Következik, hogy B-nek minden prímosztója 4k + 1 alakú, de akkor B maga is 4k + 1 alakú, s ez ellentmondás.

Hamilton-körök és DNS molekulák

Operációs rendszerek. 10. gyakorlat. AWK - bevezetés UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

HÁZI FELADAT ELSŐ GYAKORLAT MIELŐTT ELKEZDENÉNK ELINDULÁS. ÜZLETI INFORMATIKAI ESZKÖZÖK Kiadványszerkesztés

5. osztály. 1. Az informatikai eszközök használata:

Gyakorló feladatok Gyakorló feladatok

A Gray-kód Bináris-kóddá alakításának leírása

Kontrollcsoport-generálási lehetőségek retrospektív egészségügyi vizsgálatokhoz

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Gráfelmélet II. Gráfok végigjárása

I. A DIGITÁLIS ÁRAMKÖRÖK ELMÉLETI ALAPJAI

Cohen-Sutherland vágóalgoritmus

Diszkrét matematika 2.C szakirány

Diszkrét matematika 1. estis képzés

Jó munkát! 8. OSZTÁLY 2 = C = A B =

Grafikonok automatikus elemzése

ContractTray program Leírás

Programozás alapjai. 6. gyakorlat Futásidő, rekurzió, feladatmegoldás

Egyszerű programozási tételek

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

Makrók használata az Excelben - Makróhibák kezelése, biztonságos jelszavak generálása

Közösség detektálás gráfokban

Adatbázis alapú rendszerek

Diszkrét matematika I.

Átírás:

Mintaillesztő algoritmusok Ölvedi Tibor OLTQAAI.ELTE

Mintaillesztő algoritmusok Amiről szó lesz: Bruteforce algoritmus Knuth-Morris-Pratt algoritmus Rabin-Karp algoritmus Boyer-Moore algoritmus Boyer-Moore-Horspool algoritmus Zhu-Takaoka algoritmus Aho-Corasick algoritmus

Bruteforce eljárás Minden lehetséges helyen keres Minden karaktert lehetséges kezdőnek tekint Kivéve a legutolsókat Majd ezek után leellenőrzi karakterenként az egyezést

Bruteforce eljárás almanemalmalmdegalmafaisvan

Bruteforce eljárás almanemalmalmdegalmafaisvan a

Bruteforce eljárás almanemalmalmdegalmafaisvan

Bruteforce eljárás almanemalmalmdegalmafaisvan alm

Bruteforce eljárás almanemalmalmdegalmafaisvan

Bruteforce eljárás almanemalmalmdegalmafaisvan alm_

Bruteforce eljárás almanemalmalmdegalmafaisvan alm_ almafa

Knuth-Morris-Pratt algoritmus Javítsunk az algoritmuson, úgy, hogy csak egyszer megyünk végig az elemeken Ha egymásba illeszkedő helyek vannak, tároljuk el azt külön, és egyszerre vizsgáljuk több helyen az illesztést

Knuth-Morris-Pratt algoritmus almanemalmalmdegalmafaisvan a

Knuth-Morris-Pratt algoritmus almanemalmalmdegalmafaisvan

Knuth-Morris-Pratt algoritmus almanemalmalmdegalmafaisvan alm

Knuth-Morris-Pratt algoritmus almanemalmalmdegalmafaisvan alma a

Knuth-Morris-Pratt algoritmus almanemalmalmdegalmafaisvan al

Knuth-Morris-Pratt algoritmus almanemalmalmdegalmafaisvan alm_

Knuth-Morris-Pratt algoritmus almanemalmalmdegalmafaisvan alm_ almafa

Rabin-Karp algoritmus Még gyorsabb algoritmus főleg, ha több mintát is keresünk A lényeg: hashelés Kicsit módosítani kell nagy bemenetek esetén Majd a módosítás utáni hibákat kijavítani Feldolgozás két lépcsőben

Rabin-Karp algoritmus keresendő hosszával azonos hosszúságú részkaraktersorozatokat leképezünk egész számokra Majd az így kapott egészeket hasonlítjuk össze Egyezéseknél megvizsgáljuk magukat a karaktersorozatokat is. Így összességében kevesebb az összehasonlítás

Rabin-Karp algoritmus A hasítófüggvény: A karaktereket lekódoljuk ASCII szerint számokra Majd valami nagyobb prím alapú számrendszerben tekintjük az így kapott számok sorozatát egy szám jegyeinek Ezeket a számjegyekből álló számokat pedig átszámítjuk az alapértelmezett számrendszerbe Más hasítással is megoldható

Rabin-Karp algoritmus Eredmény: csak egész számokat hasonlítunk össze, nem karaktersorozatokat Ezáltal gyorsabb A karakterek összehasonlítása csak nagyon ritkán történik meg Egyszerre több számmal is összehasonlíthatjuk a hashelés során kapott értékeket, ha több mintát is keresünk

Boyer-Moore algoritmus Működése meglepő Visszafele keres Nagy ugrásokkal halad Kevés összehasonlítást végez Főleg akkor hasznos, ha a mintában sok az ismétlődő karakter

Boyer-Moore algoritmus - - - - - - - X - - - - - - - A N P A N M A N - - - - - - - - A N P A N M A N - - - - - - - - A N P A N M A N - - - - - - - - A N P A N M A N - - - - - - - - A N P A N M A N - - - - - - - - A N P A N M A N - - - - - - - - A N P A N M A N - - - - - - - - A N P A N M A N

Boyer-Moore algoritmus Az algoritmus a tényleges keresés előtt legenerál számára hasznos táblákat Rossz karakter eltolási tábla Milyen messze van a minta jobb szélétől a legutolsó, karakter Jó végződés eltolási tábla Mennyit kell lépni ahhoz, hogy olyan hlyet találjunk, ahol már lehet mintára illeszkedés

Boyer-Moore algoritmus 1. tábla Karakter Távolság A 1 M 2 N 3 P 5 Minden más karakter 8

Boyer-Moore algoritmus 2. tábla i Minta Eltolás 0 (N) 1 1 (A)N 8 2 (M)AN 3 3 (N)MAN 6 4 (A)NMAN 6 5 (P)ANMAN 6 6 (N)PANMAN 6 7 (A)NPANMAN 6 Megjegyzés: (*) olyan karaktert jelöl, ami nem *

Boyer-Moore-Horspool algoritmus Az előzőnek egy egyszerűsített változata A második táblát nem használja Helyzettől függően kicsit lassabban állapítja meg, mennyit kell lépnie A sebessége nagyjából megegyezik a Boyer- Moore algoritmuséval Csak nagyon ritka esetben lassul be ahhoz képest

Zhu-Takaoka algoritmus Boyer-Moore algoritmus átdolgozása Két karaktert dolgoz fel egyszerre Gyorsabb a kiértékelés Ugrási táblák létrehozása viszont lassabb, ezek nagyon megnőhetnek Értelmes használni, ha: Kevés eleme van az ábécének Rövid a keresendő minta Lehetne folytatni 3 vagy több karakteres bontásban is

Aho-Corasick algoritmus A keresendő minták szótára alapján generál egy gráfot, milyen karakter esetén mit kell tennie Hasznos, ha több szövegben is kell ugyan azokat a mintákat megkeresni Elég egyszer legenerálni Erre épül az fgrep parancs Unix környezetben

Útvonal () - Aho-Corasick algoritmus Szótár {a, ab, bc, bca, c, caa} Szerepel-e a szótárban? (a) + () (ab) + (b) (b) - () Végződés (bc) + (c) (bca) + (ca) (a) (c) + () (ca) - (a) (a) (caa) + (a) (a) Közvetlen végződés

Aho-Corasick algoritmus Gráf csúcsa Maradék Kimenet: helyzet abccab elemzése Átmenet () abccab Indulás a gyökérből Kimenet (a) bccab a:1 () -> (a) Aktuális csúcs (ab) ccab ab:2 (a) -> (ab) Aktuális csúcs (bc) cab bc:3, c:3 (ab) -> (b) -> (bc) Aktuális csúcs, szótári végződés csúcs (c) ab c:4 (bc) -> (c) -> () -> (c) Aktuális csúcs (ca) b a:5 (c) -> (ca) Szótári végződés csúcs (ab) ab:6 (ca) -> (a) -> (ab) Aktuális csúcs

Mintaillesztő algoritmusok Köszönöm a figyelmet! Ölvedi Tibor OLTQAAI.ELTE