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.

Slides:



Advertisements
Hasonló előadás
Megszámlálás Elemi algoritmusok.
Advertisements

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.
Matematika és Tánc Felkészítő tanár: Komáromi Annamária
Programozási alapismeretek
Programozási alapismeretek 9. előadás
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.
Algebrai specifikációk Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszé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.
INFOÉRA 2006 Kombinatorika
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
Programozási ismeretek oktatása: kód vagy algoritmus
Szlávi Péter: VISz Oktatói-díj
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 2. előadás. ELTE Szlávi - Zsakó: Programozási alapismeretek 2.2/  Adatokkal kapcsolatos.
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 1. előadás
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/
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ó
Fák, bináris fák INFOÉRA Ez így 60 perc.
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.
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.
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/
Copyright, 1999 © Szlávi Péter Prioritási sor típuskonstrukció Szlávi Péter ELTE Informatika Szakmódszertani Csoport
Előrendezéses edényrendezés – RADIX „vissza”
Utórendezéses edényrendezés – RADIX „előre”
A problémamegoldás lépései
VI. Konténerek 18. Tömbök 19. Rendezés, keresés, karbantartás
Rendezési algoritmusok
Tömbök és programozási tételek
Specifikáció Specifikáció Követelményei: Tömör legyen, egyértelmű, precíz, jól formalizált, szemléletes, érthető Meg kell adni a program bemenő adatait.
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
Dinamikus programozás
Programozás I. Típus algoritmusok
Algoritmizálás, adatmodellezés tanítása 2. 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.
INFOÉRA 2006 Nagypontosságú aritmetika I.
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.
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.
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.
INFOÉRA 2006 Nagypontosságú aritmetika II.
„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.
Programozási alapismeretek 4. előadás. ELTE  Programozási tételek – a lényeglényeg  Sorozatszámítás – összegzés… Sorozatszámítás  Megszámolás.
INFOÉRA 2006 Nagypontosságú aritmetika III.
NJSzT Nemes Tihamér Országos Középiskolai Sámítástechnikai Tanulmányi Verseny.
Hatékony-e a rekurzió? FÉLEGYHÁZI TAMÁS GÁBOR 1 Kovács Magda-díj pályázat 2015/16.
Tömbök és programozási tételek
Programozási tételek Mik is ezek?
Halmazműveletek.
Programozási tételek.
Algoritmusok és Adatszerkezetek I.
Előadás másolata:

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 sorozatban  Rendezettek uniója Rendezettek uniója  Rendezettek összefésülése Rendezettek összefésülése  Kiválogatás helyben Kiválogatás helyben  Szétválogatás helyben Szétválogatás helyben Programozási alapismeretek 12. előadás Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12. 2/

ELTE Tapasztalatok a rendezésről  A rendezési algoritmusok eredménye egy rendezett sorozat. Vajon lehet-e a korábban megismert feladatokat más- képp megoldani, ha a bemenetük rende- zett?  A rendezési algoritmusok többsége „helyben” rendez. Vannak-e más, „helyben” működő algoritmusok? 3/ Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

ELTE Keresés rendezett sorozatban Feladat: Egy Y értéket keresünk egy rendezett X sorozatban. Specifikáció:  Bemenet: N:Egész, Y:Valami X:Tömb[1..N:Valami]  Kimenet: Van:Logikai, S:Egész  Előfeltétel: N  0 és RendezettE(X)  Utófeltétel: Van=  i(1  i  N): X[i]=Y és Van  1  S  N és X[S]=Y  Definíció (emlékeztető) : RendezettE(X[1..N]):=  i(1  i<N): X[i]  X[i+1] T-tulajdonság:T(v):=(v=Y) Konkretizáljuk! Legyen növekvő! 4/ Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

ELTE Keresés rendezett sorozatban Észrevétel: Van megoldás  megálltunk keresés köz- ben, mégpedig azért, mert megtaláltuk a keresett értéket. i:=1 i  N és X[i]<Y i:=i+1 Van:= i  N és X[i]=Y Ötlet: Ha már a keresett elem értékénél nagyobb- nál tartunk, akkor biztos nem lesz a sorozat- ban, megállhatunk. 5/ Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

ELTE Keresés rendezett sorozatban Specifikáció:  Bemenet: N:Egész, Y:Valami X:Tömb[1..N:Valami]  Kimenet: Van:Logikai, S:Egész  Előfeltétel: N  0 és RendezettE(X)  Utófeltétel: Van=  i(1  i  N): X[i]=Y és Van  1  S  N és X[S]=Y Ötlet: Először a középső elemmel hasonlítsunk! Ha nem a keresett, akkor vagy előtte, vagy mögötte kell tovább keresni! 6/ Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

