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

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

Algoritmuselmélet 2. előadás

INFORMATIKA javítókulcs 2016

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

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

Felvételi tematika INFORMATIKA

Rekurzív algoritmusok

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

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.

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.

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

Programozási segédlet

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

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

BABEŞ-BOLYAI TUDOMÁNYEGYETEM MATEMATIKA-INFORMATIKA KAR Felvételi verseny - minta Informatika írásbeli

Algoritmusok pszeudókód... 1

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

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

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

A 2017/2018 tanévi Országos Középiskolai Tanulmányi Verseny első fordulójának feladatai. INFORMATIKA II. (programozás) kategória

Tartalomjegyzék Algoritmusok - pszeudókód

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)

Tartalomjegyzék Algoritmusok - pszeudókód

Algoritmusok és adatszerkezetek gyakorlat 03 Oszd meg és uralkodj. Nagy

Edényrendezés. Futási idő: Tegyük fel, hogy m = n, ekkor: legjobb eset Θ(n), legrosszabb eset Θ(n 2 ), átlagos eset Θ(n).

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

Branch-and-Bound. 1. Az egészértéketű programozás. a korlátozás és szétválasztás módszere Bevezető Definíció. 11.

Információs Technológia

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

Optimalizációs stratégiák 1.

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

2018, Funkcionális programozás

Hatékonyság 1. előadás

Algoritmuselmélet 1. előadás

ALGORITMUSTERVEZÉS FELÜLNÉZETBŐL. Kátai Zoltán Sapientia Erdélyi Magyar Tudományegyetem, Marosvásárhely. Összefoglaló

Algoritmusok pszeudókód... 1

Egyszerű programok készítése Kifejezések Bitszintű műveletek Relációs műveletek... 58

Algoritmusok - pszeudókód... 1

PROGRAMOZÁSI TÉTELEK

Fibonacci számok. Dinamikus programozással

Egyszerű programozási tételek

2017, Diszkrét matematika

Haladó rendezések. PPT 2007/2008 tavasz.

A rész (30 pont) A.1. Vajon mit csinál? (5 pont) A generál(n) algoritmus egy n természetes számot dolgoz fel (0 < n < 100).

Számjegyes vagy radix rendezés

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök

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

Rendezések. Összehasonlító rendezések

Rekurzió. (Horváth Gyula és Szlávi Péter előadásai felhasználásával)

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

Programozás alapjai II. (7. ea) C++

BACKTRACKING Visszalépéses keresés

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

A programozás alapjai 1 Rekurzió

2018, Diszkrét matematika

Bevezetés a programozásba. 12. Előadás: 8 királynő

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

Algoritmusok vektorokkal keresések 1

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

1. ábra. Számláló rendezés

Adatszerkezetek 7a. Dr. IványiPéter

6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok

Amortizációs költségelemzés

Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával)

Adatszerkezetek II. 10. előadás

Adatszerkezetek 2. Dr. Iványi Péter

2. Milyen értéket határoz meg az alábbi algoritmus, ha A egy vektor?. (2 pont)

Programozás C nyelven 6. ELŐADÁS. Sapientia EMTE

Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT- 4. kurzus. 3. Előadás: A mohó algoritmus

Kupacrendezés. Az s sorban lévő elemeket rendezzük a k kupac segítségével! k.empty. not s.isempty. e:=s.out k.insert(e) not k.

Gyakorló feladatok 9.évf. halmaznak, írd fel az öt elemű részhalmazokat!. Add meg a következő halmazokat és ábrázold Venn-diagrammal:

A C programozási nyelv III. Pointerek és tömbök.

2018, Diszkre t matematika. 10. elo ada s

Visszalépéses keresés

4. Előfeltételek (ha vannak) 4.1 Tantervi Nincs 4.2 Kompetenciabeli Feladatok kijelentéseinek megértése

Programozás alapjai. 5. előadás

Partíció probléma rekurzíómemorizálással

Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK,

