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

Slides:



Advertisements
Hasonló előadás
T ESZTELÉS. C ÉLJA Minél több hibát találjunk meg! Ahhoz, hogy az összes hibát fölfedezzük, kézenfekvőnek tűnik a programot az összes lehetséges bemenő.
Advertisements

Programozási feladatok
Definíciók: Algoritmus: bármely véges sok lépéssel leírható tevékenység. Olyan pontos előírás, amely megmondja, hogy egy adott típushoz tartozó feladat.
Hatékonyságvizsgálat, dokumentálás
Összetett adattípusok 8/b tétel
Matematika és Tánc Felkészítő tanár: Komáromi Annamária
Programozási alapismeretek
Programozási alapismeretek 5. előadás. ELTE Szlávi - Zsakó: Programozási alapismeretek 5.2/  Programozási tételek.
Budapesti Műszaki és Gazdaságtudományi Egyetem Elektronikus Eszközök Tanszéke A programozás alapjai 1. (VIEEA100) 9. előadás.
INFOÉRA Dinamikus programozás (Horváth Gyula és Szlávi Péter előadásai felhasználásával) Juhász István-Zsakó László: Informatikai képzések.
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
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 12. előadás. ELTE  Tapasztalatok a rendezésről Tapasztalatok a rendezésről  Keresés rendezett sorozatban Keresés rendezett.
Bevezetés a Java programozásba
5. előadás (2005. március 22.) Függvények definíciója, deklarációja, hívása Enumerációs adattípus 1.
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:
Készítette: Pető László
1 Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat 1. Bevezetés Miskolc, 2004.
LDinamikus tömbök, kétdimenziós tömbök Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 21./0. lVektorok létrehozása futásidőben, dinamikusan.
A digitális számítás elmélete
Reprezentációs függvény. Adva egy adattípus absztrakt és konkrét specifikációja: d a = ( A, F, E a ); d c = ( C, G, E c ); A = {A 0,..., A n };C = {C 0,...,
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
ELTE Adatokkal kapcsolatos fogalmak  Konstans: az az adat, amely a műveletvégzés során nem változtat(hat)ja meg értékét, mindvégig ugyanabban az „állapotban”
Összetett adattípusok
Programozási nyelvek.
Algoritmus szerkezetek
Nevezetes algoritmusok
Algoritmusok.
Programozási tételek.
Programozás I. Típus algoritmusok
Algoritmizálás, adatmodellezés tanítása 8. előadás.
Algoritmizálás, adatmodellezés tanítása 2. előadás.
ProgramozásProgramozás célja hosszabb számítások elvégzése ill. kiíratása akkor érdemes programot írni, ha sok számolni való van illetve ha ugyanazt az.
Feladatok (értékadás)
Török Katalin és Marosi Nóra 11/c. Pascal: Az es években megjelent magas szintű programozási nyelv, közel áll az emberi gondolkodáshoz. Nevét.
Többdimenziós valószínűségi eloszlások
Összeállította: Sashalmi Tibor
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.
Adatszerkezetek és algoritmusok 2008/ Algoritmus Az algoritmus szó eredete a középkori arab matematikáig nyúlik vissza, egy a i.sz. IX. században.
Informatikai gyakorlatok 11. évfolyam
Algoritmusok hatékonysága – lottószelvények
TÁMOP /1-2F Informatikai gyakorlatok 11. évfolyam Alapvető programozási tételek megvalósítása Czigléczky Gábor 2009.
A programozás módszertana. Monolitikus programozás Egyszerű feladatok - egyszerű programok Egy program – egy programozó Nincs belső struktúra, lineáris.
Programozás alapjai Készítette: Csiszár Nóra Anita
Informatikai gyakorlatok 11. évfolyam
Programozási nyelvek típusossága.
Nevezetes algoritmusok
Tömbök és programozási tételek
Programozási tételek Mik is ezek?
Halmazműveletek.
Eljaras linearis_kereses(adatok[],n)
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
A CLIPS keretrendszer
Bevezetés a programozásba Algoritmikus gondolkodás
Informatikai gyakorlatok 11. évfolyam
Hatékonyság 2. Szlávi Péter
Programozási tételek.
Algoritmus készítés.
Programozási tételek.
INFOÉRA 2006 Szövegfeldolgozás III.
Szövegfeldolgozás II. INFOÉRA perc kell még hozzá
Előadás másolata:

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

2. A helyfoglalás csökkentése Alapelv: a tárolt elemek száma vagy egy elemének mérete kevesebb legyen! Helyfoglalás=memória (kód+adat) + háttértár (kód+adat) 2.1 Sorozatok hosszcsökkentése 2.1.1 Sorozat kiküszöbölése Feladat: Az N. K-Fibonacci szám előállítása. Megoldások: a. Változó KF:Tömb(1..N:Egész) KF(1..N):=…az első N előállítása… NKF:=KF(N) Zsakó László: Hatékonyság 2 2019.07.19. 5:29

2. A helyfoglalás csökkentése b. Változó KF:SorTömb(K,Egész)[K-elemű!] KF:=…az első K előállítása… Ciklus i=K+1-től N-ig NKF:=i=1..KKF(i) nemKell:=Sorból(KF) Sorba(KF,NKF) Ciklus vége Zsakó László: Hatékonyság 2 2019.07.19. 5:29

2. A helyfoglalás csökkentése Feladat: Egy nyúlpopuláció adatait a korcsoporteloszlásával tá- roljuk (X tömb). Ismert: az E éves nyúlnak átlagosan S(E) utódja születik; és H(E) valószínűséggel pusztul el. Adjuk meg az éves korcsoportváltozást! Változó S,H:Tömb(1..N:Valós) X:Tömb(1..N:Egész) a. Y:Tömb(1..N:Egész) S:Valós [az összegzéshez] Y(1):=Összegzés(X(i)*S(i) i=1..N) Y(2..N):=Másolás(X(i)*(1-H(i)) i=1..N-1) X:=Y Zsakó László: Hatékonyság 2 2019.07.19. 5:29

2. A helyfoglalás csökkentése b. Változó Y:Tömb(1..N:Egész) Y(1):=X(N)*S(N) Ciklus i=1-től N-1-ig Y(i+1):=X(i)*(1-H(i)); Y(1):=Y(1)+X(i)*S(i) Ciklus vége X:=Y c. Változó Y:Valós Y:=X(N)*S(N) Ciklus i=N-1-től 1-ig -1-esével X(i+1):=X(i)*(1-H(i)); Y:=Y+X(i)*S(i) Ciklus vége X(1):=Y Zsakó László: Hatékonyság 2 2019.07.19. 5:29

2. A helyfoglalás csökkentése 2.1.2 Ciklusok összevonása Feladat: Adjuk meg az M mátrix maximális sorösszegű sorát! Megoldások: a. Változó s:Tömb(1..N:Valós) s(1..N):=Másolás(Összegzés(M(i,1..N)) i=1..N) maxi:=MaxKiválasztás(s,) b. Változó s,sm:Valós sm:=Összegzés(M(1,1..N)); ma:=1 Ciklus i=2-től N-i s:=Összegzés(M(i,1..N)) Ha s>sm akkor sm:=s; ma:=i Ciklus vége Zsakó László: Hatékonyság 2 2019.07.19. 5:29

2. A helyfoglalás csökkentése 2.1.3 Hézagosan kitöltött struktúrák Feladat: Egy N-atomos szénhidrogén molekulát vizsgálunk. Adjuk meg, mely szénatomok melyekkel vannak kötésben! Megoldások: Változó Db:Egész köt:Tömb(1..MaxN,1..2:Egész) a. Változó m:Tömb(1..N,1..N:Logikai) (Db,köt):=Kiválogatás((i,j) i=1..N-1,j=i+1..N, m(·)=Igaz) Változó m:Tömb(1..N*(N+1) Div 2:Logikai) Háromszögmátrix! Zsakó László: Hatékonyság 2 2019.07.19. 5:29

2. A helyfoglalás csökkentése c. Változó m:Tömb(1..N:Tömb(1..4)) [melyik C-atom melyekkel van kötésben] mivel a C-atom kötésszáma4, ezért legfeljebb 4-elemű dinamikus tömbbel dolgozhatunk. (Db,köt):=Kiválogatás((i,m(i,j)) ahol j=1..Hossz(m(i)),i=1..N-1, ElemÉrték(m(i))>i) Az ElemÉrték(m(i),j) az m(i) lista j. elemét szimbolizálja. Szimmetria miatt Zsakó László: Hatékonyság 2 2019.07.19. 5:29

2. A helyfoglalás csökkentése d. Változó m:Tömb(1..K,1..2:1..N) [kötés: mely párok között] Db:=N-1 köt:=Másolás(m(i) i=1..K) Lásd még a tömb-ábrázolás témakörben: „Ritkamátrixok”! K: egy N db C-atomos molekulában a kötések száma N-1 és 4*N között lehet. Zsakó László: Hatékonyság 2 2019.07.19. 5:29

     C-atomos példa – a 2.1.3-hoz      C1 C2 C5 C4 C3 b. Kötés-háromszögmátrix c. Kötés-lista d. Atompár-vektor . h I 5 1 2 3 4 a. Kötés-mátrix . h I i 1:5 2:5 3:5 4:5 5:1,2,3,4 1 5 2 3 4 (1,5) (2,5) (3,5) (4,5) Zsakó László: Hatékonyság 2 2019.07.19. 5:29

2. A helyfoglalás csökkentése Feladat: Képek raszteres ábrázolása… Megoldások: a. Típus TKép=Tömb(1..MaxX,1..MaxY:TSzín) b. Típus TKép=Tömb(1..MaxY:Sorozat(TPászta)) TPászta=Rekord(szín:TSzín, hossz:Egész) [k:TKép  i[1..MaxY]:MaxX=k(i)-beli pászták összege] Zsakó László: Hatékonyság 2 2019.07.19. 5:29

2. A helyfoglalás csökkentése 2.1.4 Speciális szerkezetű sorozatok Feladat: … l. a „tömb-ábrázolás” témakörben: „speciális szerkezetű mátrixok”… (Diagonális, háromszög, tridiagonális, Hänkel-, Toeplitz- stb.-mátrixok.) Feladat: Leslie-mátrix az alábbi probléma szokásos leírását jelenti. Adott egy pl. egérpopuláció születési és túlélési rátái korcsoportonként. Határozzuk meg a következő év korcsoporteloszlását az aktuális alapján. Megoldás: Típus TKorcsop=Tömb(1..N:Valós) TLeslie=Tömb(1..N,1..N:Valós) Zsakó László: Hatékonyság 2 2019.07.19. 5:29

2. A helyfoglalás csökkentése Változó E:Tkorcsop [kezdő korcsoporteloszlás] a. Változó LM:Tleslie, U:TKorcsop U:=LM*E [mátrix-vektor szorzás] E:=U b. Típus TLeslie=Rekord(s:Tömb(1..N:Valós), t:Tömb(2..N:Valós)) Változó LM:TLeslie U:TKorcsop S:Valós [összegzéshez] U(1):=Összegzés(LM.s(i)*E(i) i=1..N) U(2..N):=Másolás(LM.t(i)*E(i-1) i=2..N) E:=U Zsakó László: Hatékonyság 2 2019.07.19. 5:29

2. A helyfoglalás csökkentése c. Változó LM:TLeslie E1:Valós E1:=LM.s(1)*E(1) Ciklus i=N-től 2-ig -1-esével E1:=E1+LM.s(i)*E(i) E(i):=LM.t(i)*E(i-1) Ciklus vége E(1):=E1 Zsakó László: Hatékonyság 2 2019.07.19. 5:29

2. A helyfoglalás csökkentése 2.1.5 Adatterület megosztása Feladat: … l. a „sorozatok ábrázolása” témakörben: láncolt ábrázolás, maximált összelemszámú dupla verem… Két háromszögmátrix egy mátrixban. Zsakó László: Hatékonyság 2 2019.07.19. 5:29

2. A helyfoglalás csökkentése 2.2 A sorozat egy elemének méretcsökkentése Alapelv: alkalmasan szűk reprezentáció… 2.2.1 Redundáns mezők elhagyása Feladat: Egy személyi adatnyilvántartásban a következő adatokat tároljuk: név, személyiszám, születési idő (év, hó, nap). Listázzuk ki a nyilvántartást! Megoldások: a. Típus TSzemély=Rekord(név:Szöveg(30) szsz:Szöveg(11) szül:TDátum) TDátum=Rekord(év:Egész hó:Szöveg(10) nap:Egész) Zsakó László: Hatékonyság 2 2019.07.19. 5:29

2. A helyfoglalás csökkentése 2.2.1 Redundáns mezők elhagyása Feladat: Egy személyi adatnyilvántartásban a következő adatokat tároljuk: név, személyiszám, születési idő (év, hó, nap). Listázzuk ki a nyilvántartást! Megoldások: a. Típus TSzemély=Rekord(név:Szöveg(30) szsz:Szöveg(11) szül:TDátum) TDátum=Rekord(év:Egész,hó:Szöveg(10),nap:Egész) … Ciklus amíg nem Vége?(f) Olvas(f,szem); Ki: szem Ciklus vége … Zsakó László: Hatékonyság 2 2019.07.19. 5:29

2. A helyfoglalás csökkentése b. Típus TSzemély=Rekord(név:Szöveg(30) szsz:Szöveg(11)) TDátum=Rekord(év:Egész,hó:Szöveg(10),nap:Egész) Függvény szül(szsz:Szöveg(11)):TDátum Konstans HónapNév:Tömb(1..12:Szöveg(10)= (’Január’,’Február’,…)) szül:=TDátum(Egész(szsz[2..3])), HónapNév(Egész(szsz[4..5])), Egész(szsz[6..7])) Függvény vége. … Ciklus amíg nem Vége?(f) Olvas(f,szem) Ki: szem.név, szem.szsz, szül(szem.szsz) Ciklus vége … Zsakó László: Hatékonyság 2 2019.07.19. 5:29

