Algoritmusok Tervezése. 6. Előadás Algoritmusok 101 Dr. Bécsi Tamás

Hasonló dokumentumok
Diszkrét Irányítások tervezése. Heurisztika Dr. Bécsi Tamás

Függvények növekedési korlátainak jellemzése

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje

A félév során előkerülő témakörök

Nagyságrendek. Kiegészítő anyag az Algoritmuselmélet tárgyhoz. Friedl Katalin BME SZIT február 1.

Dr. Schuster György február / 32

Programozási módszertan. Függvények rekurzív megadása "Oszd meg és uralkodj" elv, helyettesítő módszer, rekurziós fa módszer, mester módszer

Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése

Specifikáció. B logikai formula, a bemeneti feltétel, K logikai formula, a kimeneti feltétel, A az algoritmus, amelyre az állítás vonatkozik.

Algoritmuselmélet. Függvények nagyságrendje, elágazás és korlátozás, dinamikus programozás. Katona Gyula Y.

Programozás I. 1. előadás: Algoritmusok alapjai. Sergyán Szabolcs

Nagyordó, Omega, Theta, Kisordó

Algoritmuselmélet. Függvények nagyságrendje, elágazás és korlátozás, dinamikus programozás. Katona Gyula Y.

Specifikáció. B logikai formula, a bemeneti feltétel, K logikai formula, a kimeneti feltétel, A az algoritmus, amelyre az állítás vonatkozik.

Számítógép és programozás 2

Algoritmuselmélet. Bonyolultságelmélet. Katona Gyula Y.

Bonyolultságelmélet. Monday 26 th September, 2016, 18:28

Bonyolultságelmélet. Monday 26 th September, 2016, 18:27. Bonyolultságelmélet

Rendezések. A rendezési probléma: Bemenet: Kimenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat

Sorozatok határértéke SOROZAT FOGALMA, MEGADÁSA, ÁBRÁZOLÁSA; KORLÁTOS ÉS MONOTON SOROZATOK

Algoritmusokfelülnézetből. 1. ELŐADÁS Sapientia-EMTE

Deníciók és tételek a beugró vizsgára

Kriptográfia 0. A biztonság alapja. Számítás-komplexitási kérdések

Approximációs algoritmusok

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Teljesítmény Mérés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Teljesítmény Mérés / 20

Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs

Algoritmuselmélet 1. előadás

ELEMI PROGRAMOZÁSI TÉTELEK

Programozás alapjai (ANSI C)

Logika és számításelmélet. 7. előadás

Számításelmélet. Második előadás

1: Bevezetés: Internet, rétegmodell Alapok: aszimptótika, gráfok. HálózatokII, 2007

Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.

Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs

Algoritmuselmélet 1. előadás

Algoritmusok komplexitása. Függvények növekedése Függvények növekedése: Nagy Ordó. Nagy Ordó jelölés. Nagyságrend

A Föld középpontja felé szabadon eső test sebessége növekszik, azaz, a

Általános algoritmustervezési módszerek

Bonyolultságelmélet. Monday 26 th September, 2016, 18:50

Számítógép hálózatok, osztott rendszerek 2009

Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.

Logika és számításelmélet. 7. előadás

Algoritmuselmélet 12. előadás

Bevezetés az informatikába

Exponenciális, logaritmikus függvények

Tartalomjegyzék. Köszönetnyilvánítás. 1. Az alapok 1

Az informatika elméleti alapjai 2 elővizsga december 19.

definiálunk. Legyen egy konfiguráció, ahol és. A következő három esetet különböztetjük meg. 1. Ha, akkor 2. Ha, akkor, ahol, ha, és egyébként.

19. AZ ÖSSZEHASONLÍTÁSOS RENDEZÉSEK MŰVELETIGÉNYÉNEK ALSÓ KORLÁTJAI

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 13.

Számítógép és programozás 2

2015, Diszkrét matematika

Programozási módszertan. Dinamikus programozás: szerelőszalag ütemezése Mátrixok véges sorozatainak szorzása

Irányításelmélet és technika II.

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Megkülönböztetett kiszolgáló routerek az

Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra:

Bevezetés a programozásba. 5. Előadás: Tömbök

Programozás alapjai. 6. gyakorlat Futásidő, rekurzió, feladatmegoldás

f(x) vagy f(x) a (x x 0 )-t használjuk. lim melyekre Mivel itt ɛ > 0 tetszőlegesen kicsi, így a a = 0, a = a, ami ellentmondás, bizonyítva

Gauss elimináció, LU felbontás

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

Dinamikus programozás - Szerelőszalag ütemezése

