Transcript Dominó probléma (emlékeztető)
Dominó probléma (emlékeztető)
Adott egy dominó készlet Minden dominó négyzet alakú Minden oldalukra egy természetes szám van írva Ki van tüntetve egy kezdő dominó Van továbbá véges sok típusú dominó mindegyikéből végtelen sok darab
Dominó probléma (emlékeztető)
Feladat: rakjuk ki a síkot ezen dominókkal úgy, hogy: A dominókat nem szabad elforgatni A kitüntetett kezdő dominónak szerepelni kell Az egymáshoz illeszkedő oldalakon azonos szám kell szerepeljen
Dominó probléma (emlékeztető)
L KIRAK azon szavak melyek: Dominó készletet kódolnak A kódolt dominó készlettel ki lehet rakni a síkot L NEMRAK azon szavak melyek: Dominó készletet kódolnak A kódolt dominó készlettel nem lehet kirakni a síkot Tétel: L NEMRAK rekurzív felsorolható Azon múlt, hogy elég ha bármekkora véges részt ki tudunk rakni
Dominó probléma (emlékeztető)
Megjegyzés: L KIRAK és L NEMRAK nem egymás komplementerei, de uniójuk rekurzív nyelv. (Dominót kódoló szavak nyelve.) Mivel rekurzív (felsorolható) nyelvek uniója is az, ezért ha L KIRAK nem rekurzív, és L NEMRAK rekurzív felsorolható, akkor L nem lehet rekurzív felsorolható sem KIRAK
Dominó probléma
Tétel: L KIRAK NEM rekurzív Bizonyítás alap ötlete: Minden Turing géphez készítünk egy olyan dominó készletet úgy, hogy a sík pontosan akkor rakható ki ezzel a készlettel, ha a TG nem áll le az üres inputon Ha ez meg van, akkor L KIRAK rekurzivitásából következne a megállás probléma eldönthetősége, amiről viszont tudjuk, hogy nem az!
Dominó készlet konstrukciója
Számok helyett jeleket fogunk írni Nem gond: helyettesíthető véges sok természetes számmal.
Feltehető, hogy csak egy szalagos a gép Az is feltehető, hogy a gép soha nem tér vissza a start állapotba
Egy futás elejének megfelelő kirakás
A sorok felelnek meg a gép lépeseinek Az alsó és felső élek tárolják a szalagon lévő karaktereket A fej helyénél még az alsó és felső élek az állapotot is tárolják.
A fejmozgást átviteli dominók kódolják
Dominó készlet konstrukciója
Kirakás vs. futás
Ha a TG nem áll le, akkor a felső fél síkot ki tudjuk rakni. Alsó fél síkot tükrözött dominókkal oldjuk meg Alternatív lehetőség, hogy csinálunk olyan dominókat amik egyformák, de csak a 0.sor alá tudunk belőlük rakni.
A a sík kirakható akkor ez a kirakás a dominók konstrukciója miatt egyértelmű, és a felső fél sík az üres inputon való nem leálló futást ír le.
További eldönthetetlen nyelvek
Akkor is eldönthetetlen a dominó probléma, ha nem jelölünk ki kezdő dominót, de a bizonyítás jóval bonyolultabb.
Diophantoszi egyenlet: Adott egy egész együtthatós n változós p(x1, ..., xn) polinom, döntsük el, hogy van-e a p = 0 egyenletnek egész számokból álló megoldása?
Csoportok szóproblémája: Adott az a 1 , . . . , a n csoportban n + 1 szó: α 1 , . . . , α n az α 1 , . . . , α n szimbólumok által generált szabad és β. Benne van-e β által generált részcsoportban?
Poliéderek összehúzhatósága
Definíciók: Legyenek
e
1
. . . , e
n az
n dimenziós
egységvektorai. euklideszi tér A {0
, e
1
, . . . , e n }
pontok konvex burkát
standard szimplexnek
nevezzük.
A szimplex
lapjai
a {0
, e
1
, . . . , e n }
halmaz részhalmazainak konvex burkai.
Poliédernek
nevezzük a standard szimplex lapjai tetszőleges halmazának az egyesítését.
Probléma: Összehúzható-e egy poliéder folytonosan egy ponttá?
Ez is eldönthetetlen!
Post szóproblémája
Definíciók: Szótárnak nevezünk véges sok (u i , v i ); 1 ≤ i ≤ N párt, ahol minden i-re u i * 0 és v i * 0 Probléma: A bemenet egy szótár. Van e olyan mondat, ami mindkét nyelven ugyanazt jelenti (ha a betűközöktől eltekintünk)? Precízebben: van-e az indexek olyan i 1 , i 2 , . . . , i K sorozata, hogy u i1 u i2 . . . u iK = v i1 v i2 . . . v iK ?
Ez is eldönthetetlen!
Idő és tár korlátos nyelvosztályok
Probléma 1: a gyakorlatban hiába áll le egy TG ha túl későn ad választ.
Van olyan probléma ami eldönthető, de a leggyorsabb algoritmus is 2 2^n ideig fut legrosszabb esetben. Probléma 2: a gyakorlatban nem végtelen a szalag. (Tárterület)
Idő és tár korlátos nyelvosztályok
Továbbiakban legyen adott a T Turing gép a rögzített ábécé felett. Feltesszük, hogy van egy csak olvasható bemeneti, és egy csak írható kimeneti szalag. (Ezek majd a tárkorlátosság miatt kellenek.) Ezeken kívül még legyen legalább egy munka szalag is ami irható és olvasható is.
Idő és tár korlátos nyelvosztályok
Időigény Az a time T (n) függvény, mely a gép lépésszámának maximumát adja meg n hosszúságú bemenet esetén Sokszor kényelmes feltenni, hogy a gép az inputot mindenképp végig olvassa. Ekkor time T (n) ≥ n Tárigény space T (n) gép szalagjain azon különböző mezők maximális száma az n hosszúságú bemenetek esetén melyekre a gép írt A bemenet által elfoglalt helyet tehát nem számítjuk ide!
space T (n) ≥ 1
Idő és tár korlátos nyelvosztályok
Egy TG polinomiális ha: time T (n) = O(n c ) (Alkalmas C > 0 val) Egy TG exponenciális ha: time T (n) = O(2 n^c ) (Alkalmas C > 0 val)
Idő és tár korlátos nyelvosztályok
Egy L * 0 ha a nyelv egy legfeljebb ilyen időigényű TG-vel eldönthető.
nyelv időbonyolultsága legfeljebb f(n) P = PTIME = U ∞ n=1 DTIME(c n ) Egy L * 0 nyelv tárbonyolultsága … … DSPACE(f(n)) Az ilyen nyelvek osztályát jelölje DTIME(f(n)) PSPACE = … Gyakorlathoz RAM gép közelebb áll, de a fontos nyelvosztályok a TG-re és RAM-ra egybe esnek.
Polinomiális idő
A gyakorlatban főleg a polinomiális algoritmusokat szeretjük alkalmazni.
Rengeteg ilyen algoritmust tanultunk korábban! Néhány a teljesség igénye nélkül: Összefüggőség-teszt Legrövidebb út keresése Maximális folyam keresése Összeadás, szorzás, osztás Euklideszi algoritmus Gauss elimináció
Általános tételek a tár- és időbonyolultságról
Ha egy L nyelvhez van olyan L et eldöntő Turing gép, melyre minden elég nagy n-re time T (n) ≤ f(n), (ahol f(n) ≥ n minden n-re), akkor olyan L et felismerő Turing-gép is van, melyre ez az egyenlőtlenség minden n re fönnáll.
Kis n esetén az eldöntést a vezérlö egységre bizzuk.
Lineáris gyorsítási tétel
Tétel: Minden T Turing-géphez és c > 0-hoz található olyan S Turing-gép, mely ugyanazt a nyelvet dönti el, és melyre time S (n) ≤ c time T (n) + n Bizonyítás Egyszerűség kedvéért csak 1 szalagosra biz.
Feltehető tovább, hogy c=1/p valamilyen p egészre.
Felveszünk 2p-1 „induló” és 2p-1 „munka” szalagot, ezeket (1 p) től (p-1) számozzuk.
Az i sorszámú szalag j-edik mezejének indexe legyen a j(2p − 1) + i szám.
A t indexű mező felel majd meg a t-edik mezőnek az eredeti gép szalagján Legyen még egy kimeneti szalag is.
Lineáris gyorsítási tétel (biz.folyt.)
S az első fázisban átmásolja az inputot a bemeneti szalagról az induló szalagokra. (A t. mezőt a bemeneti szalagon a t-indexű indulószalag mezőre.) A művelet végén minden fejet vissza állit az alap helyzetbe. Továbbiakban a bemeneti szalaggal nem törődünk
Lineáris gyorsítási tétel (biz.folyt.)
S a második fázisban minden lépésével T p egymást követő lépését szimulálja
Cél:
Az S k. lépésében az álljon a t-indexű mezőn, ami a t. mezőn ált T-ben pk lépés után.
Vezérlő egység állapotába kódoljuk: • • A k szalag közül melyik szalagon van az a mező amelyiknél a fej állna T-ben.
Mi lenne T belső állapota ebben a lépésben A fejek úgy állnak, hogy T-ben a fej jobb ill. bal oldalán lévő p mezőt tudják olvasni.
• Vegyük észre, hogy p lépés alatt ezt az intervallumot T olvasó felye nem hagyhatja el!
Lineáris gyorsítási tétel (biz.folyt.)
Miután olyan TG-ről beszélünk mely nyelvet fogad el, ezért a kimeneti szalagra csak egyszer ír: akkor mikor leáll, ilyenkor is 0-t vagy 1-et Ez tehát könnyen átvihető S-re.
Megjegyzések: Ha nem engedünk meg több szalagot, de megengedjük az ábécé bővítését, akkor hasonló tétel lesz igaz!
Tárra csak úgy ismert hasonló tétel, ha az ábécé-t bővítjük!
További egyszerű relációk idő- és tárbonyolultság között
DTIME(f(n)) DSPACE(f(n)) Tehát P PSPACE Biz.: k szalagos TG minden lépésben legfeljebb k új mezőre tud írni DSPACE(f(n)) f(n)>log n U ∞ c=1 DTIME(c f(n) ) ha A különböző helyzetek (ide számolva a felhasznált tárban szereplő értékeket, és a gép és a fejek állapotait is) legfeljebb c f(n) k m f(n) m a jelkészlet elemszáma
Tételek idő bonyolultsági osztályokról
1 .Téltel: Van olyan f(n) függvény, hogy minden rekurzív nyelv benne van DTIME(f(n)) osztályban.
Valahol meglepő, hiszen nagyon gyorsan kell nőjön!
↓↓↓ Pl. gyorsabban mint bármely rekurzív függvény. ↓↓↓ 2 .Téltel: Minden rekurzív f(n) függvényre van olyan rekurzív L nyelv, mely nem eleme DTIME(f(n))-nek.
Azaz bizonyos értelemben van tetszőlegesen bonyolult nyelv.
1 . tétel bizonyítása
Soroljuk fel az olyan TG-ket melyek minden bemenetre megállnak (csak megsz. sok van) Legyenek ezek T 1 , T 2 , T 3 , … Definiáljuk f-et így: f(n):=max i ≤n time Ti (n) Minden L rekurzív nyelvre van j, hogy T j eldönti, és n≥j esetén time f(n) időben dönti el.
Ti (n) ≤f(n) időben. De ekkor van olyan is, ami minden n-re
2 . tétel bizonyítása
A bizonyítás hasonlít a megállási probléma eldönthetetlenségének bizonyításához.
Feltehetjük, hogy f(n)>n Legyen T egy 2 szalagos univerzális TG, és álljon L azokból a szavakból, melyeket T mindkét szalagjára felírva T legfeljebb f(|x|) 3 lépésben megáll. L nyilván rekurzív Azt állítjuk, hogy nem dönthető el f(n) időben.
2 . tétel bizonyítása (folyt.)
Indirekt tegyük fel, hogy L DTIME(f(n)) Ekkor van Turing gép mely f(n) időben felismeri. Ebből konstruálható 1 szalagos mely c f(n) 2 időben dönti el. Módosítsuk úgy, hogy ha x le, legyen a kapott gép S L akkor ne álljon S szimulálható valamilyen p S programmal T-n.
Ekkor T az (x,p S ) bemeneten pont akkor áll meg amikor S, és ilyenkor c S c f(|x|) 2 idöben.
2 . tétel bizonyítása (folyt.)
Van n 0 hogy n ≥n 0 esetén c S c f(n) 2 < f(n) Megoldható, hogy p S hossza legalább n 0 3 legyen Mármost ha p S L, akkor: Definíció szerint mindkét szalagra p S t írva T megáll f(n) 3 lépésben p S azonban az S gépet szimulálja, és p S eleme L-nek, tehát T mindkét szalagra p S t írva az nem állhat meg Ha viszont p S nem eleme L-nek: S megáll p S f(|p S |) 3 inputon c f(|p S |) 2 időben.
időben, azaz T megáll L definíciója szerint ekkor p S L