2. A helyfoglalás csökkentése 2.2.2 Az adatelemek kódolása Feladat: Egy személyi adatnyilvántartásban a következő adatokat tároljuk: név, születési idő (év, hó, nap). Listázzuk ki a nyilvántartást! Megoldások: a. Típus TSzemély=Rekord(név:Szöveg(30),szül:TDátum) TDátum=Rekord(év:Egész,hó:Szöveg(10),nap:Egész) … Ciklus amíg nem Vége?(f) Olvas(f,szem) Ki: szem Ciklus vége … Zsakó László: Hatékonyság 2 2019.07.19. 5:29

2. A helyfoglalás csökkentése b. Típus TSzemély=Rekord(név:Szöveg(30) szül:TDátum) TDátum=Rekord(év,hó,nap:Egész) Konstans HónapNév:Tömb(1..12:Szöveg(10) (’Január’,’Február’,…)) … Ciklus amíg nem Vége?(f) Olvas(f,szem) Ki: szem.név, szem.szül.év, HónapNév(szem.szül.hó), szem.szül.nap Ciklus vége … Zsakó László: Hatékonyság 2 2019.07.19. 5:29

2. A helyfoglalás csökkentése 2.3 A programkód méretének csökkentése Alapelv: a „józan” programépítése elvek betartása. Azaz: A feladat részfeladatainak Eljárásokra / Függvények /…-re bontása; ezeknek megfelelő nyelvi implementálás. Ciklusok összevonása – általában nem sok tényleges előnnyel jár, ugyanis, ha a ciklusmagok mérete előnyössé tenné, akkor úgyis eljárásban fogalmazódnának meg. Zsakó László: Hatékonyság 2 2019.07.19. 5:29

