Savitchin lause

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 24. huhtikuuta 2021 tarkistetusta versiosta . vahvistus vaatii 1 muokkauksen .

Savitchin lause (1970):

NSPACE (f(n)) ⊆ DSPACE (f²(n)).

Eli jos ei-deterministinen Turingin kone voi ratkaista ongelman käyttämällä f ( n ) muistia, niin deterministinen Turingin kone voi tehdä sen muistin neliölle.

Seuraukset

Käytännön sovellus

Todiste:
Harkitse Turingin konetta, jossa on tulo ja työnauha. Sen konfiguraatio voidaan koodata seuraavasti: koodaa työnauhan sijainti ja sisältö (vie muistin), syöttönauhan sijainti (vie muistin). Siitä lähtien kokoonpanon koko on .

Päästää . Sitten on ei-deterministinen Turingin kone, joka tunnistaa tämän kielen.

Harkitse aputoimintoa, joka laskee mahdollisuuden siirtyä kokoonpanosta konfiguraatioon enintään siirtymissä:

Tavoittavuus (I, J, k): jos (k = 0) palautus (IJ) tai (I = J) // tietue (IJ) tarkoittaa mahdollisuutta siirtää MT konfiguraatiosta I kokoonpanoon J yhdessä vaiheessa else for (Y) // luettele välikokoonpanot, jos Reach(I, Y, k-1) ja Reach(Y, J, k-1) palauttavat tosi return false

Tällä toiminnolla on rekursion syvyys, jokaisella rekursiotasolla se käyttää muistia nykyisten konfiguraatioiden tallentamiseen.

Harkitse Turingin konetta, joka tunnistaa kielen. Tällä koneella voi olla kokoonpanoja. Tämä selitetään seuraavasti. Olkoon siinä nauhaaakkosten tilat ja symbolit. Erilaisten viivojen määrä, jotka voivat näkyä työnauhalla. Syöttönauhan pää voi olla yhdessä asennoista ja yhdessä työnauhasta. Siten kaikkien mahdollisten kokoonpanojen kokonaismäärä ei ylitä .

Tarkastellaan funktiota, joka tietyllä sanalla tarkistaa, kuuluuko se kieleen:

Tarkista (x, L): ( T) // toista hyväksyviä tiloja sisältävien kokoonpanojen yli, jos Reach(S, T, ) palauttaa tosi return false

Jos sana kuuluu kieleen, se hyväksytään, koska kaikki mahdolliset pääsyreitit otetaan huomioon. Tämä saadaan funktiolle meille määritetystä rekursiosta. Ja jos sanaa ei sallita per askel (kaikkien mahdollisten kokoonpanojen lukumäärä), se on taatusti kielletty. Tämän seurauksena funktiolla on rekursion syvyys , jokaisella rekursiotasolla käytetään muistia. Sitten kaikki tämä toiminto käyttää muistia.

Kirjallisuus