miskolci egyetem informatikai intézet Általános informatikai tanszé k pance miklós

25
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ó

Upload: thyra

Post on 19-Mar-2016

37 views

Category:

Documents


0 download

DESCRIPTION

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ó. Bevezetés. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Miskolci Egyetem Informatikai Intézet  Általános Informatikai Tanszé k Pance Miklós

1

Miskolci EgyetemInformatikai Intézet

Általános Informatikai Tanszék

Pance MiklósAdatstruktúrák, algoritmusok

előadásvázlat1. Bevezetés

Miskolc, 2004

Technikai közreműködő: Imre Mihály, műszaki informatikus hallgató

Page 2: Miskolci Egyetem Informatikai Intézet  Általános Informatikai Tanszé k Pance Miklós

2

BevezetésViszonylag á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.)

Page 3: Miskolci Egyetem Informatikai Intézet  Általános Informatikai Tanszé k Pance Miklós

3

Algoritmus fogalma, jellemzőiAlgoritmus: 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.

Page 4: Miskolci Egyetem Informatikai Intézet  Általános Informatikai Tanszé k Pance Miklós

4

Egy klasszikus példaLegNagyobb Közös Osztó meghatározása: adott két

pozitív egész szám: m, n1. r = min(m,n)2. Ha r maradék nélkül osztja m-et és n-et, akkor r a

LNKO, vége3. r = r-1, vissza 2.

Pl. m=1215, n=787 esetén a lépések száma: 787lehet és kell finomítani (RSA titkosítás)

Page 5: Miskolci Egyetem Informatikai Intézet  Általános Informatikai Tanszé k Pance Miklós

5

Euclides: LNKOEgy hatékonyabb megoldás, Euclides (ie. 400-300)

1. r = m mod n2. ha r = 0, akkor n a LNKO, vége3. m = n, n = r, ugrás 1.

Az előző példa megoldásához mindössze 8 lépés szükséges.

Page 6: Miskolci Egyetem Informatikai Intézet  Általános Informatikai Tanszé k Pance Miklós

6

Leírási formalizmusok1. 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.

Page 7: Miskolci Egyetem Informatikai Intézet  Általános Informatikai Tanszé k Pance Miklós

7

Metanyelv 1.3. Metanyelv, elemei

Elágazás:IF (feltétel)

igaz ágELSE

hamis ágEND

Szekvencia:művelet1művelet2

Értékadás:változó=kifejezés

Ciklus:WHILE (feltétel)

ciklusmagEND

Page 8: Miskolci Egyetem Informatikai Intézet  Általános Informatikai Tanszé k Pance Miklós

8

Metanyelv 2.Függvény deklaráció:FUNCTION függvénynév(formális paraméter lista)

utasításokRETURN visszatérő érték

END

Függvény hívás:függvénynév(aktuális paraméterlista)

Operátorok: + - * / < > = stb.

Page 9: Miskolci Egyetem Informatikai Intézet  Általános Informatikai Tanszé k Pance Miklós

9

LNKO metanyelvenA LNKO algoritmus metanyelven:

FUNCTION euclid()INPUT (m, n)r=m%nWHILE (r>0)

m=nn=rr=m%n

ENDOUTPUT (n)

END

Page 10: Miskolci Egyetem Informatikai Intézet  Általános Informatikai Tanszé k Pance Miklós

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

Page 11: Miskolci Egyetem Informatikai Intézet  Általános Informatikai Tanszé k Pance Miklós

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)

Page 12: Miskolci Egyetem Informatikai Intézet  Általános Informatikai Tanszé k Pance Miklós

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

ENDi=i+1

ENDRETURN t

ENDAz inicializálás költsége: h, a ciklusmagé: r

Page 13: Miskolci Egyetem Informatikai Intézet  Általános Informatikai Tanszé k Pance Miklós

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