2. A helyfoglalás csökkentése Programkód adattá transzformálása – a sok, „konstanson” alapuló tevékenységlánc (pl. tájékoztató, menü) konstans adatokká és rajtuk operáló kevésszámú műveletté „tipizálása”. Feladat: Többlapos tájékoztató kiírása. Megoldások: a. Tájékoztató: Ki(’Ez a program arra jó,’); … {és még sok száz hasonló sor, lapozást szervező utasításokkal megtűzdelve} Eljárás vége. Zsakó László: Hatékonyság 2 2019.07.19. 5:29

2. A helyfoglalás csökkentése b. Tájékoztató: Konstans BekDb=???; STaj:Tömb(1..BekDb,szöveg)= (’Ez a program arra jó,…’, {és még sok tucat hasonló konstans bekezdés} …); sorDb:=0; {kiírt sorok száma} Ciklus i=1-től BekDb-ig Ki: Bekezdés(STaj[i]) Ciklus vége Eljárás vége. További előnyök: Bonyolultság csökkenés Biztonságosság Könnyű javíthatóság (pl. képsorméret-, szövegmó-dosulás…) Zsakó László: Hatékonyság 2 2019.07.19. 5:29

3. A bonyolultság csökkentése 3. A bonyolultság csökkentése Kérdés: Mi a bonyolultság? Szerkezeti bonyolultság címen kétféle dologról beszélhetünk: az algoritmus bonyolultságáról, valamint az adatszerkezet bonyolultságáról. Az algoritmus bonyolultsága újabb két tényezőből áll össze: a szerkezet bonyolultságából és a kifejezés bonyolultságából. Zsakó László: Hatékonyság 2 2019.07.19. 5:29

