Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli

Calcoliamo la cardinalità dell'insieme T delle macchine di Turing su Alfabeto {0,1}, Sintesi del corso di Fondamenti di informatica

Macchine di TuringCalcolabilitàLinguaggi Formali

In questo documento, vengono discusse le macchine di Turing ad un nastro e l'alfabeto {0,1}, con un focus sulla codifica binaria degli stati di T e la sua relazione con i numeri naturali. Si introduce inoltre il linguaggio LA(T) e la nozione di macchina di Turing universale U. Il linguaggio LH, accettabile ma non decidibile, è definito e dimostrato.

Cosa imparerai

  • Come viene definita la macchina di Turing universale U?
  • Perché la macchina T ∗ non può esistere?
  • In che modo la macchina T cercata è una modifica della macchina di Turing universale U?

Tipologia: Sintesi del corso

2019/2020

Caricato il 28/02/2022

Alessiocr7
Alessiocr7 🇮🇹

4

(1)

10 documenti

1 / 9

Toggle sidebar

Documenti correlati


Anteprima parziale del testo

Scarica Calcoliamo la cardinalità dell'insieme T delle macchine di Turing su Alfabeto {0,1} e più Sintesi del corso in PDF di Fondamenti di informatica solo su Docsity! Fondamenti di Informatica - modulo 2 2016/2017 M.Di Ianni Accettabilità e decidibilità: l’Halting problem Indice 5.1 Quanti sono gli algoritmi? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 5.2 Quanti sono i linguaggi? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 5.3 L’Halting Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 5.4 Accettabilità, decidibilità ed operazioni fra linguaggi . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5.5 Riduzioni fra linguaggi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Fondamenti di Informatica - modulo 2, 2016/2017 Accettabilità e decidibilità: l’Halting problem 1 Assodata la tesi di Church-Turing, e dopo la nostra deviazione verso il mondo dell’infinito di Cantor, siamo finalmente pronti a rispondere alla domanda con la quale avevamo iniziato la dispensa precedente: cosa è che può essere calcolato da una macchina di Turing? O meglio, alla luce della tesi di Church-Turing: cosa è che può essere calcolato? O, ancor più precisamente: esiste qualcosa che non può essere calcolato? Esiste un problema che non può essere risolto? 5.1 Quanti sono gli algoritmi? Certamente, come possiamo immaginare facilmente, esistono un numero infinito di algoritmi. Allora, il senso della domanda “quanti sono gli algoritmi?” va individuato alla luce della teoria cantoriana dei numeri transfiniti, ossia: quale è la cardinalità dell’insieme degli algoritmi? D’altra parte, la tesi di Church-Turing afferma che ad ogni algoritmo corrisponde una macchina di Turing che calcola la stessa funzione e sappiamo, dalla Dispensa 2, che per ogni macchina di Turing definita su un generico alfabeto e dotata di k nastri ne esiste un’altra definita sull’alfabeto {0,1} e dotata di un singolo nastro (più l’eventuale nastro di output) ad essa equivalente. Pertanto, quello di cui ci occuperemo in questo paragrafo è calcolare la cardinalità dell’insieme T delle macchine di Turing definite sull’alfabeto {0,1} e dotate di un singolo nastro (più l’eventuale nastro di output). Il prossimo teorema, seppure interessante di per sé stesso, è funzionale al nostro scopo. Teorema 5.1: Sia Σ un insieme finito. Allora l’insieme Σ∗ costituito dalle parole (di lunghezza finita) di caratteri di Σ è numerabile. Dimostrazione: Sia |Σ| = n; consideriamo, allora, una qualunque codifica binaria c : Σ→ {0,1}dlogne degli elementi di Σ che utilizza lo stesso numero dlogne di cifre per ciascun elemento di Σ: poiché c è una codifica allora, per costruzione, ∀s, t ∈ Σ : s 6= t [c(s) 6= c(t) ]. Sia p ∈ Σ∗ una qualunque parola: poiché p è costituita da un numero finito di caratteri di Σ, indichiamo con k ∈ N la lunghezza di p e indichiamo p come p = s1s2 . . .sk, ossia come concatenazione dei simboli s1, s2, . . . , sk, con si ∈ Σ per i = 1, . . . ,k. Indichiamo ora con C(p) la concatenazione delle parole (nell’alfabeto binario) c(s1), c(s2), . . . , c(sk), e con µ(p) la parola C(p) preceduta da un carattere ‘1’: µ(p) = 1 C(p) = 1 c(s1) c(s2) . . . c(sk). Osserviamo che µ(p) può essere interpretato come numero naturale. Inoltre, è semplice verificare che, se p, p′ ∈ Σ∗ e p 6= p′, allora µ(p) 6= µ(p′). Infatti, siano p, p′ ∈ Σ∗ tali che p = s1s2 . . .sk, p′ = s′1s′2 . . .s ′ k′ e p 6= p′: • se k > k′, allora µ(p) > µ(p′) in quanto µ(p) contiene 1+ kdlogne cifre e µ(p′) contiene 1+ k′dlogne < 1+ kdlogne cifre; analogamente se k < k′; • se k = k′, allora, poiché p 6= p′, esiste almeno un indice i tale che si 6= s′i e, quindi, µ(p) differisce da µ(p′) per almeno qualche cifra (binaria) in posizione j con 1+(i−1)dlogne ≤ j ≤ 1+ idlogne. Quindi, µ è una biezione fra Σ∗ ed un sottoinsieme (infinito) dei numeri naturali. Allora, per il Teorema 4.1, Σ∗ è numerabile. 2 Possiamo ora dimostrare il principale risultato di questo paragrafo: Teorema 5.2: L’insieme T delle macchine di Turing definite sull’alfabeto {0,1} e dotate di un singolo nastro (più l’eventuale nastro di output) è numerabile. Dimostrazione: Ricordiamo che per dimostrare che un insieme è numerabile occorre dimostrare l’esistenza di una biezione fra tale insieme e l’insieme N dei numeri naturali: tale biezione non è altro che una etichettatura degli elementi dell’insieme con etichette appartenenti ad N, ossia, in ultima analisi, una numerazione degli elementi dell’insieme. Vediamo, dunque, come numerare le macchine di Turing. Fondamenti di Informatica - modulo 2, 2016/2017 Accettabilità e decidibilità: l’Halting problem 2 Senza perdità di generalità, possiamo assumere che T sia una macchina ad un singolo nastro. Da T possiamo, allora, semplicemente complementando gli stati di accettazione e di rigetto di T , derivare una nuova macchina T ′ (sempre ad un nastro) che, terminando su ogni input (come T ), accetta tutte e sole le coppie (i,x) ∈ N×N−LH , ossia, T ′(i,x) = { qR se (i,x) ∈ LH qA se (i,x) 6∈ LH A partire da T ′ deriviamo, poi, una terza macchina T ∗ (ancora ad un nastro) che, invece che su una coppia di interi, opera su un singolo input i ∈ N. Inoltre, T ∗(i) accetta se T ′(i, i) accetta, mentre non termina se T ′(i, i) rigetta. Questo è possibile apportando a T ′ le seguenti modifiche: • sostituiamo lo stato qR con un nuovo stato non finale q′R in tutte le quintuple di T ′ che terminano nello stato qR; • aggiungiamo alle quintuple di T ′ la quintupla 〈q′R,y,y,q′R, f erma〉, per ogni y ∈ {0,1}. Allora, T ∗(i) = { non termina se T ′(i, i) rigetta qA se T ′(i, i) accetta. Poiché T è un insieme numerabile e T ∗ ∈T , allora deve esistere k ∈ N tale che T ∗ = Tk. Ci chiediamo, ora: quale è l’esito della computazione Tk(k)? Se Tk(k) = T ∗(k) accettasse, allora T ′(k,k) dovrebbe accettare anch’essa. Ma se T ′(k,k) accetta, allora (k,k) 6∈ LH , ossia, Tk(k) non termina. Allora, T ∗(k) non può accettare e, dunque, necessariamente non termina. Ma, se T ∗(k) non termina, allora T ′(k,k) rigetta e, quindi, (k,k) ∈ LH . Dunque, per definizione, Tk(k) termina. Quindi, entrambe le ipotesi, Tk(k) termina o Tk(k) non termina, portano ad una contraddizione. Allora, la macchina T ∗ non può esistere. Poiché T ∗ è ottenuta mediante semplici modifiche della macchina che dovrebbe decidere LH , ne consegue che LH non è decidibile. 2 Il resto del paragrafo è dedicato a chiarire il significato del Teorema 5.5 nonché del concetto di decidibilità. Cosa significa dimostrare che un dato linguaggio L è decidibile? Significa dimostrare che esiste un algoritmo, ossia la specifica di un numero finito di passi elementari, che, per ogni possibile parola fornitagli come input, sia in grado di verificare in un numero finito di passi se tale parola appartiene ad L. Alla luce della precedente osservazione possiamo quindi affermare che il Teorema 5.5 prova quanto segue: non esiste un algoritmo che, avendo in input la descrizione di un algoritmo Ai ed un possibile input per Ai, è in grado di verificare in un numero finito di passi se Ai con input x terminerà in un numero finito di passi. Se analizziamo con attenzione questo risultato, osserviamo che ciò che abbiamo dimostrato non esistere è un algoritmo che opera su un altro algoritmo. In particolare, nella dimostrazione del Teorema 5.5 viene utilizzato il fatto che, se un tale algoritmo esistesse, non saprebbe come comportarsi qualora come input ricevesse sé stesso. O meglio: l’esistenza di un tale algoritmo determinerebbe, qualora dovesse operare su sé stesso, un paradosso. 5.4 Accettabilità, decidibilità ed operazioni fra linguaggi In questo paragrafo, analizziamo come particolari relazioni fra linguaggi permettano di dedurre la (non) accettabi- lità/decidibilità di un linguaggio in funzione di quella dei linguaggi ad esso correlati. Limiteremo la nostra attenzione a linguaggi contenuti in {0,1}∗; sulla base di quanto osservato nel precedente paragrafo questa assunzione non è restrittiva. Iniziamo la nostra analisi partendo dalle basilari operazioni fra insiemi. Fondamenti di Informatica - modulo 2, 2016/2017 Accettabilità e decidibilità: l’Halting problem 5 Definizione 5.2: Il linguaggio complemento Lc di un linguaggio L ⊆ {0,1}∗ è il linguaggio di tutte e sole le parole non contenute in L: Lc = {0,1}∗−L. Teorema 5.6: Un linguaggio L⊆ {0,1}∗ è decidibile se e soltanto se L è accettabile e Lc è accettabile. Dimostrazione: Se L è decidibile, allora esiste una macchina di Turing T tale che, per ogni x ∈ {0,1}, T (x) termina e, inoltre,oT (x) = qA se e soltanto se x ∈ L. Poiché oT (x) = qA se e soltanto se x∈ L, allora L è accettabile. Poiché T (x) termina per ogni x∈ {0,1}, se non termina nello stato di accettazione allora deve necessariamente terminare nello stato di rigetto. Deriviamo, quindi, da T una macchina T ′ invertendo gli stati di accettazione e di rigetto di T . Poiché T (x) termina per ogni x ∈ {0,1}, allora anche T ′(x) termina per ogni x ∈ {0,1}. Inoltre, per ogni x ∈ {0,1}, oT ′(x) = qA se e soltanto se T (x) termina nello stato di rigetto, ossia, se e soltanto se x 6∈ L. Quindi, T ′ accetta Lc. La dimostrazione dell’implicazione inversa è più complessa. Se L è accettabile e Lc è accettabile, allora esistono due macchine di Turing T1 e T2 tali che, per ogni x ∈ {0,1}∗, oT1(x) = qA se e soltanto se x ∈ L e oT2(x) = qA se e soltanto se x ∈ Lc. Deriviamo da T1 e T2 una nuova macchina T , di seguito descritta. 1) T utilizza due nastri, su ciascuno dei quali, inizialmente, è scritta una copia dell’input x∈ {0,1}∗: il primo nastro viene utilizzato per simulare la computazione T1(x), il secondo nastro per simulare la computazione T2(x). 2) Osserviamo che T non può simulare l’intera computazione di T1(x) e poi iniziare la simulazione della com- putazione T2(x) (o viceversa), perché T1(x) potrebbe non terminare; allora, T (x) esegue, alternativamente, una istruzione di T1(x) sul nastro 1 ed una istruzione di T2(x) sul nastro 2: non appena una delle due computazioni raggiunge uno stato finale, T decide se accettare o rigettare x: - se la prima computazione che termina è T1(x) allora T (x) termina nello stesso stato in cui termina T1(x) (accetta se T1(x) accetta, rigetta altrimenti); - se la prima computazione che termina è T2(x) allora T (x) termina nello stato complementare a quello in cui termina T2(x) (accetta se T1(x) rigetta, rigetta se T1(x) accetta). È semplice verificare che T decide il linguaggio L, e, quindi, L è decidibile. 2 Il corollario che segue è conseguenza diretta del Teorema 5.6. Corollario 5.2: Un linguaggio L⊆ {0,1}∗ è decidibile se e soltanto se Lc è decidibile. I prossimi due teoremi mettono in relazione la accettabilità/decidibilità di due linguaggi con la accettabilità/decidibilità del linguaggio che ne è l’intersezione e del linguaggio che ne è l’unione. La dimostrazione, che ricalca quella del Teorema 5.6, è molto semplice e viene lasciata per esercizio. Teorema 5.7: Se L1 ed L2 sono due linguaggi in {0,1}∗ accettabili, allora L1∩L2 è un linguaggio accettabile. Se L1 ed L2 sono due linguaggi in {0,1}∗ decidibili, allora L1∩L2 è un linguaggio decidibile. Teorema 5.8: Se L1 ed L2 sono due linguaggi in {0,1}∗ accettabili, allora L1∪L2 è un linguaggio accettabile. Se L1 ed L2 sono due linguaggi in {0,1}∗ decidibili, allora L1∪L2 è un linguaggio decidibile. Osserviamo esplicitamente che i teoremi inversi dei due precedenti non sono, ovviamente, veri. Infine, diversamente dalle operazioni fra linguaggi, la relazione di inclusione fra linguaggi non fornisce informazioni relative circa la loro calcolabilità/decidibilità. In altre parole, l’inclusione di un linguaggio L1 in un altro L2 non garantisce che L1 sia accettabile/decidibile data l’accettabilità/decidibilità di L2 né, viceversa, garantisce che L2 sia accettabile/decidibile data l’accettabilità/decidibilità di L1. 5.5 Riduzioni fra linguaggi Introduciamo, ora, il concetto di riducibilità funzionale. Questo concetto permette di correlare tra loro linguaggi in modo tale che Fondamenti di Informatica - modulo 2, 2016/2017 Accettabilità e decidibilità: l’Halting problem 6 • la decidibilità/accettabilità di un linguaggio implichi la decidibilità/accettabilità dei linguaggi ad esso riducibili; e, inoltre, • la non decidibilità/accettabilità di un linguaggio implichi la non decidibilità/accettabilità dei linguaggi cui esso si riduce. Definizione 5.3: Siano L1 ⊆ {0,1}∗ e L2 ⊆ {0,1}∗ due linguaggi; diciamo che L1 è (many to one) riducibile ad L2 se esiste una funzione totale e calcolabile f : {0,1}∗→{0,1}∗ tale che ∀x ∈ {0,1}∗ [ x ∈ L1⇔ f (x) ∈ L2 ]. Se L1 è riducibile ad L2 scriviamo L1 m L2. Esempio. Consideriamo il linguaggio LH2 = {i ∈ N : Ti(2) termina }, dove Ti(2) è la computazione che la macchina Ti esegue sulla parola vuota (ossia, la computazione che ha inizio con il nastro riempito da 2). Riduciamo, ora, ad esso il linguaggio LH , cioè mostriamo che LH m LH2 . Dobbiamo, cioè, definire una funzione f totale e calcolabile che, ad ogni coppia (i,x) ∈ N×{0,1}∗ associa un intero k ∈ N tale che (i,x) ∈ LH se e soltanto se k ∈ LH2 Per ogni i ∈ N e per ogni x ∈ {0,1}∗, costruiamo una nuova macchina di Turing Ti,x che, inglobando x nei suoi stati interni esegue una computazione sulla parola vuota che ha lo stesso esito della computazione Ti(x), ossia, oTi,x(2) = oTi(x) se Ti(x) termina e Ti,x(2) non termina se Ti(x) non termina. Sia k = k(i,x) ∈N il numero naturale associato alla macchina Ti,x mediante il procedimento descritto nella dimostrazione del Teorema 5.2. Allora la funzione f cercata è proprio f (i,x) = k(i,x). Per costruzione, f è una funzione totale; inoltre, essa è calcolabile perché il procedimento descritto nella dimostrazione del Teorema 5.2 è costruttivo. Sia, ora, (i,x)∈N×{0,1}∗: per costruzione di Tk = Ti,x, Ti(x) termina se e soltanto se Tk(2) termina, ossia, (i,x)∈ LH se e soltanto se i ∈ LH2 . Questo conclude la prova che LH m LH2 . 2 La relazione m gode delle proprietà riflessiva e transitiva, ossia: ∀L ∈ {0,1}∗ : Lm L (proprietà riflessiva) ∀L1,L2,L3 ∈ {0,1}∗ : L1 m L2 ∧L2 m L3⇒ L1 m L3 (proprietà transitiva). In particolare, la validità della proprietà transitiva segue osservando che la composizione di riduzioni è ancora una riduzione. La dimostrazione formale di questo fatto viene lasciata come esercizio. Vediamo ora come utilizzare il concetto di riduzione funzionale per dimostrare la decidibilità o meno di un linguaggio a partire dalla conoscenza della decidibilità o meno di un altro linguaggio. • Sia L1 un linguaggio non decidibile e sia L2 un secondo linguaggio tale che L1 m L2; allora L2 non è decidibile. Indichiamo con f1,2 la funzione che riduce L1 ad L2. Se L2 fosse decidibile, allora potremmo decidere se x ∈ L1 nella maniera seguente: innanzi tutto, calcoleremmo f1,2(x) e poi decideremmo se f1,2(x) ∈ L2. Poiché x ∈ L1 se e soltanto se f1,2(x) ∈ L2, l’esito della decisione circa f1,2(x) ∈ L2 risponderebbe anche al quesito “x ∈ L1?”. • Sia L1 un linguaggio non accettabile e sia L2 un secondo linguaggio tale che L1 m L2; allora L2 non è accettabile. Le argomentazioni per provare questo caso sono analoghe a quelle utilizzate nel punto precedente. • Sia L3 un linguaggio decidibile e sia L4 un secondo linguaggio tale che L4 m L3; allora L4 è decidibile. Indichiamo con f4,3 la funzione che riduce L4 ad L3. Sia x ∈ {0,1}; decidiamo se x ∈ L4 nella maniera seguente: innanzi tutto, calcoliamo f4,3(x) e poi decidiamo se f4,3(x) ∈ L3. Poiché x ∈ L4 se e soltanto se f4,3(x) ∈ L3, l’esito della decisione circa f4,3(x) ∈ L3 risponde anche al quesito “x ∈ L4?”. Fondamenti di Informatica - modulo 2, 2016/2017 Accettabilità e decidibilità: l’Halting problem 7
Docsity logo


Copyright © 2024 Ladybird Srl - Via Leonardo da Vinci 16, 10126, Torino, Italy - VAT 10816460017 - All rights reserved