Elsőbbségi (prioritásos) sor

Hasonló dokumentumok
6. Elsőbbségi (prioritásos) sor

Algoritmusok és adatszerkezetek gyakorlat 07

16. Az AVL-fa. (Adelszon-Velszkij és Landisz, 1962) Definíció: t kiegyensúlyozott (AVL-tulajdonságú) t minden x csúcsára: Pl.:

VÉLETLENÍTETT ALGORITMUSOK. 1.ea.

1. ALGORITMUSOK MŰVELETIGÉNYE

(A TÁMOP /2/A/KMR számú projekt keretében írt egyetemi jegyzetrészlet):

21. Adatszerkezetek Az adattípus absztrakciós szintjei Absztrakt adattípus (ADT) Absztrakt adatszerkezet (ADS) Egyszerű adattípusok Tömbök

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1]

Algoritmuselmélet 2. előadás

Kétoldali hibás Monte Carlo algoritmus: mindkét válasz esetén hibázhat az algoritmus, de adott alsó korlát a hibázás valószínűségére.

Matematika I. 9. előadás

A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

Kupac adatszerkezet. 1. ábra.

MATEMATIKA I. KATEGÓRIA (SZAKKÖZÉPISKOLA)

Rendezések. Összehasonlító rendezések

3. SOROZATOK. ( n N) a n+1 < a n. Egy sorozatot (szigorúan) monotonnak mondunk, ha (szigorúan) monoton növekvő vagy csökkenő.

( a b)( c d) 2 ab2 cd 2 abcd 2 Egyenlőség akkor és csak akkor áll fenn

Innen. 2. Az. s n = 1 + q + q q n 1 = 1 qn. és q n 0 akkor és csak akkor, ha q < 1. a a n végtelen sor konvergenciáján nem változtat az, ha

A biostatisztika alapfogalmai, konfidenciaintervallum. Dr. Boda Krisztina PhD SZTE ÁOK Orvosi Fizikai és Orvosi Informatikai Intézet

2. gyakorlat - Hatványsorok és Taylor-sorok

VII. A határozatlan esetek kiküszöbölése

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

Sorozatok, határérték fogalma. Függvények határértéke, folytonossága

15. A VERSENYRENDEZÉS

A statisztikai vizsgálat tárgyát képező egyedek összességét statisztikai sokaságnak nevezzük.

Számsorozatok. 1. Alapfeladatok december 22. sorozat határértékét, ha. 1. Feladat: Határozzuk meg az a n = 3n2 + 7n 5n létezik.

10.M ALGEBRA < <

1 k < n(1 + log n) C 1n log n, d n. (1 1 r k + 1 ) = 1. = 0 és lim. lim n. f(n) < C 3

f(n) n x g(n), n x π 2 6 n, σ(n) n x

V. Deriválható függvények

A figurális számokról (IV.)

Buborékrendezés: Hanoi Tornyai: Asszimptótikus fv.ek: Láncolt ábrázolás: For ciklussal:

1. ábra. Egy rekurzív preorder bejárás. Egy másik rekurzív preorder bejárás

Sorozatok A.: Sorozatok általában

Tuesday, March 6, 12. Hasító táblázatok

Adatszerkezet - műveletek

Algoritmusok és adatszerkezetek II.

NÉMETH LÁSZLÓ VÁROSI MATEMATIKA VERSENY 2013 HÓDMEZŐVÁSÁRHELY OSZTÁLY ÁPRILIS 8.

Haladó rendezések. PPT 2007/2008 tavasz.

Adatszerkezetek 7a. Dr. IványiPéter

Feladatok és megoldások a 11. heti gyakorlathoz

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

Mérési adatok feldolgozása Méréselmélet PE_MIK MI_BSc, VI_BSc 1

Kalkulus II., második házi feladat

Önszervező bináris keresőfák

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t

2.5. A lineáris kongruencia egyenlet.

Matematikai játékok. Svetoslav Bilchev, Emiliya Velikova

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar

17. A 2-3 fák és B-fák. 2-3 fák

Módosítható Prioritási sor Binomiális kupaccal. Wednesday, March 21, 12

7 7, ,22 13,22 13, ,28

Algoritmusok és adatszerkezetek II.

A kurzus teljesítésének feltételei. Az I404 kódú kurzus teljesítéséhez meg kell oldani egy otthoni feladatot, határidő április 30.

Nevezetes sorozat-határértékek

Bevezető analízis II. példatár

Adatszerkezetek és algoritmusok

Statisztika 1. zárthelyi dolgozat március 21.