3. A bonyolultság csökkentése Definíció: Egy programgráf ciklikus bonyolultsága az élei számából kivonva a csúcsai számát. Példa: algoritmus ciklikus bonyolultsága Ha p akkor f 2 Ha p és q akkor f 2 Ha p akkor Ha q akkor f 3 Zsakó László: Hatékonyság 2 2019.07.19. 5:29

3. A bonyolultság csökkentése Definíció: Egy programgráf módosított ciklikus bonyolult- sága egy számpár: a ciklikus bonyolultsági szám, valamint a cik- likus bonyolultág megnövelve a feltételekben szereplő diszjunk- ciók és konjunkciók (vagy-műveletek és és-műveletek) számával. Példa: algoritmus ciklikus bonyolultsága Ha p akkor f 2,2 Ha p és q akkor f 2,3 Ha p akkor Ha q akkor f 3,3 De problémás: Ha p és q akkor f 2,3 r:=p és q; Ha r akkor f 2,2 Zsakó László: Hatékonyság 2 2019.07.19. 5:29

3. A bonyolultság csökkentése Definíció: Egy programgráf mélységi bonyolultságát a következőképpen számíthatjuk ki: Vegyük a programgráf elemi struktúráit (elágazások, ciklusok), rendeljük hozzájuk azt a kitevőjű kettőhatványt, ahány magasabbrendű struktúra belsejében vannak, majd adjuk össze ezeket a számokat. Definíció: Egy programgráf absztrakciós bonyolultságát a következőképpen számíthatjuk ki: Vegyük az eljárások számát + az egyes eljárások mélységi bonyolultságát! Zsakó László: Hatékonyság 2 2019.07.19. 5:29

