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

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

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

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

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

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.

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

Bonyolultságelmélet. SZTE Informatikai Tanszékcsoport

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

Bonyolultságelmélet feladatok

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

Algoritmuselmélet 12. előadás

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

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

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

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

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

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

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.

Államvizsga kérdések a matematikus szakon, 2001.

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

Algoritmusok bonyolultsága

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

Tesztkérdések az ALGORITMUSELMÉLET tárgyból, 2001/ félév

INFORMATIKA javítókulcs 2016

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

SZAKDOLGOZAT. Major Sándor Roland

Algoritmuselmélet 2. előadás

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

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

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

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

NP-teljesség röviden

1. Bevezetés. A számítógéptudomány ezt a problémát a feladat elvégzéséhez szükséges erőforrások (idő, tár, program,... ) mennyiségével méri.

Algoritmusok bonyolultsága

A számítógépes nyelvészet elmélete és gyakorlata. Automaták

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

Adatszerkezetek 7a. Dr. IványiPéter

Algoritmusok és adatszerkezetek gyakorlat 07

Algoritmusok bonyolultsága

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

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

Kiterjesztések sek szemantikája

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

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

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

Dr. Schuster György február / 32

A Számítástudomány alapjai

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

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

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

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

Szimuláció RICHARD M. KARP és AVI WIGDERSON. (Készítette: Domoszlai László)

... S n. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak.

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

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

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

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

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI

Algoritmuselmélet 18. előadás

Dijkstra algoritmusa

Véletlen sorozatok ellenőrzésének módszerei. dolgozat

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

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

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

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.

Problémamegoldás kereséssel. Mesterséges intelligencia március 7.

Alap fatranszformátorok II

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

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

Programozási módszertan

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

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

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

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

Szkriptnyelvek. 1. UNIX shell

Formális módszerek GM_IN003_1 Program verifikálás, formalizmusok

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

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

Fibonacci számok. Dinamikus programozással

Tuesday, March 6, 12. Hasító táblázatok

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

Adatszerkezetek 2. Dr. Iványi Péter

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

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

Algoritmuselmélet 1. előadás

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

Algoritmuselmélet 7. előadás

Diszkrét matematika 2.C szakirány

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

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

BASH script programozás II. Vezérlési szerkezetek

Diszkrét matematika 2.C szakirány

Kifejezések. Kozsik Tamás. December 11, 2016

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

Programkonstrukciók A programkonstrukciók programfüggvényei Levezetési szabályok. 6. előadás. Programozás-elmélet. Programozás-elmélet 6.

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

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

BBTE Matek-Infó verseny mintatételsor Informatika írásbeli vizsga

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

Átírás:

Bonyolultságelmélet Thursday 1 st December, 2016, 22:21

Tárbonyolultság A futásidő mellett a felhasznált tárterület a másik fontos erőforrás. Ismét igaz, hogy egy Ram-program esetében ha csak a használt cellák számát vennénk alapul, irreálisan alacsony tárigény-fogalomhoz jutnánk. Cellánként Egy memóriacella igénye egy adott inputon: a benne a program futása során tárolt legnagyobb szám bináris alakjának a hossza. (Azaz 1 + log a, ha ez a maximális érték a, kivéve, ha a == 0, mely esetben 1). PLUSZ a cella címének bináris alakjának a hossza. Példa Ha a W [7] regiszterben a program futása során a legnagyobb érték 20, akkor ennek a regiszternek a tárigénye 5 (a 20 = 10100 2 string hossza) plusz 3 (a 7 = 111 2 string hossza) = 8.

Tárbonyolultság Tárigény egy adott inputon A teljes program tárigénye egy adott inputon: az összes, a futás során használt cella tárigényének összege. A két memóriamodell Amint egy cellát megcímez a program (direkt vagy indirekt címzéssel, írásra vagy olvasásra), használtnak minősül. Kivéve a következő esetet: ha a program az input regisztereket csak olvassa, az output regiszterekbe pedig csak ír, ráadásul stream módban: először O[1] kap értéket, majd O[2], O[3] stb. akkor az input és output regiszterek tárigényét nem kell bevenni a tárigénybe. (Ez az ún.,,offline vagy,,lyukszalagos eset.) (Ez megfelel annak a memóriamodellnek, mikor a hívó fél biztosítja az I/O területet: az inputot nem írhatjuk át, az outputot pedig egy output stream formájában kapjuk.)

