Hatékonyság 1. előadás

Hasonló dokumentumok
PROGRAMOZÁSI TÉTELEK

Adatbázis és szoftverfejlesztés elmélet. Programozási tételek

Felvételi tematika INFORMATIKA

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

Algoritmizálás, adatmodellezés 1. előadás

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

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

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

Adatszerkezetek II. 10. előadás

Algoritmizálás, adatmodellezés tanítása 1. előadás

Adatbázis rendszerek Gy: Algoritmusok C-ben

ELEMI PROGRAMOZÁSI TÉTELEK

Hatékonyság 2. előadás

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

Kombinatorikai algoritmusok. (Horváth Gyula és Szlávi Péter előadásai felhasználásával)

Kombinatorikai algoritmusok

A félév során előkerülő témakörök

Programozás II. előadás

Programozás I. 1. előadás: Algoritmusok alapjai. Sergyán Szabolcs

Specifikáció. B logikai formula, a bemeneti feltétel, K logikai formula, a kimeneti feltétel, A az algoritmus, amelyre az állítás vonatkozik.

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

Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése

Programozási tételek. Dr. Iványi Péter

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

Specifikáció. B logikai formula, a bemeneti feltétel, K logikai formula, a kimeneti feltétel, A az algoritmus, amelyre az állítás vonatkozik.

Rendezések. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar október 24.

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása

Multihalmaz, intervallumhalmaz

Algoritmizálás és adatmodellezés tanítása 2. előadás

Bevezetés a programozásba I.

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

Egyszerű programozási tételek

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje

Alkalmazott modul: Programozás. Programozási tételek, rendezések. Programozási tételek Algoritmusok és programozási tételek

Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.

Adatszerkezetek I. 1. előadás

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.

Alkalmazott modul: Programozás. Programozási tételek, rendezések Giachetta Roberto

Objektum Orientált Programozás VII.

Közismereti informatika I. 4. előadás

Informatikai tehetséggondozás:

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

Visszalépéses kiválogatás

Bevezetés a programozásba I 3. gyakorlat. PLanG: Programozási tételek. Programozási tételek Algoritmusok

Rendezések. A rendezési probléma: Bemenet: Kimenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat

Az informatika kulcsfogalmai

Nagyságrendek. Kiegészítő anyag az Algoritmuselmélet tárgyhoz. Friedl Katalin BME SZIT február 1.

Láncolt listák Témakörök. Lista alapfogalmak

A 2017/2018 tanévi Országos Középiskolai Tanulmányi Verseny első fordulójának feladatai. INFORMATIKA II. (programozás) kategória

Összetett programozási tételek

Egyszerű programozási tételek

Algoritmizálás, adatmodellezés tanítása 7. előadás

Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.

Biomatematika 2 Orvosi biometria

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez

A 2013/2014 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

Algoritmizálás, adatmodellezés tanítása 1. előadás

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés. Szekvenciális fájlkezelés Fájlok használata

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

Algoritmizálás és adatmodellezés 2. előadás

Véletlenszám generátorok és tesztelésük HORVÁTH BÁLINT

A 2011/2012 tanévi Országos Középiskolai Tanulmányi Verseny első forduló feladatainak megoldása. INFORMATIKÁBÓL II. (programozás) kategóriában

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

Algoritmuselmélet 2. előadás

Programozási alapismeretek 11. előadás

14. Mediánok és rendezett minták

Dinamikus programozás II.

Algoritmusokfelülnézetből. 1. ELŐADÁS Sapientia-EMTE

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés

Shor kvantum-algoritmusa diszkrét logaritmusra

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Egyszerű programozási tételek

Programozás alapjai. 6. gyakorlat Futásidő, rekurzió, feladatmegoldás

Programozási alapismeretek 3. előadás

Algoritmizálás és adatmodellezés tanítása 6. előadás

Tartalomjegyzék. Köszönetnyilvánítás. 1. Az alapok 1

[Biomatematika 2] Orvosi biometria

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs

VÉLETLEN PERMUTÁCIÓ ELŐÁLLÍTÁSA

Algoritmuselmélet 18. előadás

Gyakorló feladatok az 1. nagy zárthelyire

Programozási tételek. PPT 2007/2008 tavasz.

Programozás alapjai 5. gyakorlat Vezérlési szerkezetek egymásba ágyazása

Programozás alapjai. 5. előadás

Algoritmizálás, adatmodellezés 1. előadás

Térinformatikai algoritmusok Elemi algoritmusok

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

