Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

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.

Hasonló előadás


Az előadások a következő témára: "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."— Előadás másolata:

1 Programozási alapismeretek 12. előadás

2 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/35 2014. 07. 14.2014. 07. 14.2014. 07. 14.

3 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/35 2014. 07. 14.2014. 07. 14.2014. 07. 14. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

4 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/35 2014. 07. 14.2014. 07. 14.2014. 07. 14. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

5 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/35 2014. 07. 14.2014. 07. 14.2014. 07. 14. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

6 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/35 2014. 07. 14.2014. 07. 14.2014. 07. 14. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

7 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/35 2014. 07. 14.2014. 07. 14.2014. 07. 14. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

8 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/35 2014. 07. 14.2014. 07. 14.2014. 07. 14. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

9 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/35 2014. 07. 14.2014. 07. 14.2014. 07. 14. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

10 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/35 2014. 07. 14.2014. 07. 14.2014. 07. 14. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

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

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/35 2014. 07. 14.2014. 07. 14.2014. 07. 14. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

13 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/35 2014. 07. 14.2014. 07. 14.2014. 07. 14. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

14 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/35 2014. 07. 14.2014. 07. 14.2014. 07. 14. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

15 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/35 2014. 07. 14.2014. 07. 14.2014. 07. 14. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

16 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/35 2014. 07. 14.2014. 07. 14.2014. 07. 14. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

17 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/35 2014. 07. 14.2014. 07. 14.2014. 07. 14. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

18 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/35 2014. 07. 14.2014. 07. 14.2014. 07. 14. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

19 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/35 2014. 07. 14.2014. 07. 14.2014. 07. 14. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

20 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/35 2014. 07. 14.2014. 07. 14.2014. 07. 14. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12. Csak érték lehet!

21 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/35 2014. 07. 14.2014. 07. 14.2014. 07. 14. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

22 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/35 2014. 07. 14.2014. 07. 14.2014. 07. 14. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

23 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/35 2014. 07. 14.2014. 07. 14.2014. 07. 14. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

24 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/35 2014. 07. 14.2014. 07. 14.2014. 07. 14. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

25 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/35 2014. 07. 14.2014. 07. 14.2014. 07. 14. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

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

27 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/35 2014. 07. 14.2014. 07. 14.2014. 07. 14. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

28 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/35 2014. 07. 14.2014. 07. 14.2014. 07. 14. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

29 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/35 2014. 07. 14.2014. 07. 14.2014. 07. 14. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

30 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/35 2014. 07. 14.2014. 07. 14.2014. 07. 14. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

31 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/35 2014. 07. 14.2014. 07. 14.2014. 07. 14. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

32 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/35 2014. 07. 14.2014. 07. 14.2014. 07. 14. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

33 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/35 2014. 07. 14.2014. 07. 14.2014. 07. 14. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

34 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/35 2014. 07. 14.2014. 07. 14.2014. 07. 14. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 12.

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


Letölteni ppt "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."

Hasonló előadás


Google Hirdetések