miskolci egyetem informatikai intézet Általános informatikai tanszé k pance miklós
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 PresentationTRANSCRIPT
![Page 1: Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós](https://reader035.vdocuments.pub/reader035/viewer/2022062411/56814c22550346895db924d5/html5/thumbnails/1.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062411/56814c22550346895db924d5/html5/thumbnails/2.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062411/56814c22550346895db924d5/html5/thumbnails/3.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062411/56814c22550346895db924d5/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062411/56814c22550346895db924d5/html5/thumbnails/5.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062411/56814c22550346895db924d5/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062411/56814c22550346895db924d5/html5/thumbnails/7.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062411/56814c22550346895db924d5/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062411/56814c22550346895db924d5/html5/thumbnails/9.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062411/56814c22550346895db924d5/html5/thumbnails/10.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062411/56814c22550346895db924d5/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062411/56814c22550346895db924d5/html5/thumbnails/12.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062411/56814c22550346895db924d5/html5/thumbnails/13.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062411/56814c22550346895db924d5/html5/thumbnails/14.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062411/56814c22550346895db924d5/html5/thumbnails/15.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062411/56814c22550346895db924d5/html5/thumbnails/16.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062411/56814c22550346895db924d5/html5/thumbnails/17.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062411/56814c22550346895db924d5/html5/thumbnails/18.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062411/56814c22550346895db924d5/html5/thumbnails/19.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062411/56814c22550346895db924d5/html5/thumbnails/20.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062411/56814c22550346895db924d5/html5/thumbnails/21.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062411/56814c22550346895db924d5/html5/thumbnails/22.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062411/56814c22550346895db924d5/html5/thumbnails/23.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062411/56814c22550346895db924d5/html5/thumbnails/24.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062411/56814c22550346895db924d5/html5/thumbnails/25.jpg)
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,φ)