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

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.

Hasonló előadás


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

1 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 Technikai közreműködő: Imre Mihály, műszaki informatikus hallgató

2 2 Bevezetés Viszonylag állandó tudomány terület, mert nem kötődik szorosan egyetlen konkrét fizikai rendszerhez vagy konfigurációhoz sem. A számítógép belső állapotát leíró rész: az adatkomponens. A műveleteket leíró rész: a kód komponens. Az adatkomponensre vonatkozó utasítások a deklarációk: milyen adatelemek vannak és azok milyen típusúak. Niklaus Wirth: Adatstruktúrák + algoritmusok = programok Algoritmus: Mohamed Al-Khwarizmi (IX.sz.)

3 3 Algoritmus fogalma, jellemzői Algoritmus: Egy egyértelmű kiindulási és vég feltétellel megadott feladat megoldási részlépéseinek leírása. Jellemzői: absztrakciós szint (igazodjon a felhasználóhoz), helyesség (sokszor nehezen bizonyítható minden kiinduló állapotra), végesség (az algoritmus maga és a végrehajtás is), hatékonyság (kevesebb lépéssel, kevesebb erőforrással oldja meg a feladatot), egyértelműség (mindig eldönthető a következő lépés.

4 4 Egy klasszikus példa LegNagyobb Közös Osztó meghatározása: adott két pozitív egész szám: m, n 1. r = min(m,n) 2. Ha r maradék nélkül osztja m-et és n-et, akkor r a LNKO, vége 3. r = r-1, vissza 2. Pl. m=1215, n=787 esetén a lépések száma: 787 lehet és kell finomítani (RSA titkosítás)

5 5 Euclides: LNKO Egy hatékonyabb megoldás, Euclides (ie. 400-300) 1. r = m mod n 2. ha r = 0, akkor n a LNKO, vége 3. m = n, n = r, ugrás 1. Az előző példa megoldásához mindössze 8 lépés szükséges.

6 6 Leírási formalizmusok 1. Beszélt nyelv (előző példa) 2. Folyamatábra szimbólumok: művelet döntés adat I/O start/stop nyíl Ezen elemekből 3 alapvető struktúra építhető fel: szekvencia, elágazás, ciklus.

7 7 Metanyelv 1. 3. Metanyelv, elemei Elágazás: IF (feltétel) igaz ág ELSE hamis ág END Szekvencia: művelet1 művelet2 Értékadás: változó=kifejezés Ciklus: WHILE (feltétel) ciklusmag END

8 8 Metanyelv 2. Függvény deklaráció: FUNCTION függvénynév(formális paraméter lista) utasítások RETURN visszatérő érték END Függvény hívás: függvénynév(aktuális paraméterlista) Operátorok: + - * / = stb.

9 9 LNKO metanyelven A LNKO algoritmus metanyelven: FUNCTION euclid() INPUT (m, n) r=m%n WHILE (r>0) m=n n=r r=m%n END OUTPUT (n) END

10 10 Algoritmusok hatékonysága 1. 1. Futási idő mérése: megvalósítás ugyanazzal a fejlesztő eszközzel, ugyanazon a gépen futtat. Az eredmény függ: géptípus, konfiguráció, leterheltség, más futó programok, stb. Nem a futási idő a legalkalmasabb. 2. Gépfüggtelenséget kell biztosítani. A műveletek darabszámát mérjük: a műveletek különböző súlyúak, csak a karakterisztikus műveleteket, a feladat nagysága fontos tényező, ezért ez egy függvény (monoton): a laposabb a jobb

11 11 Algoritmusok hatékonysága 2. A kiindulási adatoktól is függhet a hatékonyság: –best case (legkedvezőbb eset) –worst case (legkedvezőtlenebb eset) –average case (átlagos eset) Pl. rendezés a szomszédos elemek permutációjával: csökkenő sorrendbe: 8,7,6,5,4,3,2,1 (best) növekvő sorrendbe: 8,7,6,5,4,3,2,1 (worst) növekvő sorrendbe: 2,5,3,1,8,4,7,6 (average)

12 12 Algoritmusok hatékonysága 3. FUNCTION keres(x,y,N) t=0; i=1; WHILE (t=0 AND i<=N) IF (x=y[i]) t=1 END i=i+1 END RETURN t END Az inicializálás költsége: h, a ciklusmagé: r

13 13 Algoritmusok hatékonysága 4. best case: h+r worst case: h+r*N average case: h + p*r*(N+1)/2 + (1-p)*r*N ( p a valószínűsége, hogy a keresett elem benne van) w a b N h+r 1

14 14 Algoritmusok hatékonysága 5. A költségfüggvénynek nem pontos menete, hanem a jellege a fontos. Függvény osztályokat defíniálunk, és ezeket a karakterisztikus függvénnyel adjuk meg. Az függvényosztályba az f-nél laposabban növekvő függvények tartoznak: Az függvényosztályba az f-nél meredekebben növekvő függvények tartoznak:

15 15 Algoritmusok hatékonysága 6. Az függvényosztályba az f-fel kb. azonosan növekvő függvények tartoznak: Két gyakran alkalmazott tétel: T1. f( ), g( ) pozitív értékű függvények, ha, akkor T2. Ha f( ) pozitív értékű függvény, c>0 állandó, akkor

16 16 Algoritmusok hatékonysága 6. Pl. A leggyakrabban használt függvénytípusok, sorrendben:

17 17 Algoritmusok hatékonysága 7. Példa: alsó háromszög mátrix elemeinek összege: sum=0; FOR i=1 TO n FOR j=1 TO i sum=sum+a[i, j] END END Az összeadások száma: 1+2+3+...+n=n(n+1)/2=(n 2 +n)/2 Hatékonysága:

18 18 Algoritmusok hatékonysága 8. Példa a nagyon eltérő hatékonyságú megoldásokra, határozzuk meg az n elemű A tömb maximális összegű részsorozatát: 1. Három egymásbaágyazott ciklus: 2. Kettő egymásbaágyazott ciklus: 3. Felezés + 2.módszer: 4. Scan-line:

19 19 Algoritmusok hatékonysága 9. Osszd meg és uralkodj (divide & conquer) alapfeladat Részf.1.Részf.n.Részf.2. Részm.2.Részm.1.Részm.n. megoldás

20 20 Algoritmusok hatékonysága 10. Akkor van értelme, ha Pl. esetén már van értelme, mert De, -nél már nincs.

21 21 Algoritmusok hatékonysága 11. A maximális intervallum teljes egészében a baloldali részben, vagy a jobboldaliban, vagy mindkettőben van, ezért: n1248163264 T(n)14123280192448

22 22 Algoritmusok hatékonysága 12. Scan line: adatok: 31, -42, 59, 26, -53, 58, 97, -93, -103, 84, 80

23 23 Scan line metakód Function maxsum(X,N) sm=0; bm=0; For i=1 To N If (sm+X[i] > 0) sm=sm+X[i]; Else sm=0; End bm= maximum (bm,sm); End Return bm End

24 24 Max. részletösszeg hatékonyság

25 25 Adatstruktúrák, algoritmusok Az adatszerkezetet az algoritmussal együtt vizsgáljuk, egy példa: komplex számok összeadása és szorzása: algebrai alak: z(a,b) polárkoordinátás alak: z(r,φ)


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

Hasonló előadás


Google Hirdetések