A C programozási nyelv III. Pointerek és tömbök.

Algoritmuselmélet 1. előadás

Adatbázis és szoftverfejlesztés elmélet. Programozási tételek

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

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.

Alkalmazott modul: Programozás. Programozási tételek, rendezések. Programozási tételek Algoritmusok és programozási tételek

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

2016, Diszkrét matematika

Matematika 11. osztály

Programozás alapjai 9. előadás. Wagner György Általános Informatikai Tanszék

Osztályozóvizsga követelményei

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

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

11. Előadás. 11. előadás Bevezetés a lineáris programozásba

Algoritmuselmélet. Legrövidebb utak, Bellmann-Ford, Dijkstra. Katona Gyula Y.

2018, Diszkrét matematika

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

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

Programozás I. Metódusok C#-ban Egyszerű programozási tételek. Sergyán Szabolcs

Alkalmazott modul: Programozás. Programozási tételek, rendezések Giachetta Roberto

Átírás:

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

Algoritmus Az algoritmus kifejezés a bagdadi arab tudós, al-hvárizmi(780-845) nevének eltorzított, rosszul latinra fordított változatából ered. Az első, számítógépre kigondolt algoritmust Ada Lovelace írta 1843-ban Charles Babbage analitikai gépére a Bernoulli-számok kiszámítására, tehát ő tekinthető az első programozónak.

Algoritmusok hatékonysága Lépésszám, legrosszabb esetben, a bemenet mérete (n) függvényében Bináris keresés Lineáris keresés Gyors rendezés Buborékos rendezés

Algoritmustervezési stratégiák (0) Nyers erő (Brute force) (1) Oszd meg és uralkodj (Divideet impera) (2) Visszalépéses keresés (Backtracking) Divide et impera vs. Backtracking (3) Mohó (Greedy) Backtracking + Greedy (4) Dinamikus programozás (Dynamic programming) Dinamikus programozás vs. Divide et impera Dinamikus programozás vs. Greedy (5) Ág és korlát (Branchand bound)

Nyers erő módszere A legkézenfekvőbb algoritmust jelenti, amelyet a feladat megfogalmazása vagy a hivatkozott fogalmak definíciója elsőre sugall

PÉLDÁK hatvány(x,n)//x n = x*x* *x p = 1 minden i = 1,n végezd p = p * x vége minden return p vége hatvány Rendezd az a[1..n] tömböt Visszatéríti az a[i..n] tömbszakasz legkisebb elemének indexét kiválasztásos_rendezés(a[],n) minden i = 1,n-1 végezd j = min_index(a,i,n) csere(a[i],a[j]) vége minden vége kiválasztásos_rendezés O(n 2 ) buborékos_rendezés(a[],n) minden i = n,2,-1 végezd végérebuborékoztat(a,i) vége minden vége buborékos_rendezés Rendezd az a[1..n] tömböt O(n 2 ) Az a[1..i] tömbszakasz legnagyobb elemét kibuborékoztatja az a[i] pozícióba Visszatéríti az utolsó csere helyét finomított_buborékos_rendezés(a[],n) vég = n amíg vég > 0 végezd vég = végérebuborékoztat(a,vég) vége minden vége finomított_buborékos_rendezés

REKURZIÓ emlékeztető A kurrens feladat megoldása visszavezethető hasonló, egyszerűbb részfeladat(ok) megoldására Kicsinyíts és urald! (Decrease-and-conquer) Oszd meg és urald! (Divide-and-conquer)

Méretkicsinyítés állandó értékkel pl. a n = a n-1 * a adott faktorral pl. a n = a n/2 * a n/2 változó értékkel pl. lnko Kicsinyíts és urald! (1) hatvány1(x,n)//x n = x n-1 *x ha n = 0 végezd return 1 különben return hatvány1(x,n-1)*x vége ha vége hatvány1 hatvány2(x,n)//x n = x n/2 *x n/2 ha n = 0 végezd return 1 különben ha n%2 = 0 végezd h = hatvány2(x,n/2) return h*h különben h = hatvány2(x,(n-1)/2) return h*h*x vége ha vége ha vége hatvány2 lnko(m,n)// lnko(m,n)=lnko(n,m%n) ha m = n végezd return n különben return lnko(n,m%n) vége ha vége lnko