RSA algoritmus. P(M) = M e mod n. S(C) = C d mod n. A helyesség igazoláshoz szükséges számelméleti háttér. a φ(n) = 1 mod n, a (a 1,a 2,...

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

Alkalmazott modul: Programozás 4. előadás. Procedurális programozás: iteratív és rekurzív alprogramok. Alprogramok. Alprogramok.

Gyakorló feladatok ZH-ra

MATEMATIKAI FÜGGVÉNYEK

Térinformatikai algoritmusok Elemi algoritmusok

Algoritmizálás és adatmodellezés tanítása 9. előadás

Algoritmizálás és adatmodellezés tanítása 4. előadás

Kép mátrix. Feladat: Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés 2/35

Digitális jelfeldolgozás

INFORMATIKA javítókulcs 2016

Programozás alapjai 9. előadás. Wagner György Általános Informatikai Tanszék

Átírás:

Hatékonyság 1. előadás

Mi a hatékonyság Bevezetés A hatékonyság helye a programkészítés folyamatában: csak HELYES programra Erőforrásigény: a felhasználó és a fejlesztő szempontjából A hatékonyság mérése Ordó-függvénnyel: f(x)=o(g(x)) x Đ f K IR + : x Đ f f(x)/g(x) <K Hatékonyság 1 2019. 03. 26. 7:27 2/31

Bevezetés (folytatás) A feladat: Egy sorozat K-val ciklikusan balra léptetése Be: X H *, N,K IN Ki: X H * [X új értéke] Ef: N=Hossz(X) Uf: X =X K Def: : K-szoros ciklikus léptetés balra művelet, azaz: (X K) i =X (i-1+k mod N)+1 Hatékonyság 1 2019. 03. 26. 7:27 3/31

Bevezetés (folytatás) Első megoldás: Ciklus K-szor segéd:=x(1) X(1..N-1):=Másolás(X(2..N)) X(N):=segéd Második megoldás: segéd(1..k):=másolás(x(1..k)) X(1..N-K)):=Másolás(X(K+1..N)) X(N-K+1..N)):=Másolás(segéd(1..K)) Hatékonyság 1 2019. 03. 26. 7:27 4/31

Bevezetés (folytatás) Harmadik megoldás: Ötlete: K-val léptetés a láncban Pl.: N=5, K=2 és X=(1,2,3,4,5) (1, 2, 3, 4, 5) Léptetés(Szöveg,N,K): Hova:=1 Betű:=Szöveg(Hova) [első üres hely] Ciklus i=1-től N-1-ig Honnan:=Hova+K Ha Honnan>N akkor Honnan:=Honnan-N Szöveg(Hova):=Szöveg(Honnan) Hova:=Honnan [következő üres hely] Szöveg(Hova):=Betű Eljárás vége. Hatékonyság 1 2019. 03. 26. 7:27 5/31

Bevezetés (folytatás) Harmadik megoldás: N=6, K=2 és X=(1,2,3,4,5,6) (1, 2, 3, 4, 5, 6) Léptetés(Szöveg,N,K): Ciklus j=1-től lnko(n,k)-ig Hova:=j Betű:=Szöveg(Hova) Ciklus i=1-től N/lnko(N,K)-1-ig Honnan:=Hova+K Ha Honnan>N akkor Honnan:=Honnan-N Szöveg(Hova):=Szöveg(Honnan) Hova:=Honnan Szöveg(Hova):=Betű Eljárás vége. Hatékonyság 1 2019. 03. 26. 7:27 6/31

Összevetés: Melyik jobb? Bevezetés (folytatás) Idő Hely Bonyolultság 1. K*(N+1) 1+N * 2. N+K K+N * 3. N+lnko(N,K) 1+N *** Tehát: A hatékonyság dimenziói: Idő (memória/háttértár) műveletek (klaviatúra/képernyő???) Hely kód (memória/háttértár), adat (memória/háttértár) Bonyolultság algoritmus/kód (szerkezeti/logikai) adat (szerkezeti/logikai) Hatékonyság 1 2019. 03. 26. 7:27 7/31

Egy további példa: Melyik jobb? Bevezetés (folytatás) Hely: (N) Hason.: (N 2 ) Mozg. Min : (N), Mozg. Max : (N) A minimum kiválasztásos rendezés, vagy az egyszerű cserés rendezés? A hatékonyság mértékei : Minimum Maximum Átlagos Hely: (N) Hason.: (N 2 ) Mozg. Min : 0, Mozg. Max : (N 2 ) Hatékonyság 1 2019. 03. 26. 7:27 8/31