Algoritmuselmélet 18. előadás

6. ELŐADÁS DIFFERENCIÁLSZÁMÍTÁS II. DIFFERENCIÁLÁSI SZABÁLYOK. BSc Matematika I. BGRMA1HNND, BGRMA1HNNC

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

Algoritmusok helyességének bizonyítása. A Floyd-módszer

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA

Funkcionálanalízis. n=1. n=1. x n y n. n=1

Algoritmizálás, adatmodellezés tanítása 1. előadás

Egyszerű programozási tételek

Hardver leíró nyelvek (HDL)

2014. november Dr. Vincze Szilvia

Követelmények Motiváció Matematikai modellezés: példák A lineáris programozás alapfeladata 2017/ Szegedi Tudományegyetem Informatikai Intézet

Számláló rendezés. Példa

egyenlőtlenségnek kell teljesülnie.

Követelmények Motiváció Matematikai modellezés: példák A lineáris programozás alapfeladata 2017/ Szegedi Tudományegyetem Informatikai Intézet

A PiFast program használata. Nagy Lajos

1. előadás. számításokban. Adatszerkezetek és algoritmusok előadás február 12. Kósa Márk, Pánovics János, Szathmáry László és Halász Gábor

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI KÖZÉPSZINT Abszolútértékes és gyökös kifejezések

Algoritmusok bonyolultsága

Számítógépes döntéstámogatás. Genetikus algoritmusok

ALGORITMUSOK ÉS BONYOLULTSÁGELMÉLET Matematika MSc hallgatók számára. 11. Előadás

Hozzárendelés, lineáris függvény

minden x D esetén, akkor x 0 -at a függvény maximumhelyének mondjuk, f(x 0 )-at pedig az (abszolút) maximumértékének.

Új típusú döntési fa építés és annak alkalmazása többtényezős döntés területén

Számítógépvezérelt irányítás és szabályozás elmélete (Bevezetés a rendszer- és irányításelméletbe, Computer Controlled Systems) 7.

Ordó, omega, theta, rekurzió :15 11:45. Megoldás. A nagyságrendi sorra tekintve nyilvánvalóan igaz pl., hogy: 1

Csoportmódszer Függvények I. (rövidített változat) Kiss Károly

15. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: január 30.

Regresszió. Csorba János. Nagyméretű adathalmazok kezelése március 31.

2010. október 12. Dr. Vincze Szilvia

Számelméleti alapfogalmak

A lineáris algebrában központi szerepet betöltı vektortér fogalmát értelmezzük most, s megvizsgáljuk e struktúra legfontosabb egyszerő tulajdonságait.

Osztott algoritmusok

Programozási alapismeretek 1. előadás

Differenciálszámítás. 8. előadás. Farkas István. DE ATC Gazdaságelemzési és Statisztikai Tanszék. Differenciálszámítás p. 1/1

Átírás:

Algoritmusok Tervezése 6. Előadás Algoritmusok 101 Dr. Bécsi Tamás

Mi az algoritmus? Lépések sorozata egy feladat elvégzéséhez (legáltalánosabban) Informálisan algoritmusnak nevezünk bármilyen jól definiált számítási eljárást, amely bemenetként bizonyos értéket vagy értékeket kap és kimenetként bizonyos értéket vagy értékeket állít elő. Eszerint az algoritmus olyan számítási lépések sorozata, amelyek a bemenetet átalakítják kimenetté.

A jó algoritmus Egy algoritmust helyesnek mondunk, ha minden bemenetre megáll és helyes eredményt ad. Azt mondjuk, hogy a helyes algoritmus megoldja az adott számítási feladatot. Egy nem helyes algoritmus esetén előfordulhat, hogy nem minden bemenetre áll meg, vagy bizonyos bemenetekre nem a kívánt választ adja. Várakozásunkkal ellentétben egy nemhelyes algoritmus is lehet hasznos, ha hibázási aránya elfogadható.

Algoritmusok megadása Egy algoritmus megadható magyar nyelven, számítógépes programként vagy akár hardver segítségével. Az egyetlen követelmény az, hogy a leírás pontosan adja meg a követendő számítási eljárást. Szöveges, informális megadás Folyamatábra Pszeudokód Programkód

Az algoritmustervezés tanulása Megismerni az algoritmusok korlátait, és lehetőségeit Megismerni a tervezési célokat, azok használatát Megismerni létező algoritmusokat Megismerni alapvető algoritmustervezési módszereket, amelyek mintát ad más feladatok megoldásához

