Avgjørbarhet / Uavgjørbarhet For å kunne snakke om avgjørbarhet/uavgjørbarhet trenger vi Turingmaskiner og for å snakke om Turingmaskiner trenger vi formelle språk, og strenger og alfabeter. Pluss litt til Våre Turingmaskiner erdefinert slik M = (Q,Σ,Γ,δ): Σ Γ Q tilstandene (inkl. start ogstoppetilstanden), Σ inputalfabet, p, Γ tapesymboler (inkl. b [blank]), δ overgangsfunksjonen. Turingmaskinene jobber på strengen som står på tapen. Når maskinen starter er input en streng skrevet med alfabetet Σ, når den stopper er output skrevet med alfabetet Γ. (Σ må jo være en delmengde av Γ, input kan jo stå på tapen.) Turingmaskin: http://www.youtube.com/watch?v=e3kelemwfhy
Avgjørbarhet / Uavgjørbarhet Turingmaskin (generell) input: streng skrevet med alfabetet Σ (inputalfabetet), output: streng skrevet med alfabetet Γ (tapealfabetet). Det vil si at en Turingmaskin M egentlig er en funksjon fra strenger i Σ*tilstrengeriΓ*, vi skriver: M: Σ* Γ* som jo betyr noe ala output = M(input) med input Σ*, output Γ*. Ofte vil vi at våre Turingmaskiner bare skal svare JA eller NEI (Y/N): Turingmaskin (JA/NEI) input: streng skrevet med alfabetet Σ (inputalfabetet), output: Y eller N, Y og N må da være med i Γ (tapealfabetet). M: Σ* Y,N
Avgjørbarhet / Uavgjørbarhet Vi begrenser oss altså til å se på desisjonsproblemer (svare JA eller NEI). NårvibrukerTuringmaskinertilåløsedesisjonsproblemerberegnervialtså funksjoner av typen M: Σ* Y,N. Da vil det jo være noen strenger i Σ* som gir svaret Y, og noen som gir svaret N. Σ* Formelt språk Y N JA instanser (og NEI ) Desisjonsproblemer Avgjøre
Avgjørbarhet / Uavgjørbarhet Et formelt språk L er en samling strenger (fra et gitt alfabet). Strengene har (som regel) en slags tolkning,f.eks Hamiltonske grafer. Formelle språk svarer til problemer, nemlig å svare på om en streng er med i språket eller ei. Ser vi på eksempelet med Hamiltonske grafer, vil det formelle språket bestå av alle (strenger som beskriver) Hamiltonske grafer, det korresponderende desisjonsproblemet vil være å avgjøre om en gitt graf er Hamiltonsk eller ei (svare JA/NEI), og språket kan avgjøres av en Turingmaskin (men trolig ikke i polynomisk tid). De strengene (den input) vi svarer JA på kalles altså JA instanser (evt. positive instanser),ogdevisvarerneipåfornei instanser (negative). Det formelle språket definerer altså hva som er JA instanser for det korresponderende problemet; resten av strengene som kan lages med inputalfabetet blir NEI instanser.
3b Er følgende språk avgjørbart? L 1 = Σ* (where Σ* is the set of all possible strings over the alphabet Σ). Her skal vi altså avgjøre om inputstrengen vår er kun er laget med tegn fra et alfabet Σ. (JegantardetikkeermentatΣ skal være inputalfabetet da er jo alle strenger lovlige, men det er også en mulig tolkning, bare svar JA.) PROC check (string S) BOOLEAN isok = TRUE FOR <all s in S> DO IF <s Sigma> THEN isok = FALSE RETURN(isOK) L 1 er avgjørbart. ML1 = (Q,Σ,Γ,δ) Σ = Σ U X (maskinens inputalfabet Σ er Σ U X, hvor X er de ulovlige tegnene) Γ = Σ U b (vi kan også skrive blank på tapen, men trenger ikke andre symboler her) Q = qs, qe, h (vi klarer oss med tre tilstander, start tilstanden s er også OK tilstanden.) δ = (qs, s Σ) (qs,b,r) Leser symbol i Σ, blir i qs (OK), overskriv med blank, gå til neste. (qs, s Σ) (qe,b,r) Leser symbol ikke i Σ, går til qe (ikke OK), overskiv, gå til neste. (qs, b) (h,y, ) Kommet til enden (leser blank), er i qs, stopp med YES. (qe, s Σ ) (qe,b,r) Uansett hva vi leser (unntatt b) forblir vi i qe når vi først har error. (qe, b) (h,n, ) Kommet til enden med error, stopp med NO. s Σ (s X) s Σ * qs qe b h b Y N
3b Er følgende språk avgjørbart? L 2 = M M decides L 1. L 2 er ikke avgjørbart. Ser vi igjen på Turingmaskiner som funksjoner, er det generelt ikke mulig å svare på spørsmål om denne funksjonen (her: om funksjonen avgjør L 1 ). Vi bruker standardreduksjonen fra HALTING og transformerer en HALTINGinstans (M,x) til en L 2 instans (M ) på følgende måte: HALTING L MACHINE M (input) 2 input: M,x M simuler M på x ML1(input) M,x M M r ML 2 M h Y N
3b Så hvorfor virker dette? Hva er det vi har gjort? Vi har vist hvordan vi kan oversette alle HALTING instanser (all mulig HALTINGinput) til L 2 instanser (ved å lage M ). Transformasjonen oversetter JA instanser til JA instanser, og NEI instanser til NEI instanser, slik at svaret vi får fra en maskin for L 2 vil være det samme som fra en for HALTING (på korresponderende instanser). At en JA instans av HALTING blir til en JA instans av L 2 ser vi lett: simuleringen (av M på x) vil stoppe, og M er da i praksis ML1 (en maskin for L 1 ). At en NEI instans av HALTING blir til en NEI instans av L 2 er nesten enda lettere: simuleringen stopper aldri, så vi kommer aldri til ML1 delen, M går bare i evig løkke og er ikke en maskin for noe som helst (annet enn å gå i løkke, da ). For å kunne svare på om en maskin (av typen M ) M)er en maskin for L 1 må vi altså også kunne svare på om M på x stopper. Det kan vi ikke. L 2 er altså uavgjørbart. (ML 2 i den skjematiske fremstillingen av reduksjonen på forrige side kan altså ikke eksistere, siden vi vet at M h ikke gjør det.)
Jammen, kan vi ikke? Kan vi ikke bare sette «Simuler M på x» foran hva som helst og bevise at det er uavgjørbart? Også noe som er egentlig avgjørbart?? Nei. Det vil si, man kan sette «Simuler M på x» foran hva som helst, men det beviser ikke at dette hva som helst er uavgjørbart. (Se hva vi gjorde med L 1 og L 2 ). La oss ta et nytt eksempel på noe avgjørbart å sjekke om en Turingmaskin bare består av en overgangsregel. Det kan besvares med maskinen (programmet) M eks under: MACHINE M eks ( MACHINE M i = (Q i,σ i,γ i,δ i ) ) IF δ i = 1 THEN RETURN(Y) ELSE RETURN(N)
Jammen, kan vi ikke? Og så kjører vi på med standardreduksjonen HALTING L? input: M,x M MACHINE M (M i ) simuler M på x M eks (M i ) JA instanser av HALTING blir til maskiner M som svarer på om maskiner den får som input har en overgangsregel (ved å bruke koden fra M eks ), NEI instanserav av HALTING blir til maskiner M som aldrisvarer. Hvilke språk var det egentlig som ble avgjørbare og uavgjørbare her nå? Og hvilke maskiner hører til hvilket språk? Språk Maskin Avgjørbarhet. L eks =M Mharen overgangsregel M eks, og delvis M Avgjørbart (med M eks ). L? =M MavgjørL eks M? (hypotetisk) Uavgjørbart.
3b Er følgende språk avgjørbart? L 3 = M M decides L 2. L 3 er avgjørbart.deterlettåseomenmaskinerenmaskinforetuavgjørbart språk (når vi vet at språket er uavgjørbart). Et uavgjørbart språk har ingen maskiner. Dtf Det formellespråket L 3 er tomtl 3 =,ogkank avgjøres av en maskin som alltid svarer NEI. Kommer noen til deg med en Turingmaskin og spør om det er en maskin for HALTING, kan du alltid svare nei. Tilsvarende for L 2, du kan alltid svare nei for all input. Det er ikke en maskin for L 2 vedkommende har. Σ* MACHINE ML3(M i ) Y N RETURN(N)
3b alt. tolkning Tolker vi oppgaven slik at alle symboler i input er lovlige for L 1 (at den Σ som menes i oppgaveteksen faktisk er inputalfabetet til en Turingmaskin M = (Q,Σ,Γ,δ)), får jooppgavenenslagsoppgaven elegant symmetri : L 1 :avgjørbart MACHINE ML1(S) RETURN(Y) L 2 :uavgjørbart HALTING L 2 (som før) L 3 :avgjørbart MACHINE ML3(M) RETURN(N)