3. A bonyolultság csökkentése A kifejezés bonyolultságát a programfüggvény, mint kifejezés bonyolultsága, illetve a program szövegében szereplő kifejezések bonyolultsága adhatja meg. A kifejezések bonyolultságát legegyszerűbb esetben a bennük szereplő műveletek számával adhatjuk meg: • az aritmetikai és logikai műveletek, • a függvényhívások, • az értékmozgatások (értékadás, beolvasás, kiírás) és • az eljáráshívások. Zsakó László: Hatékonyság 2 2019.07.19. 5:29

3. A bonyolultság csökkentése 4.1.1. A kivételes eset kiküszöbölése Feladat: Egy szövegben határozzuk meg a szavak számát! Szavak_száma(Mondat,Sdb): Sdb:=0; N:=Hossz(Mondat) Ciklus i=1-től N-1-ig Ha Mondat(i)=" " és Mondat(i+1)≠" " vagy i=1 és Mondat(i)≠" " akkor Sdb:=Sdb+1 Ciklus vége Eljárás vége. Kivételes eset: az i=1 csak egyszer lehet igaz, a ciklus első lépésében. Zsakó László: Hatékonyság 2 2019.07.19. 5:29

3. A bonyolultság csökkentése Szavak_száma(Mondat,Sdb): Mondat:=elejére(" ",Mondat) Sdb:=0; N:=hossz(Mondat) Ciklus i=1-től N-1-ig Ha Mondat(i)=" " és Mondat(i+1)≠" „ akkor Sdb:=Sdb+1 Ciklus vége Eljárás vége. A módosított ciklikus bonyolultság csökken! Zsakó László: Hatékonyság 2 2019.07.19. 5:29

