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ő:

Slides:



Advertisements
Hasonló előadás
Készítette: Kosztyán Zsolt Tibor
Advertisements

Nevezetes algoritmusok
Összefoglalás Hardver,szoftver,perifériák Memóriák fajtái
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ő:
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ő:
C++ programozási nyelv Gyakorlat hét
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.
MI 2003/ A következőkben más megközelítés: nem közvetlenül az eloszlásokból indulunk ki, hanem a diszkriminancia függvényeket keressük. Legegyszerűbb:
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:
Programozási Nyelvek (C++) Gyakorlat Gyak 03.
Algoritmusok és adatszerkezetek 2 Újvári Zsuzsanna.
Gubicza József (GUJQAAI.ELTE)
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
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).
C A C nyelv utasításai.
Készítette: Pető László
Dr. Szalka Éva, Ph.D.1 Statisztika II. VII.. Dr. Szalka Éva, Ph.D.2 Mintavétel Mintavétel célja: következtetést levonni a –sokaságra vonatkozóan Mintavétel.
A C++ programozási nyelvSoós Sándor 1/14 C++ programozási nyelv Gyakorlat hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
OPERÁCIÓKUTATÁS Kalmár János, 2012 Tartalom A nulla-egy LP megoldása Hátizsák feladat.
Mintavételes eljárások
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ő:
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ő:
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ő:
1 Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat 1. Bevezetés Miskolc, 2004.
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ő:
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ő:
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ő:
A digitális számítás elmélete
Determinisztikus véges automaták csukva nyitva m s kbsm csukva nyitva csukva nyitva csukvanyitva 1. Példa: Fotocellás ajtó s b m m= mindkét helyen k= kint.
PHP Webprogramozás alapjai
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Operációs rendszerek gyakorlat sed, awk parancsok.
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ő:
Nevezetes algoritmusok Beszúrás Van egy n-1 elemű rendezett tömbünk. Be akarunk szúrni egy n-edik elemet. Egyik lehetőség, hogy végigszaladunk a tömbön,
Előrendezéses edényrendezés – RADIX „vissza”
Készítette: Lakos Péter.  Adott egy élsúlyozott, véges gráf  Negatív élsúlyokat nem tartalmaz  Lehet irányított vagy irányítatlan  Továbbá adott egy.
Rendezések és szövegkezelő függvények
Összetett adattípusok
1 AAO folytatás ++ Csink László. 2 Rekurzív bináris keresés (rendezett tömbben) public static int binker(int[] tomb, int value, int low, int high) public.
Alapsokaság (populáció)
Brute Force algoritmus
A Dijkstra algoritmus.
Csempe Programozás érettségi mintafeladat
MI 2003/ Mi lenne a b legjobb választása? Statisztikai eljárásoknál az un. Fisher féle lineáris diszkriminancia függvény adja a legjobb szétválasztási.
Miskolci Egyetem Gazdaságtudományi Kar Üzleti Információgazdálkodási és Módszertani Intézet Mintavételes Eljárások.
Az internetes keresési módszerek
Keresés a weben Kulcsszavas keresés: Google (
Gráfok ábrázolása teljesen láncoltan
Valószínűségszámítás II.
Nagy Szilvia 7. Lineáris blokk-kódok
2005. Információelmélet Nagy Szilvia 2. A forráskódolás elmélete.
Gazdasági informatikus - Szövegszerkesztés 1 HasábokHasábok.
Készítette: Mátyás István agrár mérnöktanár szakos hallgató,
Összeállította: Gergely János
Excel programozás (makró)
KNUTH-MORRIS-PRATT ALGORITMUS (KMP) KÉSZÍTETTE: ZELNIK MÁRTON.
KÉSZÍTETTE: KOVÁCSICS KRISZTIÁN
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.
TÁMOP /1-2F Informatikai gyakorlatok 11. évfolyam Alapvető programozási tételek megvalósítása Czigléczky Gábor 2009.
Mediánok és rendezett minták
Dinamikus adatszerkezetek
Algoritmusok és Adatszerkezetek I.
Informatikai gyakorlatok 11. évfolyam
Depth First Search Backtracking
2-3-fák A 2-3-fa egy gyökeres fa az alábbi tulajdonságokkal:
Algoritmusok és Adatszerkezetek I.
INFOÉRA 2006 Szövegfeldolgozás III.
Absztrakt problémák Q  I  S, az absztrakt probléma kétváltozós reláció az esetek (I) és a megoldások (S) halmazán Példa: legrövidebb út Eset: gráf és.
Szövegfeldolgozás II. INFOÉRA perc kell még hozzá
Előadás másolata:

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ő: Imre Mihály, műszaki informatikus hallgató

Szövegminta keresés Legyen adott egy véges ABC, Integer, N>>M. Ekkor a szöveg Keressük az(oka)t az i értéke(ke)t, melyre esetén teljesül, hogy Ha a minták lehetséges halmaza jól behatárolt (szavak) és a szöveg változásának valószínűsége kicsi, azaz statikus szövegről van szó, akkor a keresés meggyorsítható egy a szöveghez kapcsolt indextáblával. (Az indextábla kulcs- pozíció párokat tartalmaz a kulcsérték szerinti gyors elérést biztosító struktúrában, pl. lista és bináris keresés vagy fa; a kulcs lehet szó vagy azzal ekvivalens numerikus kifejezés. ) 2

Szövegminta keresés Dinamikus szövegeknél az indextáblát gyakran kell frissíteni, s ez növeli a műveleti időt. A változások miatt az indextábla nagy része feleslegessé válhat. Közvetlen keresést kell alkalmazni. Elemi, naiv eljárások: - a szöveg minden karakterére ráillesztjük a mintát és a minta betűin végighaladva ellenőrizzük, hogy megegyezik-e a mintabeli és a szövegbeli karakter. Ez összesen (N-M)M összehasonlítást igényel: O(N*M) - javítás: csak addig megyünk, amíg eltérést vagy mintavéget nem találunk. Ekkor a keresési idő jelentősen függ a minta alakjától és O(N+M) és O(N*M) a hatékonyság, általában O(L*N) L> 1 3

Szövegminta keresés Ezek a módszerek úgynevezett felejtő eljárások, mivel nem hasznosítják az előző illesztések során szerzett információkat. 4

Szövegminta keresés KMP Az alapelv: ha az illesztésnél a minta j. pozícióján volt először eltérés, akkor a szöveg és a minta előző (j-1) karaktere azonos volt. Ezt felhasználva határozzuk meg mennyit léphetünk előre. 5 Ha ismerjük a minta felépítését, akkor felesleges mindig vissza menni az (i-j+2)-ik szövegkarakterre, hogy azt újból összehasonlítsuk a minta első karakterével. Akkor ugorhatunk nagyobb lépést, ha tudjuk van-e és milyen hosszú ismétlődő rész a minta vizsgált részének elején és végén. a i-j+1 a i-j+2 aiai szöveg b1b1 b2b2 bjbj minta

Szövegminta keresés KMP Tegyük fel, hogy l hosszúságú a leghosszabb ilyen ismétlődő rész a minta 1..(j-1) közötti szakaszán. 6 Ha l=0, akkor a szöveg ezen része átugorható és a szöveg i- edik elemét vizsgálhatjuk a minta 1. elemével. Ha j=1 lenne, akkor ez már megtörtént, ilyenkor a szövegben egyet előre lépve az (i+1)-edik elemet vizsgáljuk a minta első elemével.  l x j'  l x bjbj  1 - j

Szövegminta keresés KMP Ha l > 0, akkor a minta csak (j-1-l) elemmel tolható el, azaz a j’ = l+1 indexű mintaelemet kell a szöveg i. elemével összehasonlítani. Egy adott j-hez tartozó j’-t next(j) - nek is nevezik. A next(j) függvény értéke, amit tömbként is tárolhatunk, csak a mintától függ. A next[j] meghatározásának egyik naív módszere lehetne, hogy minden lehetséges l-et növekvő értékkel kipróbálunk, amíg elérjük a maximumot. Egy iteratív módszer: Tegyük fel adott k-ra ismerjük next(k) –t. 7

Szövegminta keresés KMP Ha eggyel növeljük k értékét, akkor ha b k = b next[k] akkor egy l+1 hosszú ismétlődő részt kaptunk, azaz next(k+1) = next(k) + l. Ha viszont b k <>b next[k], akkor egy rövidebb ismétlődést kell vizsgálni, amely az l szakasz ismétlődése lehet csak. Ellenőrizzük, hogy b k = b next[next[k]],ha igen akkor megvan az új hossz, azaz next[k+1] = next[ next[k]] + 1. Ha nem akkor iteratívan tovább megyünk a next[next[ [k]].....] kifejezéssel míg sikerül egyezést találni, vagy már csak egyelemű a vizsgált ismétlődő rész, ekkor next[k+1] = 1. 8 b next[k] bkbk b k+1 minta

Szövegminta keresés KMP A Next tömb előállítása: j = 1; Next[j] = 0; k = 0; while (j < M) { if (b[j] = b[k] || k = 0) { j++; k++; Next[j] = k; } else k = Next[k]; } 9

Szövegminta keresés KMP A keresés: i = 1; j = 1; while ( i <= N && j <= M) { if (a[i] = = b[j] || j = = 0) { i++; j++; } else j = next[j]; if ( j > M) {OK} else {nem talált} } 10

Szövegminta keresés KMP Pl. a: BARBA b: ABBA NEM BARBA DE B A R B A j = 1k = 0 Next[1] = 0 j = 2k = 1 Next[2] = 1 k = 0 j = 3k = 1 Next[3] = 1 k = 0 j = 4k = 1 Next[4] = 1 j = 5k = 2 Next[5] = 2 BAKOSBAROKK BARBI BARBA BARBA BARBA 11

Szövegminta keresés QS Quick Search (QS) ABBARAKRA BARBA Shift[A] = 1, B = 2, C = 6,... R= 3. Az adott betű milyen távol található a minta végétől. Ha x (a szöveg éppen vizsgált karaktere) nincs a mintában, akkor utána tolom a mintában, ha benne van, akkor annyira, hogy az x fedésbe kerüljön a mintabeli utolsó előfordulásával. 12

Szövegminta keresés QS A shift kitöltése: For(i = 1; i < 256; i++) Shift[i] = M + 1; For(i = 1; i <= M; i++) Shift[ TM[i] ] = M – i + 1; 13

Szövegminta keresés QS A keresés: k = 1; while(k <= N – M + 1) { j = 1; i = k; while(TT[i] == TM[j] && j <= M) { i++; j++; } if (j > M) {OK} else k += shift[ TT[ k + j ] ] } 14