Programozási alapismeretek 11. előadás

Slides:



Advertisements
Hasonló előadás
Nevezetes algoritmusok
Advertisements

„Esélyteremtés és értékalakulás” Konferencia Megyeháza Kaposvár, 2009
Programozási tételek, és „négyzetes” rendezések
Weblap szerkesztés HTML oldal felépítése Nyitó tag Záró tag Nyitó tag Záró tag oldalfej tözs.
Programozási alapismeretek
Programozási alapismeretek 5. előadás. ELTE Szlávi - Zsakó: Programozási alapismeretek 5.2/  Programozási tételek.
Programozási alapismeretek 6. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 6.2/  Rekordok/struktúrák.
INFOÉRA Kombinatorikai algoritmusok (Horváth Gyula és Szlávi Péter előadásai felhasználásával) Juhász István-Zsakó László: Informatikai.
Rekurzió (Horváth Gyula és Szlávi Péter előadásai felhasználásával)
Algoritmizálás, adatmodellezés tanítása 4. előadás
Programozás alapjai A programozás azt a folyamatot jelenti, melynek során a feladatot a számítógép számára érthető formában írjuk le. C++, Delphi, Java,
Copyright, 2009 © Szlávi Péter A kupac és a prioritási sor típuskonstrukciók Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
4. VÉGES HALMAZOK 4.1 Alaptulajdonságok
Programozási alapismeretek 4. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 4.2/  A szöveg A szöveg.
Programozási alapismeretek 7. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás2/  Sorozatszámítás.
Programozási alapismeretek 3. előadás
Programozási alapismeretek 13. előadás. ELTE Érdekességek - kombinatorika  Az iskola bejáratánál N lépcsőfok van. Egyszerre maximum K fokot tudunk lépni,
Programozási alapismeretek
Programozási alapismeretek 10. előadás
Programozási alapismeretek 5. előadás. ELTE 2/  Programozási tételek – a lényeglényeg  Sorozatszámítás Sorozatszámítás.
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 9. előadás. ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás2/
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.
Alhálózat számítás Osztályok Kezdő Kezdete Vége Alapértelmezett CIDR bitek alhálózati maszk megfelelője A /8 B
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ó
Valós számok Def. Egy algebrai struktúra rendezett test, ha test és rendezett integritási tartomány. Def. Egy (T; +,  ;  ) rendezett test felső határ.
1.3 Relációk Def. (rendezett pár) (a1 , a2 ) := {{a1} , {a1 , a2 }} .
ELTE Szlávi - Zsakó: Programozási alapismeretek 5.1/ Keresés Specifikáció:  Bemenet: N:Egész, X:Tömb[1..N:Valami]
ELTE Szlávi-Zsakó: Programozási alapismeretek 8.1/ Kiválogatás Specifikáció:  Bemenet: N:Egész, X:Tömb[1..N:Valami]
ELTE Szlávi-Zsakó: Programozási alapismeretek 10.1/ Összegzés mátrixra Feladat: Egy mátrix elemeinek összege.
Edényrendezés - RADIX „vissza” - bináris számokra
ELTE Szlávi - Zsakó: Programozási alapismeretek 5.1/ Sorozatszámítás Specifikáció (a végleges) :  Bemenet:
ELTE Szlávi-Zsakó: Programozási alapismeretek Szlávi-Zsakó: Programozási alapismeretek 3. 1/
Figyelmeztetés! E program használata fokozottan
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,
Exponenciális egyenletek
Előrendezéses edényrendezés – RADIX „vissza”
Utórendezéses edényrendezés – RADIX „előre”
A problémamegoldás lépései
Alapszint 2.  Készíts makrót, ami a kijelölt cellákat egybenyitja, a tartalmat vízszintesen és függőlegesen középre igazítja és 12 pontos betűméretűre.
Rendezési algoritmusok
Rendezések és szövegkezelő függvények
A Dijkstra algoritmus.
Programozási alapismeretek 11. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 11.2/ Tartalom  Rendezési.
Bernát Péter Buborékos rendezés.
Egyszerű cserés rendezés
Algoritmizálás, adatmodellezés tanítása 8. előadás.
Algoritmizálás, adatmodellezés tanítása 2. előadás.
Beillesztéses rendezé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.
Programozási alapismeretek * A Zh-írás módszertana.
Programozási alapismeretek 8. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 8.2/  További programozási.
előadások, konzultációk
Algoritmizálás, adatmodellezés
Programozási alapismeretek 10. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 10.2/  Kiválogatás + összegzés.
Objektum orientált programozá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.
INFOÉRA 2006 Nagypontosságú aritmetika II.
KÉSZÍTETTE: KOVÁCSICS KRISZTIÁN
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
Programozási tételek Mik is ezek?
A maximum kiválasztás algoritmusa
Informatikai gyakorlatok 11. évfolyam
Algoritmusok és Adatszerkezetek I.
Előadás másolata:

Programozási alapismeretek 11. előadás 2011/2012 Programozási alapismeretek 11. előadás Szlávi-Zsakó

Programozási alapismeretek 11. 2011/2012 Tartalom Rendezési feladat – specifikáció Egyszerű cserés rendezés Minimum-kiválasztásos rendezés Buborékos rendezés Javított buborékos rendezés Beillesztéses rendezés Javított beillesztéses rendezés Szétosztó rendezés Számlálva szétosztó rendezés Rendezések hatékonysága – idő 2017.04.10. Szlávi-Zsakó: Programozási alapismeretek 11. Szlávi-Zsakó

Programozási alapismeretek 11. 2011/2012 Rendezési feladat Specifikáció: Bemenet: N:Egész, X:Tömb[1..N:Valami] Kimenet: X’:Tömb[1..N:Valami] Előfeltétel: N0 Utófeltétel: RendezettE(X’) és X’Permutáció(X) Jelölések: X’: az X kimeneti (megálláskori) értéke RendezettE(X): X rendezett-e? X’Permutáció(X): X’ az X elemeinek egy permutációja-e? Világos, h. előfeltétel: a Valami-n értelmezett rendezési reláció! 2017.04.10. Szlávi-Zsakó: Programozási alapismeretek 11. Szlávi-Zsakó

Rendezések (fontos új fogalmak, jelölések) Programozási alapismeretek 11. 2011/2012 Rendezések (fontos új fogalmak, jelölések) Aposztróf a specifikációban: Ha egy adat előfordul a bemeneten és kimene-ten is, akkor az UF-ben együtt kell előfordul-nia az adat bemenetkori és kimenetkori érté-ke. Megkülönböztetésül a kimeneti értéket „megaposztrofáljuk”. Pl.: Z’:=a Z kimeneti (megálláskori) értéke. „Rendezett-e” predikátum: RendezettE(Z): i(1≤i≤N–1): Z[i]≤Z[i+1] Permutációhalmaz: Permutáció(Z):= a Z elemeinek összes permu- tációját tartalmazó halmaz. 2017.04.10. Szlávi-Zsakó: Programozási alapismeretek 11. Szlávi-Zsakó

Egyszerű cserés rendezés Programozási alapismeretek 11. 2011/2012 Egyszerű cserés rendezés A lényeg: Hasonlítsuk az első ele-met az összes mögötte levővel, s ha kell, cse-réljük meg! Ezután ugyanezt csi-náljuk a második elem-re! … Végül az utolsó két elemre! A minimum az „alsó” végére kerül. X A pirossal jelöltek már a helyükön vannak A pirossal jelöltek már a helyükön vannak X X X … 2017.04.10. Szlávi-Zsakó: Programozási alapismeretek 11. Szlávi-Zsakó

Egyszerű cserés rendezés Programozási alapismeretek 11. 2011/2012 Egyszerű cserés rendezés Algoritmus: i=1..N–1 j=i+1..N X[i]>X[j] S:=X[i]  X[i]:=X[j] X[j]:=S Elem-csere I N A sokféle rendezési algoritmust érdemes összevetni gyorsaságuk (esetleg helyszükségletük) alapján. Nyilvánvaló, h. időt rabló „elemi” tevékenység az X-elemek között rendezési reláció kiértékelése, ill. az elemek mozgatása (X-re vonatkozó értékadás)… különösen ezek válnak „dominánssá”, ha az X-elemek nagy méretűek (pl. szöveg típusú). Hasonlítások száma: 1+2+..+N–1= Mozgatások száma: 0 … 2017.04.10. Szlávi-Zsakó: Programozási alapismeretek 11. Szlávi-Zsakó