ELTE Keresés rendezett sorozatban  Itt akkor van megoldás, ha megtaláltuk a keresett érték valamelyikét. E:=1 U:=N S:=(E+U) div 2 X[S]>YX[S]<Y U:=S – 1E:=S+1 E  U és X[S]  Y Van:=X[S]=Y Algoritmus: 7/ Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

ELTE Keresés rendezett sorozatban Kérdések:  Ha több egyforma elem is van a sorozatban, akkor ez a módszer melyiket találja meg?  Hogyan lehetne az összes Y-értékű elemet megtalálni?  Hány lépés alatt találjuk meg a keresett elemet? 8/ Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

ELTE Rendezettek uniója Feladat: Adott két rendezett halmaz, adjuk meg az uniójukat! unió Specifikáció:  Bemenet: N,M:Egész, X:Tömb[1..N:Valami], Y:Tömb[1..M:Valami]  Kimenet: Db:Egész, Z:Tömb[1..Db:Valami]  Előfeltétel: N,M  0 és HalmazE(X) és HalmazE(Y) és RendezettE(X) és RendezettE(Y) Összefuttatás.  N+M 9/ Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

ELTE Rendezettek uniója  Utófeltétel: és  i(1≤i≤Db): Z[i]  X vagy Z[i]  Y és HalmazE(Z) és RendezettE(Z)  Definíció (emlékeztető) : HalmazE(X[1..N]):=  i  j  [1..N]: X[i]  X[j] Ötlet: Az eredmény első eleme vagy az X, vagy az Y első eleme lehet. A kettő közül a rendezett- ség szerintit tegyük az eredménybe, majd a maradékra ugyanezt az elvet alkalmazhatjuk. 10/ Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

ELTE Rendezettek uniója Algoritmus elé:  Amíg van mit hasonlítani:  Ha már nincs mit hasonlítani: 11/ Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

ELTE Rendezettek uniója i:=1 j:=1 Db:=0 i  N és j  M Db:=Db+1 X[i]<Y[j]X[i]=Y[j]X[i]>Y[j] Z[Db]:=X[i] Z[Db]:=Y[j] i:=i+1 j:=j+1 … Algoritmus 1 : 12/ Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

ELTE Rendezettek uniója … iNiN Db:=Db+1 Z[Db]:=X[i] i:=i+1 jMjM Db:=Db+1 Z[Db]:=Y[j] j:=j+1  Ha az X és Y utolsó elemei egyenlők, ak- kor ez a két ciklus nem kellene! 13/ Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

ELTE Rendezettek uniója i:=1 j:=1 Db:=0 X[N+1]:=+  Y[M+1]:=+  i  N+1 és j  M+1 Db:=Db+1 X[i]<Y[j]X[i]=Y[j]X[i]>Y[j] Z[Db]:=X[i] Z[Db]:=Y[j] i:=i+1 j:=j+1 Algoritmus 2 : … és utoljára? Z[Db]:=+  14/ Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

ELTE Rendezettek uniója i:=1 j:=1 Db:=0 X[N+1]:=+  Y[M+1]:=+  i<N+1 vagy j<M+1 Db:=Db+1 X[i]<Y[j]X[i]=Y[j]X[i]>Y[j] Z[Db]:=X[i] Z[Db]:=Y[j] i:=i+1 j:=j+1 Algoritmus 2 javítása : 15/ Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

ELTE Rendezettek uniója Kérdések:  Jobb lett ez a módszer az előzőnél?  Hány lépés alatt kapjuk meg a megoldást? Jobb  Meg lehetne ugyanezt tenni a metszettel is? Tapasztalat: ez a módszer a kimenet szerint halad egye- sével és nem a bemenet szerint (mint a ko- rábbiak). 16/ Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

ELTE Rendezettek összefésülése Feladat: Adott két rendezett sorozat, adjuk meg az összefésülésüket! Specifikáció:  Bemenet: N,M:Egész, X:Tömb[1..N:Valami], Y:Tömb[1..M:Valami]  Kimenet: Z:Tömb[1..N+M:Valami]  Előfeltétel: N,M  0 és RendezettE(X) és RendezettE(Y) 17/ Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

ELTE Rendezettek összefésülése  Utófeltétel: Z  Permutáció(X+Y) és RendezettE(Z) Ötlet: A megoldás olyan, mint az összefuttatás, csak az egyforma elemeket is berakjuk az eredménybe. 18/ Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

ELTE Rendezettek összefésülése i:=1 j:=1 Db:=0 X[N+1]:=+  Y[M+1]:=+  i<N+1 vagy j<M+1 Db:=Db+1 X[i]  Y[j] Z[Db]:=X[i]Z[Db]:=Y[j] i:=i+1j:=j+1 NI Algoritmus: 19/ Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

ELTE Kiválogatás helyben Specifikáció:  Bemenet: N:Egész, X:Tömb[1..N:Valami]  Kimenet: Db:Egész, X’:Tömb[1..N:Valami]  Előfeltétel: N  0  Utófeltétel: és X’[1..Db]  X és  i (1≤i≤Db): T(X’[i]) 20/ Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12. Csak érték lehet!

