Nevezetes algoritmusok

Slides:



Advertisements
Hasonló előadás
GRIN: Gráf alapú RDF index
Advertisements

A Dijkstra algoritmus.
Koordináták, függvények
Készítette: Kosztyán Zsolt Tibor
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ő:
Logaritmikus keresés Feladat: Adott egy 11 elemű, növekvően rendezett tömb számokkal feltöltve. Keressük meg a 17-es értéket! Ha van benne, hányadik eleme.
Programozási tételek, és „négyzetes” rendezések
Függvények Egyenlőre csak valós-valós függvényekkel foglalkozunk.
Matematika és Tánc Felkészítő tanár: Komáromi Annamária
Készítette: Major Máté
Matematika II. 4. előadás Geodézia szakmérnöki szak 2010/2011. tanév Műszaki térinformatika ágazat tavaszi félév.
Algoritmus és adatszerkezet Tavaszi félév Tóth Norbert1.
Szélességi bejárás Párhuzamosítása.
Gráf Szélességi bejárás
Az összehasonlító rendezések
Programozási alapismeretek 11. előadás. ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 11.2/ Tartalom.
1 Hash-elés. 2 Mi a hash-elés? Gyorsan teszi lehetővé a keresést, törlést, beszúrást, módosítást Nem szükséges az elemek rendezettsége Nincsenek rendezéshez.
Algoritmusok Az algoritmus fogalma:
Egydimenziós tömbök. Deklarálás: var valtozónév:array[kezdőérték..végsőérték]of típus; type típusnév = array [kezdőérték..végsőérték] of típus; var valtozónév:
Gombkötő Attila Lineáris egyenlet.
Készítette: Pető László
A körlevél készítésének menete
Papp Róbert, Blaskovics Viktor, Hantos Norbert
OPERÁCIÓKUTATÁS Kalmár János, 2012 Tartalom A nulla-egy LP megoldása Hátizsák feladat.
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ő:
AVL fák.
Edényrendezés - RADIX „vissza” - bináris számokra
Készítette: Szitár Anikó
„Országos” feladat. Feladat: Egy tetszőleges, színes országokat tartalmazó térképen akar eljutni egy kommandós csapat egy országból egy másikba. Viszont.
Szélességi bejárás A szélességi bejárással egy irányított vagy irányítás nélküli véges gráfot járhatunk be a kezdőcsúcstól való távolságuk növekvő sorrendjében.
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 VI..
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”
Utórendezéses edényrendezés – RADIX „előre”
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ési algoritmusok
Gráfelmélet: Fák.
Tömbök és programozási tételek
Rendezések és szövegkezelő függvények
Brute Force algoritmus
Fák.
Programozási alapismeretek 11. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 11.2/ Tartalom  Rendezési.
Kruskal-algoritmus.
Edényrendezés. Működés, elvek - Az edényrendezés nem összehasonlító rendezés. - A rendezendő elemeket nem hasonlítjuk össze, hanem a rendezés során az.
Gráfok ábrázolása teljesen láncoltan
előadások, konzultációk
Bináris kereső fák Itterátorok.
Horváth Bettina VZSRA6 Feladat: Szemléltesse az edényrendezést.
Diszjunkt halmazok adatszerkezete A diszjunkt halmaz adatszerkezet diszjunkt dinamikus halmazok S={S 1,…,S n } halmaza. Egy halmazt egy képviselője azonosít.
Programozási alapismeretek 11. előadás
Edényrendezés Név: Pókó Róbert Neptun: OYJPVP. Példa RADIX „előre” algoritmusra d=3 hosszú bináris számokra (r=2) Ekkor egy tömbbel meg lehet oldani a.
Gráf szélességi bejárása. Cél Az algoritmus célja az, hogy bejárjuk egy véges gráf összes csúcsát és kiírjuk őket a kezdőcsúcstól való távolságuk szerint.
Algoritmusok és adatszerkezetek
Bernát Péter Minimumkiválasztásos rendezés.
(Bináris) Kupac (heap) adattípus
KÉSZÍTETTE: KOVÁCSICS KRISZTIÁN
Nevezetes algoritmusok
Tömbök és programozási tételek
Logikai programozás 6..
Mediánok és rendezett minták
Piros-fekete fák Beszúrás, ill. törléskor a fa elveszítheti az egyensúlyát. A piros-fekete fák: az egyensúly megtartását biztosítják. +1 bit információ.
A maximum kiválasztás algoritmusa
Algoritmusok és Adatszerkezetek I.
Algoritmusok Az algoritmus fogalma:
Algoritmusok és Adatszerkezetek I.
2-3-fák A 2-3-fa egy gyökeres fa az alábbi tulajdonságokkal:
Algoritmusok és Adatszerkezetek I.
Előadás másolata:

