Algoritmusok bonyolultsága Gáspár Merse Előd Györgyi Géza féle statisztikus fizika szeminárium 2004.

Slides:



Advertisements
Hasonló előadás
Készítette: Kosztyán Zsolt Tibor
Advertisements

A digitális számítás elmélete
Oszthatósággal kapcsolatos feladatok pszeudokódban.
Események formális leírása, műveletek
GRIN: Gráf alapú RDF index
Készítette: Kosztyán Zsolt Tibor
Kiszámíthatóság, rekurzív függvények
Algebrai struktúrák.
Másodfokú egyenlőtlenségek
KÉSZÍTETTE: Takács Sándor
Összefoglalás Hardver,szoftver,perifériák Memóriák fajtái
Programozási tételek, és „négyzetes” rendezések
Kódelmélet.
A digitális számítás elmélete
2006. február 17. Valószínűségszámítás és statisztika II. Telefonos feladat Egy kalapban van két korong, az egyiknek mindkét oldala piros, a másiknak.
Függvények Egyenlőre csak valós-valós függvényekkel foglalkozunk.
Matematika és Tánc Felkészítő tanár: Komáromi Annamária
Determinisztikus programok. Szintaxis: X : Pvalt program változók E : Kifkifejezések B : Lkiflogikai kifejezések C : Utsutasítások.
Kötelező alapkérdések
Kalman-féle rendszer definíció
Illeszkedési mátrix Villamosságtani szempontból legfontosabb mátrixreprezentáció. Legyen G egy irányított gráf, n ponton e éllel. Az n x e –es B(G) mátrixot.
Illés Tibor – Hálózati folyamok
Prímtesztelés Témavezető: Kátai Imre Komputeralgebra Tanszék Nagy Gábor:
Dominó probléma (emlékeztető)‏
Euklidészi gyűrűk Definíció.
Csoport részcsoport invariáns faktorcsoport részcsoport
Gyűrűk Definíció. Az (R, +, ·) algebrai struktúra gyűrű, ha + és · R-en binér műveletek, valamint I. (R, +) Abel-csoport, II. (R, ·) félcsoport, és III.
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 
Halmazok, relációk, függvények
MATEMATIKA e-tananyag 9. osztály
Algoritmizálás Göncziné Kapros Katalin humaninformatika.ektf.hu.
Ideális kontinuumok kinematikája
A digitális számítás elmélete
A digitális számítás elmélete
A digitális számítás elmélete
Determinisztikus véges automaták csukva nyitva m s kbsm csukva nyitva csukva nyitva csukvanyitva 1. Példa: Fotocellás ajtó s b m m= mindkét helyen k= kint.
Fuzzy rendszerek mérnöki megközelítésben I
Lineáris algebra Mátrixok, determinánsok, lineáris egyenletrendszerek
Integrálszámítás Mire fogjuk használni az integrálszámítást a matematikában, hova szeretnénk eljutni? Hol használható és mire az integrálszámítás? (már.
Készülj az érettségire
A számfogalom bővítése
Számítástudomány alapjai
Algoritmusok bonyolultsága és kommunikációs bonyolultság Gáspár Merse Előd fizika szeminárium 2004 szeptember Algoritmusok bonyolultsága és kommunikációs.
*** HALMAZOK *** A HALMAZ ÉS MEGADÁSA A HALMAZ FOGALMA
Hálózati réteg.
VÉGES AUTOMATA ALAPÚ TERVEZÉSI MODELL
Alapsokaság (populáció)
Binomiális eloszlás.
Vektorterek Definíció. Legyen V Abel-csoport, F test, továbbá
A Turing-gép.
1. MATEMATIKA ELŐADÁS Halmazok, Függvények.
Lineáris algebra.
Műveletek, függvények és tulajdonságaik Mátrix struktúrák:
Ismerkedjünk tovább a számítógéppel
Dodekaéder Hamilton köre
A MATEMATIKA FELÉPÍTÉSÉNEK ELEMEI
Valószínűségszámítás II.
Hibajavító kódok.
Programozási alapismeretek 8. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 8.2/  További programozási.
előadások, konzultációk
Halmazok Érettségi követelmények:
Adalékok egy véges összegzési feladathoz
Kontinuum modellek 1.  Bevezetés a kontinuum modellekbe  Numerikus számolás alapjai.
Mediánok és rendezett minták
Számítógépes algoritmusok
P és NP teljes problémák
A Számítástudomány alapjai A Számítógépek felépítése, működési módjai
Számításelmélet 7.
Absztrakt problémák Q  I  S, az absztrakt probléma kétváltozós reláció az esetek (I) és a megoldások (S) halmazán Példa: legrövidebb út Eset: gráf és.
Előadás másolata:

Algoritmusok bonyolultsága Gáspár Merse Előd Györgyi Géza féle statisztikus fizika szeminárium 2004

A bonyolultságelmélet alapvető részei algoritmus, idő, tár stb. pontos fogalma algoritmus, idő, tár stb. pontos fogalma matematikai gép különböző modelljei erőforrások korlátozása –> erőforrások korlátozása –> megoldható feladatok körének szűkülése –> bonyolultsági osztályok legfontosabb algoritmusok erőforrás-igényei? legfontosabb algoritmusok erőforrás-igényei? hatékony algoritmusok arra, hogy fontos feladatokról hatékony algoritmusok arra, hogy fontos feladatokról eldönsük melyik bonyolultsági osztályba tartoznak

„negatív eredmények” bizonyítása: „negatív eredmények” bizonyítása: egyes feladatok nem oldhatók meg bizonyos erőforrás- korlátozások mellett (bonyolultsági osztályok különbözőek-e, üresek-e?) „negatív eredmények” (bonyolult problémák és struktúrák) felhasználása: „negatív eredmények” (bonyolult problémák és struktúrák) felhasználása: véletlen számok generálása, kommunikációs protokollok, titkosírások (kriptográfia), adatvédelem

A matematikai gép különböző fajtái Véges automata (bonyolultságelmélet számára túlságosan primitív) Véges automata (bonyolultságelmélet számára túlságosan primitív) Turing-gép (megalkotója Turing angol matematikus még a programvezérlésű számítógépek előtt, 1936) Turing-gép (megalkotója Turing angol matematikus még a programvezérlésű számítógépek előtt, 1936) Matematikailag tiszta, de leírása nehézkes, ezért inkább elméleti vizsgálatokban használjuk. Turing-gépen minden számítás elvégezhető, ami bármilyen más azóta definiált matematikai gépen. A valódi számítógépektől több vonatkozásban eltér, pl. memóriája nem közvetlen elérésű.

RAM-gép (Random Acces Machine) RAM-gép (Random Acces Machine) A memória tetszőleges rekesze egy lépésben elérhető. A valódi számítógépek leegyszerűsített modellje azzal az absztrakcióval, hogy memóriája korlátlan, és minden memóriarekeszében tetszőlegesen nagy egész tárolható. RAM-gépen ugyanazok a függvények számíthatók ki, mint Turing-gépen. Logikai hálózatok Logikai hálózatok Rögzített méretű bemenet esetén minden függvény kiszámítható logikai hálózattal, de egy adott hálózat csak adott nagyságú bemenetet enged meg.

Turing-gép alkotórészei k ≥ 1 két irányban végtelen szalag. Minden szalagnak van egy kitüntetett kezdőmezeje (0. mező). A mezőkre egy véges Σ ábécéből lehet jelet írni. Véges sok mező kivételével ez a jel az üres mező jele („#”) kell legyen. k ≥ 1 két irányban végtelen szalag. Minden szalagnak van egy kitüntetett kezdőmezeje (0. mező). A mezőkre egy véges Σ ábécéből lehet jelet írni. Véges sok mező kivételével ez a jel az üres mező jele („#”) kell legyen. Minden szalaghoz tartozik egy író-olvasó fej, mely minden lépésben a szalag egy mezején áll. Minden szalaghoz tartozik egy író-olvasó fej, mely minden lépésben a szalag egy mezején áll. Vezérlőegység, melynek állapotai egy véges Γ halmazt alkotnak. Ki van tüntetve egy „START” kezdőállapot és egy „STOP” végállapot. Vezérlőegység, melynek állapotai egy véges Γ halmazt alkotnak. Ki van tüntetve egy „START” kezdőállapot és egy „STOP” végállapot.

Turing-gép működése Kezdetben a vezérlőegység a START állapotban van, a fejek pedig a szalagok kezdőmezőjén. Kezdetben a vezérlőegység a START állapotban van, a fejek pedig a szalagok kezdőmezőjén. Minden lépésben minden fej leolvassa a szalagján lévő jelet, és a vezérlőegység a leolvasott jelektől és a saját állapotaától függően 3 dolgot csinál: Minden lépésben minden fej leolvassa a szalagján lévő jelet, és a vezérlőegység a leolvasott jelektől és a saját állapotaától függően 3 dolgot csinál: » átmegy egy új állapotba (ez lehet a régi is) » utasítást ad a fejeknek, hogy az adott mezőn lévő jelet fölülírják (v. speciálisan azt, hogy ne írják fölül) » minden fejnek utasítást ad, hogy lépjen jobbra v. balra egyet, vagy maradjon helyben A gép megáll, ha a vezérlőegység a STOP állapotba jut. A gép megáll, ha a vezérlőegység a STOP állapotba jut.

A Turing-gép paraméterei T = (k,Σ,Γ,φ,ψ,δ) k ≥ 1 egész k ≥ 1 egész Σ és Γ véges halmazok, # є Σ és START, STOP є Γ Σ és Γ véges halmazok, # є Σ és START, STOP є Γ φ: Γ × Σ k —> Γ φ: Γ × Σ k —> Γ ψ: Γ × Σ k —> Σ k ψ: Γ × Σ k —> Σ k δ: Γ × Σ k —> {-1,0,1} δ: Γ × Σ k —> {-1,0,1}

Megjegyzések: Σ a # jelen kívűl általában még legalább 2 jelet (0,1) tartalmaz, és általában ennyi elegendő is. Σ a # jelen kívűl általában még legalább 2 jelet (0,1) tartalmaz, és általában ennyi elegendő is. Gyakran a szalagok csak egy irányban végtelenek, és számuk szinte mindig könnyen korlátozható volna 2-re, és igen sok vonatkozásban 1-re is. Gyakran a szalagok csak egy irányban végtelenek, és számuk szinte mindig könnyen korlátozható volna 2-re, és igen sok vonatkozásban 1-re is. Bizonyos szalagokról kiköthető volna, hogy azok csak írhatók vagy csak olvashatók. Bizonyos szalagokról kiköthető volna, hogy azok csak írhatók vagy csak olvashatók. Bemeneten általában az induláskor a szalagra írt Σ ábécé beli szavakat értjük, míg kimeneten a végállapotban a szalagon lévő szavakat, vagy az utolsó szalagon lévő szót. Bemeneten általában az induláskor a szalagra írt Σ ábécé beli szavakat értjük, míg kimeneten a végállapotban a szalagon lévő szavakat, vagy az utolsó szalagon lévő szót.

Az univerzális Turing-gép gondolata Az eddigiek alapján egy lényeges különbséget vehetünk észre a Turing-gépek és a valódi programvezérlésű számítógépek között: Minden függvény kiszámításához külön Turing-gépet kell konstruálni, míg a számítógépeken elegendő megfelelő programot írni. Megmutatjuk, hogy a Turing-gépet is lehet így kezelni. Ez vezet az univerzális Turing-gép fogalmához!

Univerzális Turing-gép Legyen T = (k+1,Σ,Γ T,φ T,ψ T,δ T ) és S = (k,Σ,Γ S,φ S,ψ S,δ S ) két Turing-gép. Legyen p egy Σ ábécé beli szó. Azt mondjuk, hogy T a p programmal szimulálja S-et, ha tetszőleges x 1, x 2, …, x k szavakra T az (x 1, x 2, …, x k, p) bemenete csakkor áll meg véges számú lépésben, ha S az (x 1, x 2, …, x k ) bementen megáll, és megálláskor T első k szalagján rendre ugyanaz áll, mint S szalagjain.

A k+1 szalagos T Turing-gép univerzális a k szalagos Turing-gépekre nézve, ha bármely k szlagos Σ fölötti S Turing-géphez létezik olyan p szó (program), mellyel a T szimulálja S-et. Tétel: Minden k ≥ 1 számhoz és minden Σ ábécéhez létezik k+1 szalagú univerzális Turing-gép. Bizonyitás vázlat: A konstrukció alapgondolata az, hogy a (k + 1)-edik szalagra a szimuláló S Turing-gép működését leíró táblázatot írunk. Az univerzális Turing-gép ezen kívűl még felírja magának, hogy a szimulált S gép melyik állapotában van éppen.

A következő tétel azt mutatja, hogy nem lényeges, hogy hány szalagja van egy Turing-gépnek. Tétel: Minden k szalagos S Turing-géphez van olyan 1 szalagos Turing-gép, ami S-et helyettesíti a következő értelemben: minden Σ ábécé beli szóra S csakkor áll meg véges sok lépésben, ha T megáll ugyanerre a szóra, és megálláskor S utolsó szalagjára ugyanaz lesz írva, mint T szalagjára. Továbbá, ha S N lépést tesz, akkor T-nek O(N 2 ) lépésre van szüksége.

Jelölések Legyen Σ egy véges ábécé, mely tartalmazza a „#” jelet. Turing-gépek bemeneteként olyan szavakat engedünk meg, melyek ezt a speciális üres mező jelet nem tartalmazzák. Σ 0 := Σ – {#} Σ 0 := Σ – {#} Σ 0 * jelölje a Σ 0 fölötti szavak halmazát Σ 0 * jelölje a Σ 0 fölötti szavak halmazát Σ 0 * egy részhalmazát nyelvnek nevezzük Σ 0 * egy részhalmazát nyelvnek nevezzük

Rekurzív és rekurzíve fölsorolható nyelvek Definíció: Egy f : Σ 0 * ―> Σ 0 * függvényt kiszámíthatónak v. rekurzívnak nevezünk, ha van olyan T Turing-gép, ami bármely x є Σ 0 * bemenettel (vagyis első szalagjára x-et írva, a többit üresen hagyva) véges idő után megáll, és az első szalagjára az f(x) szó lesz írva. Definíció: Az L Σ 0 * beli nyelvet rekurzívnak hívjuk, ha karakterisztikus függvénye: f L (x) = {1, ha x є L ; 0, ha x є Σ 0 * - L} kiszámítható, ahol feltettük, hogy 0,1 є Σ 0.

Megjegyzések: Nyilvánvaló, hogy minden véges nyelv rekurzív. Nyilvánvaló, hogy minden véges nyelv rekurzív. Ha L rekurzív, akkor a komplementere: Σ 0 * - L is az. Ha L rekurzív, akkor a komplementere: Σ 0 * - L is az. Mivel kontinuum sok nyelv van, míg a Turing-gépek száma megszámlálható, nyilvánvalóan létezik nem rekurzív nyelv is! Mivel kontinuum sok nyelv van, míg a Turing-gépek száma megszámlálható, nyilvánvalóan létezik nem rekurzív nyelv is! Definíció: Egy L nyelvet rekurzíve fölsorolhatónak nevezünk, ha vagy L = Ø, vagy van olyan kiszámítható f : Σ 0 * ―> Σ 0 * függvény, melynek értékkészlete L. / Egy rekurzíve fölsorolható nyelv komplementere már nem feltétlenül rekurzíve fölsorolható! /

A rekurzív és rekurzíve fölsorolható nyelvek közötti kapcsolat Lemma: Egy L nyelv csakkor rekurzíve fölsorolható, ha van olyan T Turing-gép, melynek első szalagjára x-et írva, a gép csakkor áll le véges idő múlva, ha x є L. Tétel: Egy L nyelv csakkor rekurzív, ha mind az L nyelv, mind a Σ 0 * - L nyelv rekurzíve fölsorolható.

A megállási probléma Most megmutatjuk, hogy van rekurzíve fölsorolható, de nem rekurzív nyelv. Legyen T Turing-gép. Álljon L T mindazon x є Σ 0 * szavakból, melyekre fennáll, hogy T minden szalagjára x-et írva, a gép véges sok lépésben megáll. Állítás: Az L T nyelv rekurzíve fölsorolható. De, ha T univerzális Turing-gép, akkor L T nem rekurzív.

Mit is jelent ez? Röviden szólva: algoritmikusan nem lehet eldönteni, hogy egy univerzális Turing-gép egy adott bemenettel véges időn belül megáll-e Ezt a feladatot hívják megállási problémának. Megjegyzés: Algoritmikusan kiszámíthatónak azt nevezzük, amit Turing-gépen ki lehet számolni. Olyan determinisztikus modellt, amely több mindent tudna kiszámolni, mint a Turing-gép, még senki sem talált.

Bizonyítás Az első állítás a Lemmából következik. A második állítás bizonyításához az egyszerűség kedvéért tegyük fel, hogy T-nek 2 szalagja van. Ha L T rekurzív volna, akkor Σ 0 * - L T rekurzíve fölsorolható volna, és így megadható volna olyan 1 szalagos T 1 Turing- gép, hogy az x bemeneten csakkor áll le, ha x є Σ 0 * - L T. A T 1 szimulálható T-n úgy, hogy 2. szalagjára egy alkalmas p „programot” írunk.

Ekkor T mindkét szalagjára p-t írva, csakkor áll le, ha T 1 leáll (a szimuláció miatt). T 1 viszont csakkor áll le, ha T nem áll le ezzel a bemenettel, vagyis ha p nem eleme L T -nek. Tehát ellentmondás, hiszen L T definíciója szerint T pontosan akkor áll le, ha p eleme L T -nek. Q.E.D.

Algoritmikusan eldönthetetlen problémák Példák: Dominó-probléma Dominó-probléma Hilbert 10. problémája, avagy a diophantoszi egyenletek megoldhatóságának problémája Hilbert 10. problémája, avagy a diophantoszi egyenletek megoldhatóságának problémája (egész együtthatós n változós polinomnak van-e egész számokból álló megoldása?)

Tár és idő time T (n) a T Turing-géphez tartozó ún. időigény-függvény, mely a gép lépésszámának maximumát adja n hosszúságú bemenet esetén. time T (n) a T Turing-géphez tartozó ún. időigény-függvény, mely a gép lépésszámának maximumát adja n hosszúságú bemenet esetén. Általában a gépnek el kell olvasnia a bemenetet, ezért Általában a gépnek el kell olvasnia a bemenetet, ezért time T (n) ≥ n. space T (n) a T Turing-géphez tartozó ún. tárigény-függvény, mely a gép szalagjain azon különböző mezők maximális számát adja, melyekre a gép ír n hosszúságú bemenet esetén. space T (n) a T Turing-géphez tartozó ún. tárigény-függvény, mely a gép szalagjain azon különböző mezők maximális számát adja, melyekre a gép ír n hosszúságú bemenet esetén. Nyilván space T (n) ≥ 1.

Polinomiális Turing-gép Azt mondjuk, hogy a T Turing-gép polinomiális, ha időigénye O(f) valamely f polinomra, vagyis van olyan c > 0 konstans, hogy T időigénye O(n c ). Megjegyzés: Hasonlóan definiálhatjuk az exponenciális idejű algoritmusokat (O((2 n ) c ) időigényű valamely c > 0 konstans- ra), polinomiális tárigényű algoritmusokat (Turing-gépeket) stb.

Azt mondjuk, hogy a L Σ * beli nyelv időbonyolultsága legfeljebb f(n), ha a nyelv egy legfeljebb f(n) időigényű Turing-géppel eldönthető. A legfeljebb f(n) időbonyolultságú nyelvek osztályát DTIME(f(n))-nel jelöljük. (A „D” a determinisztikusra utal, később lesznek véletlent is használó algoritmusok.) A polinomiális Turing-géppel eldönthető nyelvek osztályát PTIME-mal vagy egyszerűen P-vel jelöljük. Hasonlóan definiálhatók a DSPACE(f(n)) nyelvosztályok és a DSPACE nyelvosztály. Nyelvosztályok

Nem-determinizmus alapgondolata Ha egy algoritmus megold egy problémát, akkor implicite arra is bizonyítékot szolgáltat, hogy a válasza helyes. Néha ez a bizonyíték sokkal egyszerűbb (rövidebb, áttekinthetőbb), mint a bizonyíték megtalálása, azaz az algoritmus futásának figyelemmel kísérése. Vizsgálhatjuk csupán a bizonyítékot annélkül, hogy törődnénk vele, hogyan lehet megtalálni.

Ha tudjuk, hogy egy feladatra adott bizonyíték helyessége sem adható meg adott időn (vagy táron) belül, akkor az algoritmus bonyolultságára is alsó becslést kapunk. Aszerint osztályozva a feladatokat, hogy milyen nehéz a válaszra a helyességét rábizonyítani, igen érdekes és Alapvető bonyolultsági osztályokat kapunk! Ez az a gondolat, melyet nem-determinizmusnak neveznek.

Nem-determinisztikus Turing-gép Egy nem-determinisztikus Turing-gép annyiban különbözik egy determinisztiustól, hogy minden helyzetében több lehet- Séges lépés is megengedett a vezérlőegység állapotának és a fejek által leolvasott jelek függvényében. Legális számolásnak nevezzük a gép legális lépéseinek egy sorozatát.

Nem-determinisztikus Turing-gép matematiai leírása T = (k,Σ,Γ,φ,ψ,δ) helyett T = (k,Σ,Γ,Φ), ahol φ: Γ × Σ k —> Γ ψ: Γ × Σ k —> Σ k δ: Γ × Σ k —> {-1,0,1} helyett Φ reláció:

NTIME(f(n)), NSPACE(f(n)) Egy nem-determinisztikus Turing-gép t időben elfogadja az x є Σ 0 * szót, ha első szalagjára x-et írva (a többire az üres szót), van olyan legális számolás ezzel a bementtel, mely legfeljebb t lépésben megáll, és megálláskor az 1. szalag 0. poziciójában „1” áll. Azt mondjuk, hogy a T nem-determinisztikus Turing-gép föl- ismeri az L Σ 0 * beli nyelvet, ha L pontosan azokból a sza- vakból áll, melyeket T elfogad (akérmekkora véges időben).

Ha ezenfelül a gép minden x є L szót f(|x|) időben elfogad, akkor azt mondjuk, hogy a gép L-et f(n) időben ismeri föl. Az f(n) időben nem-determinisztikus Turing-géppel fölismer- hető nyelvek osztályát NTIME(f(n)) jelöli. Hasonlóan definiáljuk azt, hogy egy nem-determinisztikus Turing-gép az L nyelvet s tár föl-használásával fogadja el, illetve az f(n) tárral való fölismerhetőséget. Az f(n) tárral nem-determinisztikus Turing-géppel fölismer- hető nyelvek osztályát NSPACE(f(n)) jelöli.

Co-NTIME(f(n)), co-NSPACE(f(n)) A determinisztikus osztályoktól eltérően, egy L nyelv nem- determinisztikus fölismerhetősége nem jelenti, hogy a komp- lementer nyelv (Σ 0 * - L) is fölismerhető (látni fogjuk, hogy erre minden rekurzíve fölsorolható, de nem rekurzív nyelv példa). Ezért értelmes bevezetni az alábbi nyelvosztályokat: Egy L nyelv akkor és csak akkor tartozik a co-NTIME(f(n)) ill. a co-NSPACE(f(n)) osztályba, ha a komplementer nyelv, azaz Σ 0 * - L, az NTIME(f(n)) ill. NSPACE(f(n)) osztályba tartozik.

Megjegyzések A nem-determinisztikus Turing-gép egy szituációban többféle lépést is tehet, de ezeken a lépéseken nem tételezünk föl semmilyen valószínűségeloszlást. Ha ezt tennénk, akkor randomizált Turing-gépekről beszélnénk, melyek egyébként fontos gyakorlati jelentőséggel bírnak. Tétel: A nem-determinisztikus Turing-géppel fölismerhető nyelvek pontosan a rekurzíve fölsorolható nyelvek.

A tanú Megmutatjuk, hogy az L nyelv nem-determinisztikus Turing- géppel bizonyos időben való fölismerhetősége azzal függ össze, hogy mennyire egyszerű „rábizonyítani” egy szóra, hogy L-ben van. Azt mondjuk, hogy L-nek f(n) hosszúságú g(n) idejű tanúja az L 0 є DTIME(g(n)) nyelv, ha x є L csakkor, ha van olyan x є Σ 0 * szó, hogy |y| ≤ f(|x|) és x&y є L 0 (ahol „&” egy új jel, ami az x és y szavak elválasztására szolgál).

NP, co-NP Tétel: Tetszőleges L Σ 0 * beli nyelvre az alábbi tulajdonságok ekvivalensek: L fölismerhető nem-determinisztikus Turing-gépen polinomiális időben. L fölismerhető nem-determinisztikus Turing-gépen polinomiális időben. L-nek van polinomiális hosszúságú és idejű tanúja. L-nek van polinomiális hosszúságú és idejű tanúja. A kimondott tulajdonsággal rendelkező nyelvek osztályát NP- vel jelöljük. Azon nyelvek, melyekre Σ 0 * - L є NP, alkotják a co-NP osztályt.

Megjegyzések Pontos megfogalmazás nélkül megemlítjük, hogy L є NP ek- vivalens azzal is, hogy az L nyelvnek adható a halmazelmélet axiómarendszerében olyan definíciója, hogy minden x є L szóra az az állítás, hogy „ x є L” bebizonyítható a halmazel- mélet axiómáiból |x|-ben polinomiális lépésben. Savitch tétele: PSPACE=NPSPACE.

Példák NP-beli nyelvekre Számos fontos nyelv a tanújával van megadva: Gráf összefüggősége. Tanú: n(n-1)/2 út, minden pontpárra egy-egy. Gráf összefüggősége. Tanú: n(n-1)/2 út, minden pontpárra egy-egy. Összetettség. Tanú: valódi osztó. Összetettség. Tanú: valódi osztó. Hamilton-kör létezése. Tanú: a Hamilton-kör. Hamilton-kör létezése. Tanú: a Hamilton-kör. Síkba nem rajzolhatóság. Tanú: teljes ötszög v. három- Síkba nem rajzolhatóság. Tanú: teljes ötszög v. három- ház-három-kút részgráf (Kuratowski-tétele alapján). Stb. Stb.

Polinomiális visszavezethetőség Azt mondjuk, hogy az L 1 Σ 1 * beli nyelv polinomiálisan vissza- vezethető az L 2 Σ 2 * beli nyelvre, ha van olyan polinomiális időben kiszámítható f : Σ 1 * —> Σ 2 * függvény, hogy minden x є Σ 1 * szóra x є L 1 ekvivalens f(x) є L 2 –vel. A definíció alapján a polinomiálisan visszavezethetőség tran- zitív tulajdonság. Állítás: Ha egy nyelv P-ben van, akkor minden rá polinomiáli- san visszavezethető nyelv is P-ben van. Hasonlóan NP-re.

NP-teljesség Definíció: Egy NP-beli L nyelvet NP-teljesnek nevezünk, ha minden NP-beli nyelv polinomiálisan visszavezethető L-re. Megjegyzés: Az NP-teljes nyelvek tehát a „legnehezebb” NP- beli nyelvek. Ha meg tudnánk mutatni egy NP-teljes nyelv- ről, hogy P-ben van, akkor abból következne, hogy P=NP. Észrevétel: Ha egy NP-teljes L 1 nyelv polinomiálisan vissza- vezethető egy L 2 nyelvre, akkor L 2 is NP-teljes.

Példák NP-teljes problémákra Lefogási feladat: Adott egy véges S halmaz részhalmaza- Lefogási feladat: Adott egy véges S halmaz részhalmaza- inak egy {A 1, …, A m } rendszere és egy k természetes szám. Van-e olyan legfeljebb k elemű halmaz, mely min- den A i -t metsz? Gráfok 3 színnel való szinezhetősége. Gráfok 3 színnel való szinezhetősége. Diophantoszi egyenlőtlenségrendszer megoldhatósága. Diophantoszi egyenlőtlenségrendszer megoldhatósága. Részletösszeg probléma: Adottak az a 1, …, a m és b termé- szetes számok. Van-e az {a 1, …, a m } halmaznak olyan részhalmaza, melynek összege b? Részletösszeg probléma: Adottak az a 1, …, a m és b termé- szetes számok. Van-e az {a 1, …, a m } halmaznak olyan részhalmaza, melynek összege b?

Kategorizálatlan NP-beli problémák Tapasztalati tény, hogy a legtöbb NP-beli problémáról vagy az derül ki, hogy NP-teljes, vagy az, hogy P-beli. Nem sike- rült eddig besorolni az alábbiakat: Adott természetes szám prím-e? (P?, Riemann-sejtés) Adott természetes szám prím-e? (P?, Riemann-sejtés) Adott n természetes számnak van-e k-nál nem nagyobb osztója? (várhatóan se nem P se nem NP-teljes) Adott n természetes számnak van-e k-nál nem nagyobb osztója? (várhatóan se nem P se nem NP-teljes) Két adott gráf izomorf-e? (várhatóan se nem P se nem NP- teljes) Két adott gráf izomorf-e? (várhatóan se nem P se nem NP- teljes)

Információs bonyolultság dióhéjban Alapprobléma: eldönteni egy 0-1 sorozatról, hogy véletlen-e. Durván szólva, akkor akarunk egy sorozatot véletlennek te- kinteni, ha nincs benne „szabályosság”. Itt a szabályosságot azzal fogjuk meg, hogy az a sorozat gazdaságosabb kódolá- sára adna lehetőséget, azaz a sorozat bonyolultsága kicsi volna. Ehhez definiálnunk kell az ún. információs bonyolult- ságot.

A bonyolultság definíciójának alapgondolata Egy x є Σ 0 * szó bonyolultságán a legrövidebb olyan szó (program) hosszát fogjuk érteni, mely egy Σ 0 * fölötti T univerzális Turing-gépen az x szót nyomtatja ki (azaz a programot T-n futtatva, az véges sok lépésben megáll úgy, hogy az első szalagján az x szó áll). Megjegyzés: Minden x szó kinyomtatható egy univerzális Turing-gépen. És néhány egyszerű feltevést téve a gép- re (hogy ne legyen direkt „ügyetlen” ), kiderül, hogy a bonyolultság géptől független lesz.

Kommunikációs bonyolultság (bevezető példák) 1. Példa Legyen egy űrhajónk, melynek van egy bites programja. A programot néha ellenőrizni kell, mert pl. a kozmikus sugár- zás kárt tehet benne. A bit elküldése sok idő és energia. Mit érdemes csinálni?

Első gondolat: Prímtényezőkre bontás. Sajnos nem nyerhetünk bitnél olcsóbban nem úszható meg a teljes információ visszaküldése! Sőt a prímtényezőkre való bontás nehéz és a tényezőket el is kell választani. Valamiben engedn-nk kell! Legyen ez a biztonság. Pl. 99%-os biztonságot szeretnénk. Ha véletlenszerűen választott jegyeket küldünk vissza, akkor jegyenként csak 1/ a valószínűsége annak, hogy hibás jegyre akadunk. Ezt sem érdemes!

Jó módszer: Ún. randomizált algoritmus. X az űrhajó programja Y a Földön biztonságban tárolt kód p := RANDOM PRíM є ]2,N[ X 1 := X mod p Y 1 := Y mod p Ha X 1 ≠ Y 1, akkor a program rossz! Ha X 1 ≠ Y 1, akkor a program rossz! Ha X 1 = Y 1, akkor q valószínűséggel rossz a program, le- Ha X 1 = Y 1, akkor q valószínűséggel rossz a program, le- hetséges ugyanis, hogy p | |X-Y|.

/ahol Π(N) az N-nél nem nagyobb prímek száma/ /ahol Π(N) az N-nél nem nagyobb prímek száma/ Mekkora legyen N, hogy q kisebb legyen 0.01? Legyen |X-Y| = p 1 β1 ·p 2 β2 ·… p k βk. Legyen |X-Y| = p 1 β1 ·p 2 β2 ·… p k βk. Legrosszabb esetben minden p i = 2 és β i = 1. Legrosszabb esetben minden p i = 2 és β i = 1. Ekkor 2^(10 20 ) ≥ |X-Y| ≥ 2 k. Ekkor 2^(10 20 ) ≥ |X-Y| ≥ 2 k. Tehát k ≤ Tehát k ≤ q = k / Π(N) ≤ 0.01, azaz k ≤ 0.01 Π(N). q = k / Π(N) ≤ 0.01, azaz k ≤ 0.01 Π(N). Tehát elegendő volna, hogy ≤ 0.01 Π(N). Tehát elegendő volna, hogy ≤ 0.01 Π(N). Vagyis ≤ Π(N). Vagyis ≤ Π(N). q = |X-Y| prímosztóinak a száma / Π(N) := k / Π(N)

Prímszámtétel szerint: Π(N) ≈ N / ln(N). Tehát ln(N) ≤ N. Amiből N kb. 24 jegyű, ami 80 bitnek felel meg! (A helyett!) Ha a biztonságot 99.99%-ra növeljük, akkor ln(N) ≤ N adódik, s csak néhány bittel kell több! Sőt, számelméleti eredményeket felhasználva q-ra sokkal jobb becslés adható. Kiderül, hogy az átküldendő bitek száma 2·log(n)+konstans (n= ).

2. Példa /Nagyméretű integrált áramkörök huzalozási problémája/ Miért akarunk méretcsökkenést elérni? Gyorsaság (áram véges sebessége). Gyorsaság (áram véges sebessége). Sok huzal = hőfejlődés. Sok huzal = hőfejlődés.…

3. Példa /Manhattan-módszer/ …

A protokoll Ami az algoritmikus bonyolultság esetén az algoritmus, az a kommunikációs bonyolultság esetén a protokoll. Protokoll: Minden „játékos” számára elő van írva, hogy a bemenet és a többi játékos által üzent bitek függvényé- ben ő van-e soron (x-től függetlenül), s ha igen, akkor mit és kinek kell üzennie. A protokollt minden játékos ismeri, tehát tudják az üzenetek „jelentését” (milyen bemenetek esetén üzenhette ezt a másik).

Triviális protokoll: Az egyik fél elküldi az általa ismert bemenetet a másiknak, aki kiszámolja a kívánt eredményt, majd visszaüzeni. Kommunikációs mátrix: …

Felhasznát irodalom Lovász László: Algoritmusok bonyolultsága Lovász László: Algoritmusok bonyolultsága (egyetemi jegyzet) letölthető: Gács Péter – Lovász László: Algoritmusok Gács Péter – Lovász László: Algoritmusok Rónyai Lajos, Ivanyos Gábor, Szabó Réka: Algoritmusok Rónyai Lajos, Ivanyos Gábor, Szabó Réka: Algoritmusok Roger Penrose: A Császár új elméje Roger Penrose: A Császár új elméje (Számítógépek, gondolkodás és a fizika törvényei) Heurisztikus algoritmusok alkalmazása VLSI huzalozásra Heurisztikus algoritmusok alkalmazása VLSI huzalozásra (tudományos diákköri dolgozat) konzulensek: Recski András, Mann Zoltán