Tárbonyolultság 4 A program tárigénye A program tárigénye az f(n) : N N függvény, ha bármely, legfeljebb n méretű inputon legfeljebb f(n) tárat használ. A probléma tárigénye Egy probléma eldönthető O(f(n)) tárban, ha van őt eldöntő, O(f(n)) tárigényű program. Ezen problémák osztályát Space(f(n)) jelöli. Példa Elérhetőség eldönthető lineáris tárban: a szélességi keresés algoritmusa egy N-csúcsú gráf esetén két, egyenként legfeljebb N méretű csúcshalmazt tárol (a már elért ill. elért és kifejtett csúcsokét), ez pl. N hosszú bitvektor alkalmazásával egy-egy regiszterben O(N) tárban megoldható.

Alapvető különbség tár és idő közt 5 A tár újrafelhasználható! Lineáris tárban...... eldönthető a Hamilton-út probléma is: ugyanazt a területet újrahasználva generáljuk a csúcsok összes permutációját... eldönthető a Tsp(E) probléma is, hasonlóképp... eldönthető a 3-Színezés probléma is: ugyanazt a területet újrahasználva generáljuk a csúcsok összes 3-színezését... Megjegyzés Nem ismert, hogy NP és Space(n) közt mi az összefüggés. Csak annyit tudunk biztosan, hogy NP Space(n). (NP zárt a visszavezetésre, Space(n) pedig mint látni fogjuk nem az.)

Nemdeterminisztikus tárbonyolultság Nemdeterminisztikus program időbonyolultságát a leghosszabb szál hosszaként definiáltuk. Nemdeterminisztikus program tárbonyolultságát egy adott inputon hasonló módon: a legtöbb tárat használó szál tárigényeként definiáljuk. A nemdeterminisztikus program tárbonyolultsága szintén akkor f(n), ha tetszőleges, legfeljebb n méretű inputon legfeljebb f(n) tárat használ. A nemdeterminisztikus programmal O(f(n)) tárban eldönthető problémák osztályát NSpace(f(n)) jelöli.

Nemdeterminisztikus tárbonyolultság Példa function nd-eler(g[1... N][1... N],s,t) u := s while u t do v := nd(1... N) //v értéke nemdet. 1 és N közti egész if G[u][v] == 0 then return False u := v return True Tárigény: nemdeterminisztikus logaritmikus: O(log n). Eldönti az Elérhetőség problémát. (Plusz egy, N-ig menő ciklusszámlálóval a végtelen ciklus elkerülhető, továbbra is logaritmikus tárat használva.)

A nevesített bonyolultsági osztályok 8 R, RE eldönthető ill. felismerhető problémák Time(f(n)), NTime(f(n)) det/nemdet. O(f(n)) időben eldönthető problémák Space(f(n)), NSpace(f(n)) det/nemdet. O(f(n)) tárban eldönthető problémák P = Time(n k ) = Time(n k ) polinomidőben eldönthető problémák k 0 NP = NTime(n k ) nemdet. polinomidőben eldönthető problémák L= Space(log n) logaritmikus tárban eldönthető problémák NL= NSpace(log n) nemdet. logtárban eldönthetőek PSPACE= Space(n k ) polinom tárban eldönthetőek NPSPACE= NSpace(n k ) nemdet. polinom tárban... EXP = Time(2 nk )...

Alapvető összefüggések 9 Alapvető összefüggések bonyolultsági osztályok közt i) TIME(f(n)) NTIME(f(n)), SPACE(f(n)) NSPACE(f(n)) ii) NTIME(f(n)) SPACE(f 2 (n)) iii) NSPACE(f(n)) TIME(k f(n) ) Ötletek Az i) pont világos.

Alapvető összefüggések NTIME(f(n)) SPACE(f 2 (n)) Tehát egy f(n) időkorlátos N nemdeterminisztikus programot lehet szimulálni f 2 (n) tárkorlátos determinisztikus programmal. Feltehetjük, hogy N-nek mindig pontosan két választása van megállásig, a 0. és az 1. A determinisztikus algoritmus: Futtatunk egy k számlálót 1-től fölfelé (ennyi lépésig szimuláljuk a nemdeterminisztikus programot). k minden értékére leszimuláljuk az összes k hosszú választási sorozatot (ez 2 k darab): ha van köztük elfogadó, elfogadjuk az inputot; ha mind elutasító, elvetjük az inputot; különben növeljük k-t és folytatjuk a ciklust. (Kimaradt részlet: t utasítás végrehajtása alatt egy Ram program O(t 2 ) memóriát használ ez pl. ismét annak a következménye, hogy a szorzás nem elemi művelet, az összeadás nem növelheti,,túlzott ütemben a változók értékét) 10