Nevezetes algoritmusok

Lineáris keresés A legalapvetőbb keresési algoritmus. Adott elemet keresünk egy halmazban úgy, hogy minden elemet végignézünk, amíg a keresettet meg nem találjuk. Legrosszabb eset: A halmaz minden elemével hasonlítunk, ez n összehason-lítást jelent. Átlagban: n/2+1 keresés. Ha listában vagy külső táras állomány-ban kell rendeznünk. (Ekkor nehézkes a lista középső tagjának vizsgálata.)

Bináris keresés Rendezett halmazban keresünk. A keresett elemet a középső elemhez hasonlítjuk. Ha egyezik, akkor megtaláltuk; ha nem, akkor abban a felében folytatjuk a keresést, amelyet a keresett érték kijelöl: ha a keresett érték kisebb, mint a középső elem, akkor az első felében, egyébként a másodikban. Az eljárást ilyen módon folytatjuk tovább. [Log2n]+1 összehasonlítás. Ha a középső elem vizsgálata nem okoz nehézséget. Pl.: tömbben tároljuk.

Beszúrás Van egy n elemű rendezett halmazunk. Be akarunk szúrni egy n+1-edik elemet. Egyik lehetőség: végigszaladunk a halmazon, és betesszük a beszúrandó elemet az elé az elem elé, ami már nem előzi meg. Általában n/2, de a legrosszabb esetben n összehasonlításra van szükség. Másik lehetőség: a kérdéses elemet a középső elemmel hasonlítjuk össze. Ha az új elem megelőzi a középsőt, akkor a halmaz első felében keressük a helyét a továbbiakban, stb. A lépésszám log2n, vagy az erre következő első egész szám, azaz [log2n], ha n nem 2 hatványa.

Beszúrásos rendezés A rendezés során sorrendbeli hibát keresünk a halmazban. Ennek során használhatunk lineáris (n(n-1)/2 összehasonlítás), illetve bináris keresést (n-1k=1log2(k+1) összehasonlítás). A kialakult sorrendtől eltérő helyet megjegyezzük, az ott lévő elemet elmentjük, majd addig keresünk attól visszafelé, amíg nála nagyobbat nem találunk, az elé kell majd beszúrnunk. Amikor a helyet megtaláltuk, akkor a közbeeső elemeket feljebb tolva, az imént kiemelt elemet a felszabaduló helyre illesztjük. Túl sok mozgatást igényel.

Shell rendezés A beszúrásos módszer lépésenként finomított változata. A halmaznak csak minden d-edik elemét vizsgáljuk, azaz d lépésközzel végezzük el a beszúrásos rendezést. Ezután csökkentjük a lépésközt, és úgy végezzük el a rendezést. A folyamat addig tart, amíg a lépésköz 1 nem lesz.

Összefésülés Van két n elemű halmazunk: (a1, ... , an) és (b1, ... ,bn). Ezeket kell egyesíteni. Hasonlítsuk össze az b1 elemet rendre az a1, a2, ... elemekkel. Beszúrjuk b1-et az elé az ai elé, amelyet közvetlenül megelőz. Ettől az ai-től folytatjuk tovább b2-re, stb. Legfeljebb 2n-1 összehasonlításra van szükség.

Minimum (maximum) elven alapuló rendezés Egy adott részhalmazban (kezdetben a teljes halmaz) megkeressük a legkisebb (legnagyobb) elemet és ezt tesszük az első helyre. A következő lépésben a második elemtől kezdve vizsgáljuk és ismét a legkisebb (legnagyobb) elemet visszük előre, stb. A mindenkori legkisebb elem keresése lineáris kereséssel történik.

Módosított buborékrendezés Növekvő sorrend: halmaz elejéről indulva rendre összehasonlítjuk a szomszédos elemeket, s ha a kisebb van hátrább, megcseréljük őket. Az eljárást mindaddig folytatjuk, amíg a rendezettség ki nem alakul. (Csökkenő sorrend fordítva!) Összehasonlítások száma n(n-1)/2. Kis sorozatok (max. 10-20 elemű) esetén használható, egyébként sok összehasonlítást igényel. Módosított buborékrendezés Az alapelv hasonló, de a pásztázás többirányú és váltakozó.