Kicsinyíts és urald! (2) Rendezd az a[1..n] tömböt Rendezd az a[1..n-1] tömbszakaszt beszúrásos_rendezés(a[],n) if n > 1 végezd beszúrásos_rendezés(a,n-1) beszúrutolsóelem(a,n) vége minden vége beszúrásos_rendezés O(n 2 ) Beszúrja az a[n]elemet a már rendezett a[1..n-1] tömbszakaszba

Milyen feladatok? Oszd meg és urald! amelyek visszavezethetők/lebonthatók, két vagy több hasonló, egyszerűbb részfeladatra

Hanoi tornyai (1) 2 n -1 steps

Hanoi tornyai (2) k korong áthelyezése s-ről d-re h segítségével k-1 korong áthelyezése s-ről h-ra d segítségével k-1 korong áthelyezése h-ról d-re s segítségével

Maximum-keresés Visszatéríti az a[i..j] tömbszakasz legnagyobb elemének indexét Visszatéríti az a[i..(i+j)/2] tömbszakasz legnagyobb elemének indexét Visszatéríti az a[(i+j)/2+1..j] tömbszakasz legnagyobb elemének indexét

Összefésüléses-rendezés O(n*log(n)) Rendezd az a[i..j] tömbszakaszt Rendezd az a[i..k] tömbszakaszt Rendezd az a[k+1..j] tömbszakaszt Fésüld össze az a[i..k]és a[k+1..j] tömbszakaszokat

Gyors-rendezés O(n*log(n)) Rendezd az a[i..j] tömbszakaszt Válogasd szét az a[i..j] tömbszakaszt, és térítsd vissza hol találta meg helyét az a[i] elem Rendezd az a[i..k-1] tömbszakaszt Rendezd az a[k+1..j] tömbszakaszt

Rajzolj d hosszú vonalat α szög alatt Koch-fraktál Rajzolj d/3 hosszú vonalat α szög alatt Rajzolj d/3 hosszú vonalat α szög alatt Rajzolj d/3 hosszú vonalat α+π/3 szög alatt Rajzolj d/3 hosszú vonalat α-π/3 szög alatt

Négyzet és kör (1) (átfedési területe méretét 3 tizedes pontossággal)

Négyzet és kör (2) (átfedési területe méretét 3 tizedes pontossággal)

Négyzet és kör (3) (átfedési területe méretét 3 tizedes pontossággal)

Négyzet és kör (4) (átfedési területe méretét 3 tizedes pontossággal)??????

Alakítsd át, hogy uralhasd Egyszerűsítsd, hogy uralhasd Például hatékonyabb algoritmust eredményezhet, ha előre rendezed a bementet Melyik érték fordul elő a legtöbbször egy adott sorozatban? O(n*log(n)): rendezd, majd keresd meg a leghosszabb konstans részsorozatot Ábrázold másként, hogy uralhasd Gausz módszer egyenletrendszer-megoldáshoz Vezesd vissza, hogy uralhasd Vezesd vissza egy olyan feladatra, amelyre tudsz hatékony algoritmust lkkt(m,n) = (m*n) / lnko(m,n)

Ismétlesként Decrease-and-conquer Az x n =x n/ 2*x n/2 felbontás hatékonyabb algoritmust eredményez, mint az x n =x n-1 *x Divide-and-conquer A divideet impera rendezések (merge-sort, quick-sort) hatékonyabbak, mint a nyers erő megközelítések (selection-sort, bubble-sort) Transfor-and-conquer lkkt(m,n) = (m*n) / lnko(m,n)