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

Hasonló dokumentumok
Bonyolultságelmélet. Thursday 1 st December, 2016, 22:21

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.

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

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.

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

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

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

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. 12.

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

Algoritmuselmélet 18. előadás

Algoritmusok bonyolultsága

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

NP-teljesség röviden

Bevezetés a bonyolultságelméletbe gyakorlatok I. A(0, y) := y + 1 y 0 A(x, 0) := A(x 1, 1) x 1 A(x, y) := A(x 1, A(x, y 1)) x, y 1

Algoritmuselmélet. Gráfok megadása, szélességi bejárás, összefüggőség, párosítás. Katona Gyula Y.

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

Turing-gépek. Számításelmélet (7. gyakorlat) Turing-gépek 2009/10 II. félév 1 / 1

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

Totális Unimodularitás és LP dualitás. Tapolcai János

Algoritmuselmélet 12. előadás

Dr. Schuster György február / 32

A Számítástudomány alapjai

Informatika 1 2. el adás: Absztrakt számítógépek

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

Modern irányzatok a bonyolultságelméletben: éles korlátok és dichotómia tételek

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

Logika és informatikai alkalmazásai kiskérdések február Mikor mondjuk, hogy az F formula a G-nek részformulája?

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t

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

Dinamikus modellek szerkezete, SDG modellek

Bonyolultságelmélet gyakorlat 06 Gráfos visszavezetések II.

Adatszerkezetek 2. Dr. Iványi Péter

Mutatók és mutató-aritmetika C-ben március 19.

Felvételi tematika INFORMATIKA

Programozási nyelvek 6. előadás

Bonyolultságelmélet. Monday 10 th October, 2016, 17:44

ALGORITMUSOK ÉS BONYOLULTSÁGELMÉLET Matematika MSc hallgatók számára

Bonyolultságelmélet feladatok

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

Más szavakkal formálisan:, ahol olyan egész szám, hogy. Más szavakkal formálisan:, ahol olyan egész szám, hogy.

Számításelmélet. Will június 13. A kiszámíthatóság fogalma és a Church-Turing tézis

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

Algoritmuselmélet. Mélységi keresés és alkalmazásai. Katona Gyula Y.

Rekurzió. Dr. Iványi Péter

Algoritmusok bonyolultsága

A verem (stack) A verem egy olyan struktúra, aminek a tetejéről kivehetünk egy (vagy sorban több) elemet. A verem felhasználása

INFORMATIKA javítókulcs 2016

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

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

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..

Logika és számításelmélet

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

Gráfelmélet. I. Előadás jegyzet (2010.szeptember 9.) 1.A gráf fogalma

Ö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.

Gráfelméleti feladatok. c f

A digitális számítás elmélete

Adatszerkezetek 7a. Dr. IványiPéter

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

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

2018, Diszkrét matematika

Logika és informatikai alkalmazásai

2. Visszalépéses stratégia

5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix

A fordítóprogramok szerkezete. Kódoptimalizálás. A kódoptimalizálás célja. A szintézis menete valójában. Kódoptimalizálási lépések osztályozása

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

2. Visszalépéses keresés

Programozási módszertan. Mohó algoritmusok

Adatszerkezetek I. 1. előadás

Programozási nyelvek a közoktatásban alapfogalmak I. előadás

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1]

Struktúra nélküli adatszerkezetek

Kiterjesztések sek szemantikája

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

4. Fuzzy relációk. Gépi intelligencia I. Fodor János NIMGI1MIEM BMF NIK IMRI

Fordító részei. Fordító részei. Kód visszafejtés. Izsó Tamás szeptember 29. Izsó Tamás Fordító részei / 1

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

Pénzügyi algoritmusok

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

Algoritmusok és adatszerkezetek gyakorlat 07

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

5. előadás. Programozás-elmélet. Programozás-elmélet 5. előadás

Logika és informatikai alkalmazásai

Gráfalgoritmusok ismétlés ősz

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós április 4. Széchenyi István Egyetem, Gy r

Turing-gépek. Kiegészítő anyag az Algoritmuselmélet tárgyhoz VIII. Friedl Katalin BME SZIT március 18.

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

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása

Diszkrét matematika 2.C szakirány

Kupac adatszerkezet. 1. ábra.

Turing-gépek. Kiegészítő anyag az Algoritmuselmélet tárgyhoz. Friedl Katalin BME SZIT augusztus 16.

Nagy Gábor compalg.inf.elte.hu/ nagy

Számítógépek felépítése

Dijkstra algoritmusa

Diszkrét matematika 2. estis képzés

10. gyakorlat Struktúrák, uniók, típusdefiníciók