Gyorsrendezés (quick-sort) Kiválasztjuk a halmaz tetszőleges elemét. Ezt nevezzük alapelemnek, mert ehhez viszonyítjuk a többit. Először balról lépegetünk addig, amíg ennél az alapelemnél csupa kisebbet találunk. Ha egy nagyobb vagy egyenlő elemhez érünk, jobbról vizsgálódunk, és keressük az alapelemnél nem nagyobb elemet. Ha megtaláltuk, kicseréljük a kettőt és a következő, eggyel nagyobb, illetve kisebb elemtől kezdjük a keresést és a cserét.

Kupac A fa olyan gráf, amely körmentes, azaz bármely két csúcsa között pontosan egy élsorozaton át lehet eljutni. A bináris fa olyan fa, amelynek csúcspontjaiból maximum 2 részfa nyílik (azaz fokszáma 2). A kupac egy olyan teljes bináris fa, amelyben egy tetszőleges csúcsban lévő érték nem lehet nagyobb a fiaiban lévő elemeknél.

Egy f gyökerű részfa kupaccá alakítása a következő módon történik (a, az f-ben tárolt érték, f1 és f2 f fiai, a bennük tárolt érték a1,a2): Felszivárog(f) {Ha min(a1,a2)<a, akkor min{a1,a2} és a helyet cserél. Ha az a elem ai-vel cserélt helyet, akkor felszivárog(fi)} A következő eljárás az egész fát kupaccá teszi: Kupacépítés(f) {Az f fa v csúcsaira lentről felfelé, jobbról balra felszivárog(v)} A kupacra két alapművelet jellemző: 1. a legkisebb elem törlése, amely a fa gyökerében van; 2. új elem hozzáadása a kupachoz.

Részfa: t részfája a-nak, ha a a gyökere, azaz közvetlen megelőző eleme t-nek, vagy t részfája a valamely részfájának. Elágazásszám: közvetlen részfák száma. Fokszám: egy fa fokszáma pontjai max. elágazásszámával egyezik meg (a bináris fák fokszáma ezért 2). Szülő/ős: egy fában, a gyökeret kivéve valamennyi csomópontnak egyedi szülője van, amelyet megelőző csomópontnak nevezünk. (N őse L-nek, ha L közvetlen leszármazottja N-nek).

Leszármazott (gyermek): az L csomópontot akkor nevezzük az N csomópont leszármazottjának, ha L az N-et közvetlenül követő elem, vagyis L az N gyermeke. Megkülönböztethetünk bal, illetve jobb oldali gyermekeket. A gyermekek egymásnak testvérei. Szukcesszor: a fa egy elemének jobb/bal oldali szukcesszora az elemből kiinduló jobb/bal részfa gyökéreleme, amennyiben a részfa nem üres. Él: egy csomópontból az azt követőbe húzott vonalat élnek nevezzük

Útvonal: az egymást követő élek sorozata. Gyökér: a fa gyökerén értjük azt a csomópontot, amelynek nincs őse. Levél: záró csomópont, amelynek nincs leszármazottja. Ág: az az útvonal, amely levélben végződik. Szintszám: a fa gyökeréhez a 0 szintszám tartozik, a további csomópontokhoz pedig mindig 1-gyel nagyobb szintszám, mint a szülő szintszáma. Fa mélysége /magassága: a fa mélységét (magasságát) az egy ágában elhelyezkedő csomópontok legnagyobb száma adja meg ( a gyökértől a legmesszebb lévő levélig tartó út hossza). Ez az érték mindig 1-gyel nagyobb, mint a fa legnagyobb szintszáma.

Kupacrendezés Bemenet a rendezendő sorozatot tartalmazó A[1..n] tömb. Először kupacot építünk, utána n-szer kivesszük a legkisebb elemet a kupacból, és újra kupaccá alakítunk. Az eljárás nem csökkenő sorrendben adja vissza az elemeket. A kupacrendezés a leggyorsabb ismert rendező módszer.

Ládarendezés A módszer akkor hasznos, ha a lehetséges elemek tartománya a rendezendő elemek számához képest nem túl nagy. Tegyük fel, hogy az A[1..n] tömböt szeretnénk rendezni, és tudjuk, hogy A elemei az m elemű U halmazból kerülnek ki. Ekkor lefoglalhatunk egy U elemeivel indexelt B tömböt. Ennek elemei - a ládák - U-beli elemek listái lesznek. Kezdetben minden láda üres. Az eljárás első fázisában végigolvassuk az A tömböt, és az s=A[i] elemet a B[s] lista végére fűzzük. A második fázisban az elejéről a végéig növő sorrendben végigmegyünk B-n és a B[i] listák tartalmát visszaírjuk A-ba. A módszer akkor hasznos, ha a lehetséges elemtípusok száma nem túl nagy a rendezendő elemek számához képest.