Adat és algoritmus: adat- hely- rekord mezők (szám;méret) sorozat=elemszám *elemméret Bevezetés (folytatás) Összetett szerkezet időcsökkenés/növekedés algoritmikus szekvencia ciklus=lépés-szám *1-végrehajtás= =admin.+ciklusmag Hatékonyság 1 2019. 03. 26. 7:27 9/31

I. rész: globális hatékonyság csökkentése Lehetőségek: Mivel programvégrehajtási idő ciklus(ok) végrehajtási idő és ciklus végrehajtási idő lépésszám * egyszeri végrehajtási idő, ezért csökkentendő 1.A ciklusok lépésszámai, ill. 2. A ciklusok egyszeri végrehajtási ideje ( ciklusmag végrehajtási idő!). Hatékonyság 1 2019. 03. 26. 7:27 10/31

1.1 A lépésszám csökkentése Alapelv: a megvizsgált elemek száma vagy abszolute vagy átlagosan kevesebb legyen! 1.1.1 Elemszám-csökkentés A sorozat futó eleme Feladat: N prím-e? Megoldások: a. príme:=eldöntés(2..n-1, N) b. príme:=eldöntés(2..n Div 2, N) c. príme:=eldöntés(2.. N, N) Osztható-e művelet Hisz N=n 1 *n 2 min(n 1,n 2 ) N Hatékonyság 1 2019. 03. 26. 7:27 11/31

Feladat: Városok távolságai: Táv. Mely kettő van legközelebb egymáshoz? A B 0 A Táv= 0 B. 0 Megoldások: a. (v,w):=minkiválasztás(táv(i,j) i,j=1..n,i j;<) b. (v,w):=minkiválasztás(táv(i,j) i=1..n,j=1..i-1,<) Hisz Táv(i,j)=Táv(j,i) Hatékonyság 1 2019. 03. 26. 7:27 12/31

1.1.2 A sorozat részekre osztása Feladat: Egy A elem kiválasztása az X rendezett sorozatból. Megoldások: a. melyik:=kiválasztás(x(1..n), =A) b. Ef: X direkt elérésű melyik:=logkiválasztás(x(1..n), =A) Hasonlítás-szám: (log 2 (N)) Hatékonyság 1 2019. 03. 26. 7:27 13/31

Feladat: Az f szekvenciális fájlban [1..N]-beli számok vannak, ismétlés nélkül, összevissza; legfeljebb N-1 darab. Adjunk meg egy elő nem forduló számot! Egy végigolvasás ideje Megoldások: a. nincs:=kiválasztás(i i=1..n, Eldöntés(f, =i)) ElOlv Min =H, ElOlv Max =N*H, ElOlv Átl =(1+N)*H/2 b. nincs:=(log)kiválasztás(i i i=1.. log 2 (N), Megszámolás(f, I i )=0) I 1 :=(1,N) (e i,(e i +v i ) Div 2), ha Db (e i,(ei+vi) Div 2) <Db Ii -Db (e i,(ei+vi) Div 2) I i+1 =(e i+1,v i+1 ):= ((e i +v i ) Div 2,v i ), különben ElOlv Min =ElOlv Max =ElOlv Átl log 2 (N) *H Hatékonyság 1 2019. 03. 26. 7:27 14/31