Alapvető összefüggések 11 NTIME(f(n)) SPACE(f 2 (n)), tovább A szimulálást a tárterület újrafelhasználásával tesszük (feltehetjük, hogy N offline, így az inputot a szimuláció nem rontja el). A k. menetben egy k hosszú bitvektorban tartjuk nyilván az aktuális választási sorozatot, ezt növeljük mondjuk binárisan 0-ról indítva. Mivel f(n) lépésben N is csak f 2 (n) tárat használ, a szimulációhoz elég f 2 (n) tár; mivel k f(n), a bitvektornak is elég f(n) tár.

Alapvető összefüggések NSPACE(f(n)) TIME(k f(n) ) Tehát egy f(n) tárkorlátos N nemdeterminisztikus programot akarunk determinisztikusan szimulálni. Feltehetjük, hogy N offline; elfogadás előtt közvetlenül kinullázza munkaregisztereit. Nevezzük konfigurációnak a Ram program teljes leírását a számítás egy pillanatában, miután az n hosszú (a 1,..., a n ) inputon elindítjuk: a programszámláló értéke: k 1 konstans sok lehetőség az összes nemnulla munkaregiszter aktuális tartalma (i, W [i]) párok listájának formájában: O(f(n)) bit hosszú lista, 2 O(f(n)) -féle lehetőség Összesen k 1 2 O(f(n)) = k f(n) konfiguráció.

Alapvető összefüggések NSPACE(f(n)) TIME(k f(n) ), tovább Az adott inputhoz tartozó konfigurációs gráf: a konfigurációk a csúcsok, C 1 -ből akkor vezet él C 2 -be, ha N átléphet C 1 -ből C 2 -be. A determinisztikus algoritmus: elkészítjük az inputhoz tartozó konfigurációs gráfot és azon lineáris időben megoldunk egy Elérhetőség problémát a kezdőkonfigurációból a (kinullázás miatt egyértelmű) elfogadó konfigurációba. (A gráfot nem kell előre elkészítenünk és letárolnunk, on-the-fly is számíthatjuk.) Megjegyzés Az eddigiekből NTIME(f(n)) TIME(k f 2 (n) ), de NTIME(f(n)) TIME(k f(n) ) is igaz.

A,,nevesített osztályok sorrendje Következmény L NL P NP PSPACE EXP( R) Bizonyítás L NL (i) NL = NSPACE(log n) TIME(k log n ) P (iii) P NP (i) NP = NTIME(n k ) SPACE(n k ) = PSPACE (ii) PSPACE = SPACE(n k ) TIME(2 nk ) = EXP (iii) A központi kérdés, hogy P = NP vagy sem, de a fentiek közül egyiket se tudjuk, hogy egyenlőség-e!

A hierarchia tételek 15 Megengedett függvények Az f : N N monoton növő függvény megengedett, ha létezik olyan program, ami az 1 n 1 f(n) függvényt számítja ki (n darab egyesből f(n) darab egyest készít) O(f(n)) tárban és O(n + f(n)) időben. Időhierarchia tétel Ha f(n) > n megengedett függvény, akkor ( TIME o ( f(n) ) ) TIME(f(n)). log f(n) Emiatt pl. P EXP. Tárhierarchia tétel Ha f(n) > log n megengedett ( függvény, ) akkor SPACE o(f(n)) SPACE(f(n)). Emiatt pl. L PSPACE.

16 Összefoglalás Megismertük egy RAM program tárigény-fogalmát, az offline programot és a SPACE(f(n)), NSPACE(f(n)) osztályokat. Néztünk néhány SPACE(n)-beli problémát. Megneveztük az L, NL, PSPACE, NPSPACE és EXP osztályokat. Láttuk, hogy Elérhetőség NL. Megmutattuk, hogy TIME(f(n)) NTIME(f(n)). Megmutattuk, hogy SPACE(f(n)) NSPACE(f(n)). Megmutattuk, hogy NTIME(f(n)) SPACE(f 2 (n)). Megmutattuk, hogy NSPACE(f(n)) TIME(k f(n) ). Ezekhez megismertük egy program adott inputhoz definiált konfigurációs gráfját. Megmutattuk, hogy L NL P NP PSPACE EXP. Kimondtuk az idő- és a tárhierarchia tételt.