Dominó probléma (emlékeztető)

Download Report

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