Algoritmusok és Adatszerkezetek I.

Slides:



Advertisements
Hasonló előadás
Nevezetes algoritmusok
Advertisements

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ő:
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.
Prímtesztelés Témavezető: Kátai Imre Komputeralgebra Tanszék Nagy Gábor:
Minimális költségű feszítőfák
Utórendezéses edényrendezés, RADIX „előre”
A beszúró rendezés Szemléltetés LL.
Az összehasonlító rendezések
Programozási alapismeretek 8. előadás. ELTE 2/  További programozási tételek További programozási tételek 
Programozási alapismeretek 11. előadás. ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 11.2/ Tartalom.
Programozási alapismeretek 12. előadás. ELTE  Tapasztalatok a rendezésről Tapasztalatok a rendezésről  Keresés rendezett sorozatban Keresés rendezett.
Algoritmusok Az algoritmus fogalma:
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).
Gombkötő Attila Lineáris egyenlet.
Készítette: Pető László
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
ELTE Szlávi-Zsakó: Programozási alapismeretek 8.1/ Kiválogatás Specifikáció:  Bemenet: N:Egész, X:Tömb[1..N:Valami]
Utórendezéses edényrendezés RADIX „előre”. Definíció  Az általános utórendezéses edényrendezés speciálisan r alapú d jegyű számokra felírt változata.
RADIX vissza bemutató Algoritmusok és adatszerkezetek 2. Papp István Javított.
Edényrendezés - RADIX „vissza” - bináris számokra
Készítette: Szitár Anikó
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”
Rendezési algoritmusok
Az oszd meg és uralkodj (Divide et Impera) programozási módszer
Adatszerkezetek 1. előadás
Gépi tanulás Tanuló ágens, döntési fák, általános logikai leirások tanulása.
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.
Kötvényárazási hibák intelligens javítóalgoritmusának tervezése és fejlesztése GELLÉN ÁGNES IUFQ58.
Edényrendezés.
Programozási alapismeretek 11. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 11.2/ Tartalom  Rendezési.
Algoritmizálás, adatmodellezés tanítása 7. előadás
Adatbázisok tervezése, megvalósítása és menedzselése
Algoritmizálás, adatmodellezés tanítása 8. előadás.
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.
Heltai Éva Eszter QG2CBR 1. előadásból.
Útkeresések.
Programozási alapismeretek 8. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 8.2/  További programozási.
Horváth Bettina VZSRA6 Feladat: Szemléltesse az edényrendezést.
Bucket sort avagy lineáris idejű rendezés. Pszeudo kód n hosszú L listára for i = 1..n If B[L[i]] != üres Akkor [L[i] Beszúrásos rendezéssel B[L[i]]-be.
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.
Algoritmusok és adatszerkezetek
Memóriakezelés feladatok Feladat: 12 bites címtartomány. 0 ~ 2047 legyen mindig.
„RADIX előre „ Készítette : Giligor Dávid Neptun: HSYGGS.
(Bináris) Kupac (heap) adattípus
„RADIX előre” edényrendezés Adott a háromjegyű bináris számok következő sorozata: 011, 111, 101, 010, 110, 001, 100 Adja meg a tömb tartalmát az egyes.
KÉSZÍTETTE: KOVÁCSICS KRISZTIÁN
BFák Kiegyensúlyozott keresőfák
Logikai programozás 6..
Mediánok és rendezett minták
Algoritmusok és Adatszerkezetek I.
Algoritmusok és Adatszerkezetek I.
Halmazműveletek.
Gyorsrendezés Elemzések Változatok.
Amortizációs elemzés Alapelv: nem egy-egy művelet lefutási idejét vizsgáljuk, hanem több műveletét együtt, sokszor Eredmény: átlagolt időszükséglet időátlagban.
Algoritmusok és Adatszerkezetek I.
Algoritmusok és Adatszerkezetek I.
Algoritmusok Az algoritmus fogalma:
Algoritmusok és Adatszerkezetek I.
Algoritmusok és Adatszerkezetek I.
Algoritmusok és Adatszerkezetek I.
Algoritmusok és Adatszerkezetek I.
Geometriai Algoritmusok
2-3-fák A 2-3-fa egy gyökeres fa az alábbi tulajdonságokkal:
Algoritmusok és Adatszerkezetek I.
Algoritmusok és Adatszerkezetek I.
Algoritmusok és Adatszerkezetek I.
Előadás másolata:

Algoritmusok és Adatszerkezetek I. Rendező algoritmusok 2018. október 30.

Rendezési feladat (sort) Bemenet: egy n számból álló a1, a2, . . . , an tömb. Kimenet: a bemenő tömb elemeinek olyan a1, a2, . . . , an permutációja (átrendezése), amelyre a1 ≤ a2 ≤ . . . ≤ an

Miért fontosak a rendező algoritmusok? Gyakran használt részfeladat Számtalan megoldás → különböző szituációkban más és más (saját?) Sok probléma trivilás vagy gyors ha rendezett a bemenet → 0. lépésben rendezzünk medián megtalálása bináris keresés

Beszúró rendezés (insertion sort)

Beszúró rendezés (insertion sort)

Összefésülő rendezés (merge sort) Felosztás: Az n elemű rendezendő sorozatot felosztja két n/2 elemű részsorozatra. Uralkodás: A két részsorozatot összefésülő rendezéssel rekurzív módon rendezi. Összevonás: Összefésüli a két részsorozatot, létrehozva a rendezett választ.

Összefésülő rendezés

Összefésülő rendezés futási ideje – Mester módszer a=2 b=2 f(n)=n f(n) = Θ(nlog22) = Θ(n) 2. eset T(n) = Θ(nlogn) https://visualgo.net/en/sorting

Helyben rendezés Rendező algoritmusok memóriaigénye Beszúró rendezés O(1) Összefésülő rendezés O(n) Helyben rendezés: bemeneti tömbön felül legfeljebb konstans méretű tár

Kupac https://visualgo.net/en/heap

Kupacrendezés (heap sort) O(nlogn) Helyben rendezés

Rendezés bináris keresőfával (tree sort) if x≠NIL then FABEJÁRÁS(bal[x]) muvelet(kulcs[x]) FABEJÁRÁS(jobb[x]) 2 3 5 5 7 8 2 3 5 5 7 8 piros-fekete fával: O(nlogn) Helyben rendezés, de pointerek miatt nagyobb tárigény

Gyorsrendezés (quick sort) Felosztás: Az A[p…r] tömböt két (esetleg üres) A[p…q-1] és A[q+1…r] résztömbre osztjuk úgy, hogy az A[p… q−1] minden eleme kisebb vagy egyenlő A[q]-nál és A[q+1…r] minden eleme nagyobb A[q]-nál. A q index kiszámítása része a felosztó eljárásnak

Gyorsrendezés (quick sort) Uralkodás: Az A[p…q−1] és A[q+1…r] résztömböket a gyorsrendezés rekurzív hívásával rendezzük. Összevonás: helyben rendezés, nincs szükség egyesítésre

pivot (őrszem) bárhogyan választhajuk, pl. első elem vagy véletlen

Gyorsrendezés helyessége

Gyorsrendezés futásideje Legrosszabb eset: minden Feloszt egy 0 és egy n-1 méretű résztömbre oszt Legjobb eset: minden Feloszt felezi a tömböt

Gyorsrendezés futásideje Átlagos eset: közelebb a legjobb esethez bármilyen állandó arányú felosztás esetén O(nlogn), pl. nem baj ha vannak rossz felosztások

Összehasonlító rendezések Összehasonlító rendezés: rendezéshez elemek párjainak < = > műveleteit használjuk Eddigi rendező algoritmusok mind összehasonlító rendezések voltak

Összehasonlító rendezések futásidejének alsó korlátja Bármely összehasonlító rendező algoritmus a legrosszabb esetben Ω(nlogn) összehasonlítást végez!

Leszámláló rendezés (counting sort) HA az n bemeneti elem mindegyike 0 és k közötti egész szám, ahol k egy egész. Θ(n+k) tár: n+k

Rendezések stabilitása Egy rendezés stabil ha az azonos értékű elemek ugyanabban a sorrendben jelennek meg a kimeneti tömbben, mint ahogyan a bemeneti tömbben szerepeltek.

Számjegyes rendezés (radix sort) Rendezzünk dátumokat év, hónap, nap szerint! Megoldás1: összehasonlító rendezés Megoldás2: 3 db stabil rendezés először napok, majd hónapok, végül évek szerint

Számjegyes rendezés (radix sort) Számjegyes rendezés: legalacsonyabb helyiértéktől legmagasabbig minden lépésben egy stabil renezés

Edényrendezés (bucket sort) HA a rendezendő tömb elemeinek eloszlása egyenletes

Edényrendezés (bucket sort) ni az i-edik edénybe eső elemek számának várható értéke

Engem válassz ha közel rendezett a tömb vagy nagyon kicsi (n<10) bemenet esetén! Legjobb Átlagos Legrosszabb Tár Stabil Beszúró n n2 1 Összefésülő n log n Kupac Bináris Fa Gyors Leszámoló n+k nk Számjegyes d(n+k) Edény Ha stabilitásra vágysz engem válassz! Csak hozz magaddal memóriát is… Elvileg én vagyok a gyorsrendezés legnagyobb riválisa, de túl sok cserét csinálok a gyakorlatban  Engem senki sem szeret mert a gyakorlatban fákat memóriában tárolni drága  Ha nem tudsz semmit az adatról én vagyok általában a leggyorsabb (összehasonlító rendezés)! Viszont nem vagyok stabil… Engem válassz ha a lehetséges értékek halmaza kicsi (k)! Én segítek ha speciális struktúrát (pl. dátum) kell rendezned! Ha az értékek eloszlása egyenletes én vagyok a legjobb!