Minimum-kiválasztásos rendezés Programozási alapismeretek 11. 2011/2012 Minimum-kiválasztásos rendezés A lényeg: Vegyük az első elem mögöttiek minimu-mát, s cseréljük meg az elsővel, ha kell! Ezután ugyanezt csináljuk a második elemre! … Végül az utolsó két elemre! A minimum az „alsó” végére kerül. X A pirossal jelöltek már a helyükön vannak A pirossal jelöltek már a helyükön vannak X X X … 2017.04.10. Szlávi-Zsakó: Programozási alapismeretek 11. Szlávi-Zsakó

Minimum-kiválasztásos rendezés Programozási alapismeretek 11. 2011/2012 Minimum-kiválasztásos rendezés Algoritmus: i=1..N–1 Min:=i j=i+1..N X[Min]>X[j] Min:=j  S:=X[i] X[i]:=X[Min] X[Min]:=S Minimum-kiválasztás az i.-től I N Elem-csere Mint látható: az előző dián beharangozott algoritmusnál kicsit „rosszabbul” teljesít ez az algoritmus, hiszen itt a csere feltétlenül (azaz nemcsak, ha kell) végrehajtódik. Valójában ennek az algoritmusnak lényege így hangzik: „Vegyük az első és az összes követő minimumát, s cseréljük meg ezt az elsővel, ha kell!”, majd „Vegyük a második és az összes követő minimumát, s cseréljük meg ezt a másodikkal, ha kell!”… Hasonlítások száma: 1+2+..+N–1= Mozgatások száma: 3(N–1) 2017.04.10. Szlávi-Zsakó: Programozási alapismeretek 11. Szlávi-Zsakó

Programozási alapismeretek 11. 2011/2012 Buborékos rendezés A lényeg: Hasonlítsunk minden elemet a mögötte le-vővel, s ha kell, cserél-jük meg! Ezután ugyanezt csi-náljuk az utolsó elem nélkül! … Végül az első két elem-re! A maximum a „felső” végére kerül. X A többiek is tartanak a helyük felé. A pirossal jelöltek már a helyükön vannak A pirossal jelöltek már a helyükön vannak … X X X 2017.04.10. Szlávi-Zsakó: Programozási alapismeretek 11. Szlávi-Zsakó

Programozási alapismeretek 11. 2011/2012 Buborékos rendezés Algoritmus: i=N..2, -1-esével j=1..i–1 X[j]>X[j+1] S:=X[j]  X[j]:=X[j+1] X[j+1]:=S Elem-csere I N Hasonlítások száma: 1+2+..+N–1= Mozgatások száma: 0 … 2017.04.10. Szlávi-Zsakó: Programozási alapismeretek 11. Szlávi-Zsakó

Programozási alapismeretek 11. 2011/2012 Buborékos rendezés Algoritmus: i:=N i2 j=1..i–1 X[j]>X[j+1] S:=X[j]  X[j]:=X[j+1] X[j+1]:=S i:=i–1 I N 2017.04.10. Szlávi-Zsakó: Programozási alapismeretek 11. Szlávi-Zsakó

Javított buborékos rendezés Programozási alapismeretek 11. 2011/2012 Javított buborékos rendezés Megfigyelések: Ha a belső ciklusban egyáltalán nincs csere, akkor be lehetne fejezni a rendezést. Ha a belső ciklusban a K. helyen van az utolsó csere, akkor a K+1. helytől már biz-tosan jó elemek vannak, a külső ciklusvál-tozóval többet is léphetünk. 2017.04.10. Szlávi-Zsakó: Programozási alapismeretek 11. Szlávi-Zsakó

Javított buborékos rendezés Programozási alapismeretek 11. 2011/2012 Javított buborékos rendezés Algoritmus: Átírás ‘amíg’-os ciklussá i:=N i≥2 cs:=0 j=1..i–1 X[j]>X[j+1] S:=X[j]  X[j]:=X[j+1] X[j+1]:=S cs:=j i:=cs I N Az utolsó cserehely feljegyzése 2017.04.10. Szlávi-Zsakó: Programozási alapismeretek 11. Szlávi-Zsakó