SZÁMELMÉLET. Vasile Berinde, Filippo Spagnolo

Rendezés. 1. Példa: Legyen A=R, és a reláció a kisebb < jel. Az a b reláció azokat a számpárokat jelenti, amelyekre fennáll az a<b összefüggés.

BIOMATEMATIKA ELŐADÁS

17. Tördelőtáblák (Hasítótáblák)

Kvantum párhuzamosság Deutsch algoritmus Deutsch-Jozsa algoritmus

min{k R K fels korlátja H-nak} a A : a ξ : ξ fels korlát A legkisebb fels korlát is:

B-fa. Felépítés, alapvető műveletek. Programozás II. előadás. Szénási Sándor.

ALGEBRA. egyenlet megoldásait, ha tudjuk, hogy egész számok, továbbá p + q = 198.

Függvényhatárérték-számítás

Gráfok 2. Legrövidebb utak, feszítőfák. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

6. Számsorozat fogalma és tulajdonságai

A szórások vizsgálata. Az F-próba. A döntés. Az F-próba szabadsági fokai

2. Hatványsorok. A végtelen soroknál tanultuk, hogy az. végtelen sort adja: 1 + x + x x n +...

A tárgy címe: ANALÍZIS 1 A-B-C (2+2). 1. gyakorlat

Kalkulus I. Első zárthelyi dolgozat szeptember 16. MINTA. és q = k 2. k 2. = k 1l 2 k 2 l 1. l 1 l n 6n + 8

Generikus osztályok, gyűjtemények és algoritmusok

Sorozatok október 15. Határozza meg a következ sorozatok határértékeit!

f (M (ξ)) M (f (ξ)) Bizonyítás: Megjegyezzük, hogy konvex függvényekre mindig létezik a ± ben

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Verem Verem mutató 01

Hiba! Nincs ilyen stílusú szöveg a dokumentumban.-86. ábra: A példa-feladat kódolási változatai

Méréselmélet PE_MIK MI_BSc, VI_BSc 1

2. fejezet. Számsorozatok, számsorok

Eötvös Loránd Tudományegyetem Informatikai Kar. Analízis 1. Írásbeli tételek. Készítette: Szántó Ádám Tavaszi félév

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

Feladatok megoldása. Diszkrét matematika I. Beadandó feladatok. Bujtás Ferenc (CZU7KZ) December 14, feladat: (A B A A \ C = B)

Amortizációs költségelemzés

Prímszámok a Fibonacci sorozatban

4.2. Rendezés. 1. Példa: A=R, és a reláció a kisebb < jel. Az aρb reláció azokat a számpárokat jelenti, amelyekre fennáll az a<b összefüggés.

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

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

A függvénysorozatok olyanok, mint a valós számsorozatok, csak éppen a tagjai nem valós számok,

ANALÍZIS I. TÉTELBIZONYÍTÁSOK ÍRÁSBELI VIZSGÁRA

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

Programozási technológia

Algoritmusok és adatszerkezetek II.

file:///d:/okt/ad/jegyzet/ad1/b+fa.html

Analízis feladatgy jtemény II.

Bizonyítások. 1) a) Értelmezzük a valós számok halmazán az f függvényt az képlettel! (A k paraméter valós számot jelöl).

7. Dinamikus programozás

VI.Kombinatorika. Permutációk, variációk, kombinációk

Statisztika 1. zárthelyi dolgozat március 18.

Átírás:

Elsőbbségi (prioritásos) sor Közapi fogalma, megjeleése: pl. sürgősségi osztályo a páciesek em a beérkezési időek megfelelőe, haem a sürgősség mértéke szerit kerülek ellátásra. Az operációs redszerekbe a prioritásos jobok feldolgozása is hasoló elv alapjá törtéik. Keressük azt az adatszerkezetet, amelybe az elsőbbségi sor típus tárolása hatékoy módo lehetséges. Ez azt jeleti, hogy szereték, ha az elsőbbségi sor műveleteit a lehető leggyorsabba tudák végrehajtai. Jó lee olya struktúrát találi, amelybe a beérkező beteg elhelyezése, illetve az ellátásra következő pácies kiválasztása (együttese miél rövidebb időt vee igéybe. Műveletek Empty: P L Üres? Push: P E P Sorba Frot: P E Első Prior / Első Elem Pop: P P E Sorból Megszorítások: DFrot = DPop = P \ Empty Meg kell vizsgáli, hogy milye reprezetációval tudjuk leghatékoyabbá tei a típus műveleteit. A külöböző megvalósítási módok pedig külöböző szerkezeti tulajdoságokat eredméyezek. A következőkbe láti fogjuk, hogy bármely megvalósítást is választjuk, az Empty művelet () hatékoyságúak, ezért midig csak a többi művelet hatékoyságát vizsgáljuk.. Megvalósítás: Redezetle tömbbe kerülek az elemek, pl. a beírás sorredjébe. 0 db- - db jelzi a midekori elemszámot. Az egyes típusműveletek hatékoysága (az összehasolítások és mozgatások száma): Push: Ha a tömb ics tele, akkor t[db] értékét beállítjuk, db értékét öveljük -el, (). Frot: Ha a sor em üres, akkor egy MaxKer-rel megoldható a feladat: (. Pop: A maximális és egybe törledő elem megkeresése az előzőek alapjá törtéik (. Ha maxi a legagyobb elem idexe, akkor a tőle jobbra álló elemeket eggyel balra mozgatjuk ez O(: (.

template <class E> class priorsor public: priorsor(it maxdb) = maxdb; t = ew E[]; db = 0; bool empty() retur db==0; bool full() retur db==; void push(e adat) if(!full()) t[db++]=adat; void pop() it maxi = 0; for(it i=; i<db; ++i) if(t[i]>t[maxi]) maxi=i; for(it i=maxi+; i<db; ++i)

--db; t[i-]=t[i]; E frot() it maxi = 0; for(it i=; i<db; ++i) if(t[i]>t[maxi]) maxi=i; retur t[maxi]; ~priorsor() delete[] t; private: E* t; it ; it db; ; priorsor& operator=(cost priorsor& s) priorsor(cost priorsor& s costructor Javítás: Nem evezhetjük új megvalósítási módak az alábbiakat, az előzőhez képest csak új változót vezetük be: maxh maxh midig a maximális elem idexe (helye)

. Megvalósítás: Redezett tömbbe helyezzük el az elemeket. A maximális elem midig az utolsó, így a Pop és Frot műveletek ideje kostasra csökke. Azoba egy elem beszúrásakor meg kell keresi az elem helyét a redezett tömbbe (pl. beszúró redezés belső ciklusa) template <class E> class priorsor public: priorsor(it maxdb) = maxdb; t = ew E[]; db = 0; bool empty() retur db==0; bool full() retur db==; void push(e adat) if(!full()) it i = db-; while(i>=0 && t[i]>adat) t[i+]=t[i]; --i; t[i+]=adat; ++db; void pop() --db; E frot() retur t[db-]; ~priorsor()

delete[] t; private: E* t; it ; it db; ; priorsor& operator=(cost priorsor& s) priorsor(cost priorsor& s) Haszáljuk ki azt, hogy egy redezett tömbbe egy elemet logaritmikus kereséssel lehet megtaláli. Ha a keresett elem ics a tömbbe, akkor a logaritmikus keresés jelzi ezt és ebbe az esetbe a keresés idexeiek végső helyzete alapjá meg lehet modai, hogy hol lee a keresett elem helye. Oda be is szúrhatjuk az elemet, ha a tőle jobbra lévőket eggyel jobbra léptetjük. Megjegyzés: Ez a speciális Push már egy javítási kísérlet eredméye ahhoz a változathoz képest, amely lieárisa keresi meg a beszúrás helyét. Push: (. Frot: (). Pop: (). Az Push és a Pop műveletek hatékoyságára pot fordított eredméyt kaptuk, mit az előző reprezetációba. 3. Megvalósítás: Egy kupac tulajdoságú fát töltük fel az elemekkel. A kupac (heap) egy olya majdem teljes, balra tömörített biáris fa (tehát az utolsó szit jobb oldaláról esetleg hiáyozhatak elemek), amelybe mide belső elem agyobb, vagy egyelő, mit a gyermekei. 9 0 3 6 Push: Az új csúcs beszúrásával meg kell tartauk a kupac tulajdoságot, ezért az új csúcs az utolsó sorba, balról az első üres helyre, vagy ha az utolsó sor teljes, akkor egy új sor bal szélére kerül. De még redbe kell hozi a csúcsok értékeiek viszoyát, tehát elemcseréket végzük alulról a gyökér felé haladva (felfelé) ameddig szükséges (amíg a szülő kisebb, mit a gyerek). Nézzük eek működését az alábbi kupaco, ha a 5-ös értéket szúrjuk be:

A műveletigéy a legrosszabb esetbe is a fa magasságával lesz egy agyságredbe, ami elemű fa esetébe log. Tehát O(log. Frot: Ebbe az esetbe csak kiolvassuk a gyökérbe lévő értéket. Pop: A gyökérbe lévő értéket kiolvassuk, majd az utolsó (jobb alsó) értéket rakjuk a gyökérbe, az utolsó csúcsot töröljük. A kupac tulajdoság megtartása érdekébe a gyökérbe került értéket elemcserékkel lesüllyesztjük (midig a agyobb gyerekkel cserélve) a megfelelő helyre. Az alábbi kupaco láthatjuk eek működését: A műveletigéy itt is a fa magasságával aráyos: O(log. Foglaljuk össze egy hatékoysági táblázatba a külöböző megvalósítások jellemzőit: Redezetle tömb. Redezetle tömb. Redezett tömb Kupac Push () () O(log +O( = O( O(log Pop ( ( () O( log Frot ( () () ()

A Frot műveletre a javítás utá már midhárom reprezetációba kostas lépésszámot kaptuk. A két fotosabb művelet az Push és a Pop a kupac reprezetációba kiegyesúlyozott módo hatékoyabb, mit az első kettőbe. Ezt akkor látjuk igazá, ha egy olya művelet sorozatot hajtuk végre, amelybe vegyese szerepel beszúrás és a törlése. A prioritásos sor felhaszálása redezésre Találtuk egy agyo egyszerű és talá meglepő algoritmust, amely az említett két műveletet egyelő számba hajtja végre működése sorá. Empty (p) s ε Read (s,x) Isert (p,x) IsEmpty (p) DelMax (p,x) Write (x) Az eljárás az s szekveciális iputról beolvasott értékeket sorba beteszi egy (kezdetbe üres) elsőbbségi sorba. Azutá pedig sorba kiveszi az elemeket az elsőbbségi sorból. A kiírt sorozat yílvá redezett lesz! Ez a redezés mide bizoyal meglepő, hisze ics bee egymásba ágyazott ciklus. Eek az a magyarázata, hogy az algoritmus szitjé el va takarva előlük a felhaszált adatszerkezet megvalósításáak módja. Az alábbi elemzés alapjá joggal modhatjuk, hogy az elsőbbségi sorak kupaccal megvalósítása hatékoyabb a másik két ábrázolási módál! Reprezetációtól függetleül igaz, hogy MT( k MT Push ( k MT Pop ( Számítsuk ki a feti kifejezés agyságredjét a három reprezetációba. Redezetle tömb Redezett tömb Kupacos ábrázolás MT( () () ( ( MT( ( () ( MT( (log log... log ) ) )

Azt állítjuk, hogy eek az összegzések az eredméye agyságredbe log -es, azaz: Bizoyítás: MT( ( log. A kiszámítadó összeget, mit a log x függvéy beírt téglalapjaiak területösszegét, tekitsük itegrál közelítő összegek. Ekkor log log... log log x dx l x dx l xl x x ( )l( ) ( ),44 l l l log ( log log +

template <class E> class priorsor public: priorsor(it maxdb) = maxdb+; //0. hely ürese marad t = ew E[]; u = 0; //utolsó elem helye bool empty() retur u==0; bool full() retur u==-; void push(e adat) if(!full()) t[++u]=adat; emel(u); void pop() t[] = t[u--]; sullyeszt(); E frot() retur t[]; ~priorsor() delete[] t; private: E* t; it ;

it u; void emel(it i) while(i> && t[szulo(i)]<t[i]) csere(i,szulo(i)); i = szulo(i); void sullyeszt(it i) if(bal(i)>u) //ics gyerek, em kell süllyesztei retur; it iray; if(jobb(i)>u t[bal(i)]>t[jobb(i)]) //ics jobb gyerek vagy agyobb a balgyerek iray = bal(i); else iray = jobb(i); if(t[i]<t[iray]) //a agyobb gyerek agyobb csere(i,iray); sullyeszt(iray); it szulo(it i) retur i/; it bal(it i) retur *i; it jobb(it i) retur *i+; void csere(it i, it j) E tmp = t[i]; t[i] = t[j]; t[j] = tmp; ; priorsor& operator=(cost priorsor& s) priorsor(cost priorsor& s)

A prioritásos sor alkalmazásai. Ütemezési eljárásokál. Redezetleségi kofliktus: az iput és az output elemei egyértelműe egymáshoz redelhetők, de az elemek sorredje ütközik a feldolgozás sorredjével. 3. Gráfok: Dijkstra, Prim algoritmus (lásd ott).