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.

Slides:



Advertisements
Hasonló előadás
Szerver oldali programozás
Advertisements

Az algoritmus.
Elemi algoritmusok Páll Boglárka.
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.
Algoritmusok.
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ő:
Adatelemzés számítógéppel
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ő:
Hatékonyságvizsgálat, dokumentálás
Matematika és Tánc Felkészítő tanár: Komáromi Annamária
Algoritmus Az algoritmus problémamegoldásra szolgáló elemi lépések olyan sorozata, amely: véges – azaz véges számú lépés után befejeződik, és eredményt.
3. előadás (2005. március 1.) Utasítások, tömbök
Benczúr Zsolt VBA gyorstalpaló Benczúr Zsolt
Rekurzió (Horváth Gyula és Szlávi Péter előadásai felhasználásával)
4. VÉGES HALMAZOK 4.1 Alaptulajdonságok
Programozási alapismeretek 8. előadás. ELTE 2/  További programozási tételek További programozási tételek 
Bevezetés a Java programozásba
Algoritmusok Az algoritmus fogalma:
Programozás alapjai GEIAL312B (ANSI C) BSc (Bachelor of Science) / Alap képzés 2005/2006. őszi félév Miskolci Egyetem Általános Informatikai Tanszék.
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.
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
Táblázatkezelés alapjai MS Excel, OpenOffice Calc
Készítette: Pető László
Programozás módszertan
Java programozási nyelv 2. rész – Vezérlő 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ő:
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ő:
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ő:
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ő:
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ő:
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Vizuális és web programozás II.
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ő:
C nyelv utasításai.
Ismétlés.
Kifejezések. Algoritmus számol; Adott összeg; összeg:=0; Minden i:=1-től 5-ig végezd el Ha 2 | i akkor összeg:=összeg+2*i Ha vége Minden vége Algoritmus.
Algoritmusok.
ALGORITMUSOK.
Tömbök és programozási tételek
PHP nyelv. PHP Interpreteres nyelv → parancsértelmező szükséges hozzá Rasmus Lerdorf 1995 → személyes felhasználás (internetes önéletrajzának megtekintésének.
Készítette: Csíki Gyula
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Nevezetes algoritmusok
Algoritmusok.
Objektum orientált programozá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)
Dodekaéder Hamilton köre
Programozás, programtervezé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.
Ö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.
1. feladat  Készíts olyan függvényt, mely paraméterül kapja két egész típusú változó címét, s hívása után a két változó értéke helyet cserél.
Algoritmizálás, adatmodellezés
A 2. géptermi beszámoló VBA anyagának összefoglalása
Excel programozás (makró)
C++2. Ciklusok elöltesztelő (for, while) A ciklusmag feldolgozása előtt történik a vizsgálat  lehet, hogy egyszer sem fut le. A soronkövetkező iteráció.
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.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Utasítás és blokk. Elágazás típusai, alkalmazása Kovács.
TÁMOP /1-2F Informatikai gyakorlatok 11. évfolyam Alapvető programozási tételek megvalósítása Czigléczky Gábor 2009.
Programozási alapok.
Excel programozás (makró)
Bevezetés a programozásba Algoritmikus gondolkodás
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Algoritmusok Az algoritmus fogalma:
Informatikai gyakorlatok 11. évfolyam
Informatikai gyakorlatok 11. évfolyam
Algoritmus készítés.
Előadás másolata:

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 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 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 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 Euclides: LNKO Egy hatékonyabb megoldás, Euclides (ie ) 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 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 Metanyelv 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 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 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 Algoritmusok hatékonysága 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 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 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 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 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 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 Algoritmusok hatékonysága 6. Pl. A leggyakrabban használt függvénytípusok, sorrendben:

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: n=n(n+1)/2=(n 2 +n)/2 Hatékonysága:

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 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 Algoritmusok hatékonysága 10. Akkor van értelme, ha Pl. esetén már van értelme, mert De, -nél már nincs.

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: n T(n)

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

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 Max. részletösszeg hatékonyság

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