3. A bonyolultság csökkentése 4.1.2. Funkciók elhagyása Feladat: Rendezett sorozatok összefésülése! Összefuttatás(N,A,M,B,C): A(N+1):=+∞; B(M+1):=+∞; i:=1; j:=1; k:=0 Ciklus amíg i<N+1 vagy j<M+1 k:=k+1 Elágazás A(i)<B(j) esetén C(k):=A(i); i:=i+1 A(i)=B(j) esetén C(k):=A(i); i:=i+1; j:=j+1 A(i)>B(j) esetén C(k):=B(j); j:=j+1 Elágazás vége Ciklus vége Eljárás vége. Zsakó László: Hatékonyság 2 2019.07.19. 5:29

3. A bonyolultság csökkentése Ha nincs A- és B-beli közötti egyenlőség, akkor az elágazás egyszerűsíthető! Összefuttatás(N,A,M,B,C): A(N+1):=+∞; B(M+1):=+∞; i:=1; j:=1; k:=0 Ciklus amíg i<N+1 vagy j<M+1 k:=k+1 Ha A(i)<B(j) akkor C(k):=A(i); i:=i+1 különben C(k):=B(j); j:=j+1 Ciklus vége Eljárás vége. Zsakó László: Hatékonyság 2 2019.07.19. 5:29

3. A bonyolultság csökkentése 4.1.3. Funkciók szétválasztása A programozási tételek összeépítését sokszor használjuk futási idő, illetve helyfoglalás csökkentésére. Ez azonban azzal jár, hogy a bonyolultság növekszik, mint pl. a maximumkiválogatásban. Maximumok(N,A,DB,S): MX:=A(1); DB:=1; S(DB):=1 Ciklus i=2-től N-ig Ha A(i)>MX akkor DB:=0; MX:=A(i) Ha A(i)=MX akkor DB:=DB+1; S(DB):=i Ciklus vége Eljárás vége. Zsakó László: Hatékonyság 2 2019.07.19. 5:29

3. A bonyolultság csökkentése Ha nem vonjuk össze a maximumkiválasztás és a kiválogatás tételeket, akkor egyszerűbb megoldást kapunk: Maximumok(N,A,DB,S): MX:=A(1); DB:=0 Ciklus i=2-től N-ig Ha A(i)>MX akkor MX:=A(i) Ciklus vége Ciklus i=1-től N-ig Ha A(i)=MX akkor DB:=DB+1; S(DB):=i Eljárás vége. Itt a logikai bonyolultság úgy csökken, hogy a szerkezeti bonyolultság nő. Zsakó László: Hatékonyság 2 2019.07.19. 5:29

3. A bonyolultság csökkentése 4.1.4. Fiktív kezdőértékadás Algoritmusok egy részének bonyolultságát az okozza, hogy valamely változók kezdőértékét az algoritmus belsejében határozzuk meg. Feltételes mamimumkiválasztásnál az első maximumot kell megkeresni. Keresésnél figyelni kell arra, nehogy a sorozat végén túlmenjünk. Zsakó László: Hatékonyság 2 2019.07.19. 5:29

3. A bonyolultság csökkentése 4.2. Az adatszerkezet bonyolultsága Az adatszerkezet, az adattípusok bonyolultságát is kétféle szempont szerint vizsgálhatjuk. Egyrészt nézhetjük a struktúra bonyolultságát, másrészt pedig a típus műveleteinek bonyolultságát. Egy adattípus strukturális bonyolultsága a típus definiálásában szereplő típuskonstrukciós eszközök száma. Zsakó László: Hatékonyság 2 2019.07.19. 5:29

3. A bonyolultság csökkentése Egy adattípus mélységi bonyolultsága a következőképpen számítható ki: Vegyük az adattípus definiáláshoz felhasznált típuskonstrukciós eszközöket, rendeljük hozzájuk azt a kitevőjű kettőhatványt, ahány magasabbrendű struktúra belsejében vannak, majd adjuk össze ezeket a számokat. Egy adattípus absztrakciós bonyolultsága a következőképpen számítható ki: Vegyük a résztípusai számát + az egyes résztípusok mélységi bonyolultságát! Egy adattípus hivatkozási bonyolultsága a leghosszabb hivatkozási mélység, melyet a felhasználónak használnia kell. Egy típus műveleti bonyolultsága a típus független, egymással ki nem fejezhető műveletei száma. Zsakó László: Hatékonyság 2 2019.07.19. 5:29

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