Beillesztéses rendezés Programozási alapismeretek 11. 2011/2012 Beillesztéses rendezés A lényeg: Egy elem rendezett. A másodikat vagy mögé, vagy elé tesszük, így már ketten is rendezettek. … Az i-ediket a kezdő, i–1 rendezettben addig hozzuk előre cserékkel, amíg a helyére nem kerül; így már i darab rendezett lesz. Az utolsóval ugyanígy! X 2017.04.10. Szlávi-Zsakó: Programozási alapismeretek 11. Szlávi-Zsakó

Beillesztéses rendezés Programozási alapismeretek 11. 2011/2012 Beillesztéses rendezés Algoritmus: i=2..N j:=i–1 j>0 és X[j]>X[j+1] S:=X[j] X[j]:=X[j+1] X[j+1]:=S j:=j–1 Elem-csere Hasonlítások száma: N–1 … Mozgatások száma: 0 … 2017.04.10. Szlávi-Zsakó: Programozási alapismeretek 11. Szlávi-Zsakó

Javított beillesztéses rendezés Programozási alapismeretek 11. 2011/2012 Javított beillesztéses rendezés A lényeg: Egy elem rendezett. A másodikat vagy mögé, vagy elé tesszük, így már ketten is rendezettek. … Az i-ediknél a nála kiseb-beket tologassuk hátra, majd illesszük be eléjük az i-ediket; így már i darab rendezett lesz. Az utolsóval ugyanígy! X 2017.04.10. Szlávi-Zsakó: Programozási alapismeretek 11. Szlávi-Zsakó

Javított beillesztéses rendezés Programozási alapismeretek 11. 2011/2012 Javított beillesztéses rendezés Algoritmus: i=2..N s:=X[i] j:=i–1 j>0 és X[j]>s X[j+1]:=X[j] j:=j–1 X[j+1]:=s Elem-mozgatás, nem csere! Vegyük észre, a helyszükséglet (ha minimálisan is, de) növekedett: kellett egy X-elem típusú segédváltozó! Hasonlítások száma: N–1 … Mozgatások száma: 2(N–1) … 2017.04.10. Szlávi-Zsakó: Programozási alapismeretek 11. Szlávi-Zsakó

Programozási alapismeretek 11. 2011/2012 Szétosztó rendezés A lényeg: Ha a rendezendő sorozatról speciális tudá-sunk van, akkor megpróbálkozhatunk más módszerekkel is. Specifikáció – rendezés N lépésben: Bemenet: N:Egész, X:Tömb[1..N:Egész] Kimenet: Y:Tömb[1..N:Egész] Előfeltétel: N0 és XPermutáció(1,…,N) Utófeltétel: RendezettE(Y) és YPermutáció(X) 2017.04.10. Szlávi-Zsakó: Programozási alapismeretek 11. Szlávi-Zsakó

Programozási alapismeretek 11. 2011/2012 Szétosztó rendezés Algoritmus: i=1..N Y[X[i]]:=X[i] Persze ehelyett írhattuk volna: Y[i]:=i!  Azaz a feladat akkor érdekes, ha pl. X[i] egy rekord, aminek az egyik mezője az 1 és N közötti egész szám: X,Y:Tömb[1..N:Rekord(kulcs:Egész,…)] Algoritmus: i=1..N Y[X[i].kulcs]:=X[i] 2017.04.10. Szlávi-Zsakó: Programozási alapismeretek 11. Szlávi-Zsakó

Számlálva szétosztó rendezés Programozási alapismeretek 11. 2011/2012 Számlálva szétosztó rendezés Előfeltétel: a rendezendő értékek 1 és M közötti egész számok. Specifikáció: Bemenet: N,M:Egész, X:Tömb[1..N:Egész] Kimenet: Y:Tömb[1..N:Egész] Előfeltétel: N0 és M1 és i(1iN): 1X[i]M Utófeltétel: RendezettE(Y) és YPermutáció(X) 2017.04.10. Szlávi-Zsakó: Programozási alapismeretek 11. Szlávi-Zsakó

Számlálva szétosztó rendezés Programozási alapismeretek 11. 2011/2012 Számlálva szétosztó rendezés A lényeg: Első lépésben számláljuk meg, hogy melyik értékből hány van a rendezendő sorozatban! Ezután adjuk meg, hogy az utolsó i értéket hova kell tenni: ez pontosan az i-nél kisebb vagy egyenlő számok száma a sorozatban! Végül nézzük végig újra a sorozatot, s az i értékű elemet tegyük a helyére, majd módosít-sunk: az utolsó i értékű elemet ettől kezdve eggyel kisebb helyre kell tenni. 2017.04.10. Szlávi-Zsakó: Programozási alapismeretek 11. Szlávi-Zsakó