Helyes algoritmus vs. hatékony algoritmus Nagyon sok algoritmizálási feladatnak létezik exakt, matematikailag bizonyított helyes megoldása. Az algoritmus hatékonysága úgy írható le, hogy elfogadható erőforrás felhasználásával szolgáltatja a helyes eredményt. (Idő, Tárhely) A helyesség és a hatékonyság sokszor egymással ellentétes igényeket fogalmaznak meg.

Nehéz feladatok Vannak azonban olyan feladatok, amelyeknek a megoldására nem ismerünk hatékony és helyes algoritmust. (Például az NP teljes feladatok) Miért érdekes? Azért, mert bár NP-teljes feladat meg oldására még soha senki nem talált hatékony algoritmust, soha senki nem bizonyította be, hogy ilyen algoritmus nem létezik. Ha meg lehet mutatni, hogy a feladat NP-teljes, akkor a tervező arra fordíthatja az idejét, hogy olyan hatékony algoritmust tervezzen, amely jó bár nem a lehető legjobb eredményt ad.

Algoritmusok futásideje Az algoritmus futásideje függ az N bemenő paramétertől. Azonos feladat különböző N értékek esetén más futásidőt igényelnek. Például: Lineáris keresés esetén az N növekedésével egyenes arányosan nő a futásidő Bináris keresés esetén N növekedésével logaritmikusan nő a futásigény Egyszerű (mondjuk buborék) sorbarendezés esetén N-nel négyzetesen arányosan nő a futásidő

Függvények növekedése Ha a bemenet mérete elég nagy, akkor az algoritmus futási idejének csak a nagyságrendje lényeges, ezért az algoritmusnak az aszimptotikus hatékonyságát vizsgáljuk. Ekkor csak azzal foglalkozunk, hogy a bemenet növekedésével miként növekszik az algoritmus futási ideje határértékben, ha a bemenet mérete minden határon túl nő. Általában az aszimptotikusan hatékonyabb algoritmus lesz a legjobb választás, kivéve a kis bemenetek esetét.

Aszimptotikus jelölések Egy algoritmus aszimptotikus futási idejét leíró jelöléseket olyan függvényekként definiáljuk, melyeknek értelmezési tartománya a természetes számok N = {0, 1, 2,...} halmaza. Ilyen jelölésekkel kényelmesen leírható a futási idő a legrosszabb esetben, azaz a T(N) függvény, amely általában csak egész számú bemenő adattól függ. Mindemellett néha kényelmes az aszimptotikus jelölések többféle pontatlan használata.

Példa Tételezzük fel, hogy az algoritmusunk futásideje meghatározható, és n darabszám függvényében T n = 6n 2 + 100n + 300 utasítást igényel. Látható, hogy n>20 esetén a 6n 2 tag jóval nagyobb, és gyorsabban nő, mint a másik tag. Ekkor az mondjuk, hogy hogy az algoritmus négyzetesen nő. Ez a viselkedés az együtthatóktól független, mindig lesz olyan határszám, ahonnan a négyzetes tag a meghatározó.

Θ jelölés Definíció: Egy adott g(n) esetén Θ g n -nel jelöljük a függvényeknek azt a halmazát, amelyre: Θ(g n ) ={f(n), ha létezik olyan k 1, k 2 és n 0 pozitív állandó, hogy 0 k 1 g(n) f(n) k 2 g(n), minden n > n 0 esetén}

O jelölés Definíció: Egy adott g(n) esetén O g n -nel jelöljük a függvényeknek azt a halmazát, amelyre: O(g n ) ={f(n), ha létezik olyan k és n 0 pozitív állandó, hogy 0 f(n) kg(n), minden n > n 0 esetén} Felső korlát Értelemszerűen: ha f n = Θ(g(n)), akkor f n = O(g(n))

Nagyságrendek, példák Komp. Elnevezés Példa Θ(1) konstans Párosság eldöntése Θ(lg n) logaritmikus bináris keresés Θ( n) gyökös példa gyakorlatról Θ(n) lineáris lineáris keresés Θ(n log n) mergesort, quicksort, heapsort Θ(n 2 ) négyzetes sorbarendezés legrosszabb esetben Θ(n 3 ) köbös n*n mátrixszorzás Θ(n c ) polinomiális Θ(c n ) exponenciális TSP exakt megoldás dinamikus programozással Θ(n!) faktoriális TSP exakt megoldás brute force algoritmussal

Nagyságrendek

Tulajdonságok f 1 O g 1 és f 2 O g 2 f 1 f 2 O g 1 g 2 fo g O fg f 1 O g 1 és f 2 O g 2 f 1 + f 2 O g 1 + g 2 ha f 1 O g és f 2 O g f 1 + f 2 O g O kg = O(g)