Page 14: Miskolci Egyetem Informatikai Intézet  Általános Informatikai Tanszé k Pance Miklós

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:

})()(::0,0{)( 2121 cnfcngNnccgfO

)( fO

)}(.)(:,:0,0|{)( 00 nfcngnnNnncgf

Az függvényosztályba az f-nél meredekebbennövekvő függvények tartoznak:

)( f

Page 15: Miskolci Egyetem Informatikai Intézet  Általános Informatikai Tanszé k Pance Miklós

15

Algoritmusok hatékonysága 6.Az függvényosztályba az f-fel kb. azonosan

növekvő függvények tartoznak:)}()(|{)( fgfOggf

)( f

Két gyakran alkalmazott tétel:T1. f( ), g( ) pozitív értékű függvények, ha , akkor )()( fOgfO )( fOg T2.Ha f( ) pozitív értékű függvény, c>0 állandó, akkor

).()( fcOfO

Page 16: Miskolci Egyetem Informatikai Intézet  Általános Informatikai Tanszé k Pance Miklós

16

Algoritmusok hatékonysága 6.Pl.

A leggyakrabban használt függvénytípusok, sorrendben:

)()32( nOnO

)3()3233( 2 nn OnnO

nm mnnnnn ,),log(.,),log(,1

Page 17: Miskolci Egyetem Informatikai Intézet  Általános Informatikai Tanszé k Pance Miklós

17

Algoritmusok hatékonysága 7.Példa: alsó háromszög mátrix elemeinek összege: sum=0;

FOR i=1 TO nFOR j=1 TO i

sum=sum+a[i, j]ENDEND

Az összeadások száma: 1+2+3+...+n=n(n+1)/2=(n2+n)/2

Hatékonysága: )( 2nO

Page 18: Miskolci Egyetem Informatikai Intézet  Általános Informatikai Tanszé k Pance Miklós

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:

j

ikkamax

)( 2nO)( 3nO

)log.( nnO)(nO

Page 19: Miskolci Egyetem Informatikai Intézet  Általános Informatikai Tanszé k Pance Miklós

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

Page 20: Miskolci Egyetem Informatikai Intézet  Általános Informatikai Tanszé k Pance Miklós

20

Algoritmusok hatékonysága 10.Akkor van értelme, ha

Pl. esetén már van értelme, mert

De, -nél már nincs.

összerakszétv TTknTknT )/(.)(

)( 2nO)2/(24/22/)( 222 nTnnnnT

)(nO

Page 21: Miskolci Egyetem Informatikai Intézet  Általános Informatikai Tanszé k Pance Miklós

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:

nnTnT )2/(2)(

n 1 2 4 8 16 32 64T(n) 1 4 12 32 80 192 448

2)( nnTn

)log(.)( nnnT

Page 22: Miskolci Egyetem Informatikai Intézet  Általános Informatikai Tanszé k Pance Miklós

22

-50

0

50

100

150

200

Line 1összeg

Line 1 0 1 2 3 4 5 6 7 8 9 10 11összeg 0 31 -11 48 74 21 79 176 83 -20 64 144

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

Page 23: Miskolci Egyetem Informatikai Intézet  Általános Informatikai Tanszé k Pance Miklós

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];

Elsesm=0;

Endbm= maximum (bm,sm);

EndReturn bm

End

Page 24: Miskolci Egyetem Informatikai Intézet  Általános Informatikai Tanszé k Pance Miklós

24

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

N O(N^3) O(N^2) O(N log(N)) O(N)

1,00E+01 1,00E+03 1,00E+02 3,40E+01 1,00E+01

1,00E+02 1,00E+06 1,00E+04 6,66E+02 1,00E+02

1,00E+03 1,00E+09 1,00E+06 9,97E+03 1,00E+03

1,00E+04 1,00E+12 1,00E+08 1,33E+05 1,00E+04

Page 25: Miskolci Egyetem Informatikai Intézet  Általános Informatikai Tanszé k Pance Miklós

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,φ)