Számlálva szétosztó rendezés Programozási alapismeretek 11. 2011/2012 Számlálva szétosztó rendezés Algoritmus: Db[1..M]:=0 [Db[i]: hány darab van i-ből?] i=1..N Db[X[i]]:=Db[X[i]]+1 i=2..M Db[i]:=Db[i–1]+Db[i] [Db[i]: hol az i. vége?] Y[Db[X[i]]]:=X[i] Db[X[i]]:=Db[X[i]]–1 Mozgatások száma: N Additív műveletek száma: 2M–2+2N 2017.04.10. Szlávi-Zsakó: Programozási alapismeretek 11. Szlávi-Zsakó

Programozási alapismeretek 11. 2011/2012 Számláló rendezés A lényeg: Ha nem megy a szétosztó rendezés (ismeret-len az M), akkor segítsünk magunkon, először számláljunk („sorrendet”), azután osszunk szét! Ehhez használhatjuk a legegyszerűbb, cserés rendezés elvét. Jelentse Db[i] az i. elemnél kisebb, vagy az i.-kel egyenlő, de tőle balra levő elemek számát! ↓ A Db[i] használható az i. elemnek a rendezett sorozatbeli indexeként. 2017.04.10. Szlávi-Zsakó: Programozási alapismeretek 11. Szlávi-Zsakó

Programozási alapismeretek 11. 2011/2012 Számláló rendezés Algoritmus: i=1..N–1 j=i+1..N X[i]>X[j] Db[i]:=Db[i]+1 Db[j]:=Db[j]+1 i=1..N Y[Db[i]]:=X[i] I N Hasonlítások száma: 1+2+..+N–1= Mozgatások száma: N Additív műveletek száma: hasonlítások száma 2017.04.10. Szlávi-Zsakó: Programozási alapismeretek 11. Szlávi-Zsakó

Rendezések hatékonysága Programozási alapismeretek 11. 2011/2012 Rendezések hatékonysága N2 idejű rendezések: Egyszerű cserés rendezés  Minimum-kiválasztásos rendezés  Buborékos rendezés  Javított buborékos rendezés  Beillesztéses rendezés  Javított beillesztéses rendezés  Számláló rendezés  2017.04.10. Szlávi-Zsakó: Programozási alapismeretek 11. Szlávi-Zsakó

Rendezések hatékonysága Programozási alapismeretek 11. 2011/2012 Rendezések hatékonysága N (N+M) idejű rendezések: (de speciális feltétellel) Szétosztó rendezés  Számlálva szétosztó rendezés  Kitekintés: (Algoritmusok tantárgy) Lesznek Nlog(N) idejű rendezések. Nem lehet Nlog(N)-nél jobb általá-nos rendezés! 2017.04.10. Szlávi-Zsakó: Programozási alapismeretek 11. Szlávi-Zsakó

Programozási alapismeretek 11. 2011/2012 Az évfolyamZh A minták letöltése: http://progalap.elte.hu/downloads/kov/Zhk2011.zip A tesztelőrendszer: http://ceoisrv.inf.elte.hu/Progalap 2017.04.10. Szlávi-Zsakó: Programozási alapismeretek 11. Szlávi-Zsakó

Programozási alapismeretek 11. 2011/2012 Az évfolyamZh Tudnivalók: a main.cpp fájlt egy web-es felületen kell beküldeni (akár többször is!) és ott lehet megnézni a kapott értékelést; ide a zh-zó az EHA-kódjával léphet majd be a saját jelszavával; a program standard inputról olvas, standard out-putra ír, a tesztelést be- és kimenet átirányítással old-juk meg; a bemenet biztosan helyes, ellenőrizni nem kell; a kimenetre csak az eredményeket szabad kiírni, semmi egyebet nem; a bemenet és a kimenet szintaxisa és sorrendje is rögzített, attól eltérni nem szabad. 2017.04.10. Szlávi-Zsakó: Programozási alapismeretek 11. Szlávi-Zsakó

Programozási alapismeretek 11. 2011/2012 Programozási alapismeretek 11. előadás vége Szlávi-Zsakó