ELTE Kiválogatás helyben Megjegyzés: Itt olyan helyre tesszük a kiválogatott elemet, amire már nincs szükségünk. Db:=0 i=1..N T(X[i]) Db:=Db+1  X[Db]:=X[i] I N Algoritmus: 21/ Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

ELTE Szétválogatás helyben Specifikáció:  Bemenet: N:Egész, X:Tömb[1..N:Valami]  Kimenet: Db:Egész, X’:Tömb[1..N:Valami]  Előfeltétel: N  0  Utófeltétel: Db= és X’  Permutáció(X) és  i (1≤i≤Db): T(X’[i]) és  i (Db+1≤i≤N): nem T(X’[i])  Definíció (emlékeztető) : Permutáció(Z):= Z elemeinek összes per- mutációjának halmaza 22/ Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

ELTE Szétválogatás helyben Algoritmikus ötlet: 1. Vegyük ki a sorozat első elemét: O x x x x x x x x x x x x 2. Keresünk hátulról egy elemet, amit előre kell tennünk (mert T tulajdonságú): O x x x x x x x x x x x x 3. A megtalált elemet tegyük az előbb keletke- zett lyukba:  x x x x x x O x x x x x 23/ Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

ELTE Szétválogatás helyben 4. Most keletkezett egy lyuk hátul, az előbb be- töltött lyuktól indulva elölről keressünk hátra teendő elemet:  x x x x x x O x x x x x 5. A megtalált elemet tegyük a hátul levő lyukba, majd újra hátulról kereshetünk! 6. … 7. Befejezzük a keresést, ha valahonnan elértük a lyukat, majd erre a helyre a kivettet vissza- tesszük. 24/ Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

ELTE Szétválogatás helyben e:=1 u:=N Y:=X[e] e<u HátulrólKeres(e,u,Van) Van X[e]:=X[u]  e:=e+1 ElölrőlKeres(e,u,Van) Van X[u]:=X[e]  u:=u–1 … I N NI Algoritmus: 25/ Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

ELTE Szétválogatás helyben … X[e]:=Y T(Y) Db:=e Db:=e – 1 NI 26/ Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

ELTE Szétválogatás helyben ElölrőlKeres(e,u:Egész,Van:Logikai) e<u és T(X[e]) e:=e+1 Van:=e<u HátulrólKeres(e,u:Egész,Van:Logikai) e<u és nem T(X[u]) u:=u–1 Van:=e<u 27/ Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

ELTE Hatékonyságvizsgálat táblázatkezelővel Ötlet: 1. A táblázatkezelők importálnak sokféle formátumú fájl, pl. CSV-formátumút. 2. A Comma Separated Value (CSV) = egy „mezei” text fájl, amelyben minden önálló ( cellában tárolandó ) adatot pontosvessző követ. 3. Egyszerű olyan C++ programot írni, amely a táblázatolandó adatokat „CSV- esítve” ír text fájlba. 28/ Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

ELTE Hatékonyságvizsgálat táblázatkezelővel Példafeladat: Az unió és az összefuttatás tételek haté- konyságának összevetése. Hatékonysági „dimenzió”: tömbbeli elemek összehasonlítás-száma, esetleg futási ideje Összefüggést keresünk a bemeneti soro- zathossz és hasonlítás-szám között: (N,M)→hDb unió, (N,M)→hDb összefuttatás … 29/ Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

ELTE Hatékonyságvizsgálat táblázatkezelővel Megoldásvázlat: 1. Mindkét algoritmusban számoljuk a tömb- elem-összehasonlításokat (mérjük az időt). 2. Néhány ( jól kiválasztott ) N,M-elemű soro- zatra lefuttatjuk és közben számlálunk (mérünk). 3. Majd CSV-fájlba írjuk a hatékonysági ered- ményeinket. Megjegyzés: az időmérés feltétele, hogy pontosan tudjuk mérni. ( Windows-ban aggá- lyos, Unix/Linuxban OK. ) 30/ Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

ELTE Hatékonyságvizsgálat táblázatkezelővel Egy lehetséges eredmény a táblázat- kezelőbe importálás után – unió: Numerikusan 31/ Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

ELTE Hatékonyságvizsgálat táblázatkezelővel Egy lehetséges eredmény a táblázat- kezelőbe importálás után – unió: Grafikusan 32/ Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

ELTE Hatékonyságvizsgálat táblázatkezelővel Egy lehetséges eredmény a táblázat-kezelőbe importálás után – összefuttatás: Numerikusan 33/ Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

ELTE Hatékonyságvizsgálat táblázatkezelővel Egy lehetséges eredmény a táblázat-kezelőbe importálás után – összefuttatás: Grafikusan 34/ Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

Programozási alapismeretek 12. előadás vége