Példa Hajtsuk végre az 1 pontból a Dijkstra algoritmust az alábbi gráfra. (A mátrixban a c i j érték az (i, j) él hossza, ha nincs él.

út hosszát. Ha a két várost nem köti össze út, akkor legyen c ij = W, ahol W már az előzőekben is alkalmazott megfelelően nagy szám.

ALGORITMIKUS SZERKEZETEK ELÁGAZÁSOK, CIKLUSOK, FÜGGVÉNYEK

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

Átírás:

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

A kiszámítás modelljei 2 De milyen architektúrán polinom? A kiszámításnak számos (matematikai) modellje létezik: Általános rekurzív függvények λ-kalkulus Turing-gép RAM (Random Access Machine)

A RAM gép 3 RAM gép rendelkezik végtelen sok regiszterrel a regiszterek típusai: Input, Output és Working (munka-)regiszterek, minden típus regiszterei 0-tól indexeltek minden regiszter egy nemnegatív egész számot tartalmaz címzési módok: k konstans I [k], O[k], W [k] direkt W [W [k]], W [I [k]] stb. indirekt

A RAM gép RAM gép program: utasítások egy véges sorozata minden utasítás rendelkezik egy sorszámmal (egy sorszám legfeljebb egy utasításhoz tartozhat... ) elemi műveletek: := értékadás (bal oldalon nem szerepelhet konstans) +, összeadás, kivonás (a b eredménye 0, ha a < b) JZ r, l ha r == 0, ugrás az l. sorszámú utasításra Halt, Accept, Reject megállás a programszámláló (PC) pozitív egész, 0-ról indul a gép egy lépésben végrehajtja azt az utasítást, melynek sorszáma a PC tartalma a feltételes ugrást kivéve minden lépés után eggyel nő a PC ha nincs ilyen sorszámú utasítás, a számítás megáll

A RAM gép a számítás tetszőleges pillanatában csak véges sok regiszter értéke nem 0 inicializálás: az input az I [1], I [2],..., I [m] számsorozat, ahol I [m + 1] az első 0-t tartalmazó input regiszter a többi regiszter tartalma 0 az output Accept/Reject, ha a megállás egy Accept/Reject utasítás végrehajtásakor következett be az O[1], O[2],..., O[k] számsorozat, ahol O[k + 1] az első 0-t tartalmazó output regiszter, egyébként Az M Ram gép az a 1,..., a m inputon számított outputját M (a 1,..., a m ) jelöli; ha M nem áll meg ezen az inputon, annak jele M (a 1,..., a m ) =.

Feltételek, ugrások if L == R goto Y 1. X := L + 1 2. X := X R 3. if X == 0 goto 6 4. X := X 1 5. if X == 0 goto Y ahol X egy másra nem használt munkaregiszter. Feltétel nélküli ugrás, <, >,, relációk szerinti feltételek hasonló módon

Stack memória, függvényhívások Ha egy SP munkaregisztert (pl W [0]-t) kinevezünk stack pointernek, és függvényeinket mindig rögzített paraméterszámmal definiáljuk, akkor lokális változókat használó rekurzív (most: önmagukat hívó ) függvényeket is írhatunk a megszokott módon W [SP] := k, ahol k az a programsor, ahová a függvényhívás után vissza kell térnünk SP egyesével növelése mellett a paramétereket sorban bemásoljuk W [SP]-be ugrunk a függvény belépési pontjára a függvény a verem tetején megtalálja a paramétereit, a saját lokális változóit ezek tetejére hozza létre visszatéréskor a megfelelő értékkel (paraméterszám+lokális változók száma) csökkenti SP-t és a megfelelő, a veremben letárolt címre ugrik vissza

Heap memória is kell? A munkaregiszterek kettéosztásával (pl. páratlan sorszámúak a stack, párosak a heap memóriához tartoznak) többféle memóriát is lehet kezelni kinevezünk egy regisztert heap counternek dinamikus memóriafoglalásnál visszaadjuk a heap counter értékét mint címet és megnöveljük a heap countert a foglalni kívánt mérettel memória-felszabadítás: nincs rá szükség

Strukturált programozás 9 while F do (R) 1. if F == 0 goto 4 2. R 3. goto 1 do (R) while F 1. R 2. if F == 0 goto 4 3. goto 1 for i := 1... n do (R) 1. i := 1 2. while i n do ( 3. R 4. i := i + 1 )

Aritmetika Legmagasabb bit function high(n) if n == 0 then return 0 a := 1 while a + a n do a := a + a return a Paritás function odd(n) a := 0 while a n do n := n a a :=high(n) if a == 1 then return 1 return 0

Aritmetika 11 Felezés Mint a legmagasabb bit, de az utolsó duplázást nem végezzük el Szorzás function mult(a,b) r := 0 while b > 0 do if odd(b) then r := r + a b := b/2 a := a + a return r

Aritmetika 12 Duplázás / shift left R[i] := R[i] + R[i] 2 k előállítása Inicializálás 1-gyel, majd k darab shift left k lépés (!) Az {1,..., k} halmaz részhalmazaival végzett műveletek k darab regiszterben, mindegyikben 0 vagy 1 a karakterisztikus függvénynek megfelelően elem beszúrása, törlése, lekérdezése konstans időben

Problémák eldöntése Definíció Eldöntési problémán egy tetszőleges L N halmazt értünk (azaz számsorozatok egy halmazát). Definíció Az M Ram-gép eldönti az L problémát, ha tetszőleges I = a 1,..., a m inputra { Accept, ha I L; M (I ) = Reject, egyébként. Definíció Az L probléma eldönthető, ha van őt eldöntő Ram-gép. Definíció R jelöli az összes eldönthető probléma osztályát.

Az input mérete és a futásidő 14 Futásidő egy adott inputon: lépésszám Az M Ram gép időigénye az a 1,..., a m inputon a megállásig végrehajtott utasítások száma, ha M megáll a 1,..., a m -en; egyébként a gép nem áll meg és időigénye végtelen Az input mérete Az a 1,..., a m input mérete az a i számok bináris reprezentációinak hosszának összege (azaz m (1 + log a i )). i=1 Általában n jelöli az input hosszát. A gép időkorlátja Az M Ram gép időkorlátja az f (n) : N N függvény, ha tetszőleges n méretű inputon legfeljebb f (n) lépésben megáll.

A P osztály 15 Definíció P jelöli az összes polinomidőben eldönthető probléma osztályát, azaz melyek eldönthetőek O(n k ) időkorlátos Ram-géppel, valamely konstans k-ra. Megjegyzés Ha Ram-gép helyett Turing-géppel definiálnánk az R és a P osztályokat, akkor is ugyanezeket az osztályokat kapnánk: a bonyolultságelmélet független a választott architektúrától. (Mindaddig, amíg az architektúra realisztikus.) Megjegyzés A továbbiakban problémáink inputjainak nem csak számsorozatokat, de gráfokat és egyéb véges matematikai struktúrákat is megengedünk; ez nem gond, mert minden ilyen struktúra kódolható számsorozattal.

Polinom időben eldönthető problémák Elérhetőség Adott: egy G = (V, E) irányított gráf. Feltehetjük, hogy V = {1, 2,..., n}. Kérdés: létezik-e 1-ből n-be vezető irányított út? Módszer: 1 S := {1}. 2 Jelöljük meg az 1 csúcsot. 3 Amíg S nem üres: 1 Választunk egy i S csúcsot. 2 S := S {i}. 3 j = 1..n: Ha (i, j) E és j nem megjelölt, akkor S := S {j} és jelöljük meg j-t. Ha n megjelölt csúcs, adjunk Accept választ, különben adjunk Reject választ.

Polinom időben eldönthető problémák 17 Néhány kimaradt részlet A bemenet megadása pl. szomszédsági mátrix (Függ a modelltől, de lényeges szerepet nem játszik.) S reprezentálása sor: szélességi keresés verem: egyfajta mélységi keresés Hatékonyság A mátrix minden elemét legfeljebb egyszer használjuk fel. Ha az egyszerű műveletek (S egy elemének kiválasztása, megjelölése, stb.) konstans időigényűek, akkor O(n 2 ).

Függvényproblémák 18 Függvényprobléma egy tetszőleges f : N N leképezés. Az M Ram-gép az f függvényproblémát számítja ki, ha M (I ) = f (I ) tetszőleges I inputra. Az f függvényprobléma rekurzív, ha van őt kiszámító Ram-gép. Megjegyzés Mint korábban, a rekurzív függvények osztálya sem változik, ha Ram-gép helyett (például) a Turing-gép lenne a választott architektúra.

Az utazóügynök probléma 19 Tsp Adott: az 1, 2,..., n városok és bármely két i, j város távolsága: d i,j. Kérdés: találjunk egy, az összes várost pontosan egyszer érintő legrövidebb körutat. Eldöntési változata: Tsp(E). Triviális módszer: az összes (n 1)! 2 lehetséges körút megvizsgálásával. Dinamikus programozással: O(2 n n 2 ) időigény Nem ismert, hogy Tsp megoldható-e polinom idejű algoritmussal. (NP-teljes probléma.)... szorgalmi verseny feladat, http://www.inf.u-szeged.hu/~szabivan/pic/bonyelm13/

Melyik a nehezebb? 20 Maze vs Sokoban

Turing-visszavezetések Legyenek A és B eldöntési problémák. B legalább olyan nehéz, mint A, ha létezik olyan hatékony módszer, azaz f rekurzív függvény, mely az A tetszőleges x bemenetéhez hozzárendeli a B egy f (x) bemenetét (példányát) úgy, hogy az A-nak x akkor és csak akkor igen példánya, ha B-nek f (x) igen példánya. Jelben: A R B, A Turing-visszavezethető (vagy rekurzívan visszavezethető) B-re. Ekkor: ha van egy B-t eldöntő algoritmusunk, akkor A-ra is van: function A(x) return B(f (x)); így tehát ha A R B és A-ról tudjuk, hogy eldönthetetlen, akkor B is az kell legyen.

Hatékony visszavezetés 22 Az f függvényre további megszorításokat teszünk. Definíció Azt mondjuk, hogy az A probléma (polinomidőben) visszavezethető a B problémára, ha létezik olyan polinomidőben kiszámítható f függvény, hogy minden x bemenetre x A f (x) B. Jelben: A P B.

Hamilton-út P Tsp(E) Hamilton-út Input: G irányítatlan gráf. Output: van-e G-ben Hamilton-út (minden csúcsot pontosan egyszer érintő út)? Példa Hamilton-út visszavezethető Tsp(E)-re. d 1 2 3 4 5 1 0 1 2 1 1 2 1 0 1 1 2 3 2 1 0 2 1 4 1 1 2 0 2 5 1 2 1 2 0 Tehát: d i,j = 1, ha (i, j) él volt G-ben, 2 egyébként; a célérték N + 1, ahol N a városok száma. Ekkor ha van Hamiltonút G-ben, annak összköltsége N 1; a két végpontját összekötve (ennek 23

Párosítás P Sat Párosítás Sat Input: G = (V, E) páros gráf. Output: van-e G-ben teljes párosítás? Input: konjunktív normálformájú (ítéletkalkulus-beli) formula. Output: kielégíthető-e? A visszavezetés Minden (u, v) E élhez rendelünk egy x u,v logikai változót. Intuíció: x u,v akkor 1, ha (u, v) párosításbeli él, 0 egyébként. Minden u csúcsra felírjuk, hogy legalább egy rá illeszkedő élt kiválasztunk...... és azt is, hogy legfeljebb egyet. Ez minden.

Párosítás P Sat Példa (x 1,1 x 1,2 ) (x 2,2 x 2,4 ) x 3,2 (x 4,2 x 4,3 x 4,5 ) (x 5,4 x 5,5 ) x 1,1 (x 1,2 x 2,2 x 3,2 x 4,2 ) x 4,3 (x 2,4 x 5,4 ) (x 4,5 x 5,5 ) ( x 1,1 x 1,2 ) ( x 2,2 x 2,4 ) ( x 4,2 x 4,3 ) ( x 4,2 x 4,5 ) ( x 4,3 x 4,5 ) ( x 5,4 x 5,5 ) ( x 1,2 x 2,2 ) ( x 1,2 x 3,2 ) ( x 1,2 x 4,2 ) ( x 2,2 x 3,2 ) ( x 2,2 x 4,2 ) ( x 3,2 x 4,2 ) ( x 2,4 x 5,4 ) ( x 4,5 x 5,5 )

Visszatérve... 26 Maze P Sokoban Jobb alsó sarok mellé rakni az egyetlen ládát, amellé a lyukat. Nem ismert, hogy Sokoban P Maze (mely esetben egyforma nehezek ) vagy sem.

27 Összefoglalás Megismertük a RAM gépet és az M(a 1,..., a m) = Accept/Reject/y/ jelölést. Láttuk, hogy RAM gépen megoldható a strukturált programozás. Ezért innentől a programkódjainkban pszeudokódot használunk. Megismertük, mi az eldöntési probléma; mikor dönt el egy program egy problémát; mikor nevezünk egy problémát eldönthetőnek. R: az eldönthető problémák osztálya. Program időigénye egy inputon: a megállásig elvégzett elemi műveletek száma. Az input mérete: n = m i=1 (1 + log a i ). Program időkorlátja f (n), ha minden n méretű inputon max f (n) az időigénye. P: a polinomidőben eldönthető problémák osztálya. Hogy RAM- vagy Turing-gépen, az mindegy. Megismertük az Elérhetőség problémát. Az f függvény rekurzív, ha algoritmikusan kiszámítható. Megismertük a Tsp és a Tsp(E) problémákat. Rekurzív visszavezetés: választartó rekurzív inputkonverzió. Hatékony visszavezetés: választartó hatékony inputkonverzió. Megismertük a Hamilton-Út problémát. Hamilton-Út Tsp(E). Megismertük a Párosítás és a Sat problémákat. Párosítás Sat.