1.1.3 A sorozatok párhuzamos feldolgozása Feladat: rendezett sorozatok egyesítése. Megoldások: a. Z:=Egyesítés(X(1..N),Y(1..M)) [(Z,Db):=(Másolás(X(1..N)),N) +Kiválogatás(Y(1..M),Eldöntés(X,y i )] Hasonlítás-szám: N*M b. Z:=Összefuttatás(X(1..N),Y(1..M)) Hasonlítás-szám: N+M Hatékonyság 1 2019. 03. 26. 7:27 15/31

1.1.4 Gyakoriság-szerinti elrendezés Feladat: X H N, P i elemkiválasztási valószínűség; adott A elem kiválasztása. Megoldás: Kiválasztás(X,A): k:=1 Ciklus amíg X(k) A k:=k+1 Kiválasztás:=k Függvény vége. Átlagos futási idő P i =P esetén: T N i P i 1 N P N i 1 2 Átlagos futási idő általános esetben: T N i P N i i P N 1 1 i 1 i i 1 N i P i i N 1 N 1 2 Hatékonyság 1 2019. 03. 26. 7:27 16/31

1.1.5 Elemek csoportos feldolgozása Feladat: Kutatófúrások adatait tartalmazza a KF tömb (TElem=Rekord(sorsz,mélység:Egész, mennyiség:tdússág); az azonos fúrólyuktól származó adatok egy csoportban vannak). Egy F fúrólyuk adatait kell kiválogatni. Megoldások: a. Z:=Kiválogatás(KF(1..N), =F) b. a:=kiválasztás(kf(1..n), =F) Z:=Másolás&Keresés(KF(a..N), F) Hatékonyság 1 2019. 03. 26. 7:27 17/31

1.1.6 Ciklus indexszé transzformálása Feladat: Ikerprímek száma, N-ig (N>2). Megoldások: a. IPDb:=1 [=(2,3)] + Megszámolás(3..N-2, Prím( ) Prím( +2)) b. Konstans Prímek:TPrímek(N)(...) Típus TPrímek(M)=Tömb(1..M:Egész) IPDb:=1 [=(2,3)] + Keresés Megszámolás(2..j: Keresési határfeltétel j-re. Prímek(j+1)>N, Prímek( +1)-Prímek( )=2) Megszámolás tulajdonsága Hatékonyság 1 2019. 03. 26. 7:27 18/31

1.2 Az egyszeri végrehajtás idejének csökkentése 1.2.1 Elágazás transzformálása Feladat: Szimuláljunk N kockadobást Megoldások: a. Db(1..6):=Másolás(0 i=1..6) Ciklus N-szer x:=véletlen(6) Elágazás x=1 esetén Db(1):=Db(1)+1 x=6 esetén Db(6):=Db(6)+1 Elágazás vége b. Db(1..6):=Másolás(0 i=1..6) Ciklus N-szer x:=véletlen(6) Db(x):=Db(x)+1 Hatékonyság 1 2019. 03. 26. 7:27 19/31

Kód Jel 0 Nul 1 SQH 48 0 49 1 57 9 60 < 65 A 66 B 90 Z 91 97 a 98 b Feladat: Számoljuk meg egy S szövegben hány nagybetű, kisbetű, számjegy, illetve egyéb jel van! Típus TMi=(NB,KB,SzJ,EJ) Változó Db:Tömb(TMi:Egész) a. Db(NB..EJ):=Másolás(0 i=1..4) Ciklus i=1-től Hossz(s)-ig x:=sorszám(s(i)) [Kódja] Elágazás x<48 esetén Db(EJ):=Db(EJ)+1 x<58 esetén Db(SzJ):=Db(SzJ)+1 x<65 esetén Db(EJ):=Db(EJ)+1 x<90 esetén Db(NB):=Db(NB)+1 Elágazás vége Hatékonyság 1 2019. 03. 26. 7:27 20/31

Kód Jel 0 Nul 1 SQH 48 0 49 1 57 9 60 < 65 A 66 B 90 Z 91 97 a 98 b Feladat: Számoljuk meg egy S szövegben hány nagybetű, kisbetű, számjegy, illetve egyéb jel van! Megoldások: Típus TMi=(NB,KB,SzJ,EJ) Változó Db:Tömb(TMi:Egész) b. Konstans Ind:Tömb(Karakter:TMi)= (EJ,EJ,EJ,,SzJ,,NB,,EJ,,KB, ) Db(NB..EJ):=Másolás(0 i=1..4) Ciklus i=1-től Hossz(s)-ig x:=s(i) Db(Ind(x)):=Db(Ind(x))+1 Hatékonyság 1 2019. 03. 26. 7:27 21/31

1.2.2 A kivételes eset kiküszöbölése Feladat: Lineáris keresés tétele Megoldások: a. (Van,Melyik):=LinKer(X,T) b. Változó X:Tömb(1..N+1:TH) i:=1; X(N+1):=spec [T(spec)] Ciklus amíg nem T(X(i)) i:=i+1 Van:=i N Ha Van akkor Melyik:=i Hatékonyság 1 2019. 03. 26. 7:27 22/31

Feladat: Számítsuk ki a következő sorozat-transzformációt. Megoldások: Változó A,B:Tömb(1..N:TH) a. Ciklus i=1-től N-ig Ha i=1 vagy i=n akkor B(i):=A(i) különben B(i):=(A(i-1)+2*A(i)+A(i+1))/4 Elágazás vége A i, ha i=1 i=n B i := (A i-1 +2A i +A i+1 )/4, ha i [2..N] b. B(1):=A(1); B(N):=A(N) Ciklus i=2-től N-1-ig B(i):=(A(i-1)+2*A(i)+A(i+1))/4 Hatékonyság 1 2019. 03. 26. 7:27 23/31

1.2.3 Ciklusok szétválasztása Alapelv: több kivételes esetre, inkább részsorozatra bontható a feldolgozandó sorozat. Feladat: S=?, ha N>4, 2 N S:= Megoldások: a. S:=0 Ciklus i=1-től N-ig Elágazás i=1 vagy i=n esetén S:=S+A(i) 2 N esetén S:=S+4*A(i) egyéb esetben S:=S+2*A(i) Elágazás vége A 1 +4A 2 +2A 3 + +4A N-1 +A N N Hatékonyság 1 2019. 03. 26. 7:27 24/31

1.2.3 Ciklusok szétválasztása Alapelv: több kivételes esetre, inkább részsorozatra bontható a feldolgozandó sorozat. Feladat: S=?, ha N>4, 2 N S:= N Megoldások: b. S:=A(1)+A(N) Ciklus i=2-től N-1-ig 2-esével S:=S+4*A(i) Ciklus i=3-tól N-2-ig 2-esével S:=S+2*A(i) A 1 +4A 2 +2A 3 + +4A N-1 +A N Hatékonyság 1 2019. 03. 26. 7:27 25/31

1.2.4 Feltételek elhagyása Feladat: Egy szimulációs részprobléma... Véletlenszerű állapotváltozás (P( 0 0)=P)... Megoldások: a. Ciklus i=1-től N-ig Ha A(i) 0 és Véletlen<P akkor A(i):=0 b. Ciklus i=1-től N-ig Ha Véletlen<P akkor A(i):=0 [0,1]-egyenletes eloszlású véletlenszám Hatékonyság 1 2019. 03. 26. 7:27 26/31

1.2.5 Adatok előfeldolgozása Feladat: Adott M mátrix sorait rendezzük át sorösszeg szerint növekvő sorrendbe! Rendezés(M(i,1..N) i=1..n, < Megoldások: Összegzés(M(.,1..N)) ) < Összegzés(M(.,1..N)) sorösszeg-szerinti rendezés Rendezés minimumkiválasztással(n,a): Ciklus i=1-től N-1-ig L:=i Ciklus j=i+1-től N-ig S1:= az L. sor sorösszege S2:= a j. sor sorösszege Ha S1>S2 akkor L:=j Csere(i. sor, L. sor) Eljárás vége. Hatékonyság 1 2019. 03. 26. 7:27 27/31

1.2.5 Adatok előfeldolgozása Feladat: Adott M mátrix sorait rendezzük át sorösszeg szerint növekvő sorrendbe! Rendezés minimumkiválasztással(n,a): Ciklus i=1-től N-ig S(i):= az i. sor sorösszege Ciklus i=1-től N-1-ig L:=i Ciklus j=i+1-től N-ig Ha S(L)>S(j) akkor L:=j Csere(i. sor, L. sor); Csere(S(i),S(L)) Eljárás vége. Hatékonyság 1 2019. 03. 26. 7:27 28/31

1.2.6 Az adatmozgatások minimalizálása Feladat: Adott M mátrix sorait rendezzük át sorösszeg szerint növekvő sorrendbe! Megoldások: Rendezés(M(i,1..N) i=1..n,< Összegzés(M(,1..N)) ) < Összegzés( ) : sorösszeg-szerinti rendezési reláció Rendezés minimumkiválasztással(n,a): Ciklus i=1-től N-1-ig L:=i Ciklus j=i+1-től N-ig S1:= az L. sor sorösszege S2:= a j. sor sorösszege Ha S1>S2 akkor L:=j Csere(i. sor, L. sor) Eljárás vége. Hatékonyság 1 2019. 03. 26. 7:27 29/31

1.2.6 Az adatmozgatások minimalizálása Feladat: Adott M mátrix sorait rendezzük át sorösszeg szerint növekvő sorrendbe! Rendezés minimumkiválasztással(n,a,h): Ciklus i=1-től N-ig S(i):= az i. sor sorösszege; H(i):=i Ciklus i=1-től N-1-ig L:=i Ciklus j=i+1-től N-ig Ha S(H(L))>S(H(j)) akkor L:=j Csere(H(i),H(L)) Eljárás vége. Hatékonyság 1 2019. 03. 26. 7:27 30/31

Hatékonyság 1. előadás vége