Macchine di Turing e Complessita
Lucidi di Pierluigi Crescenzi,Universita di Firenze,adattati ed estesi da A.Marchetti Spaccamela
A.A. 2012-2013
Pilu Crescenzi () IT A.A. 2012-2013 1 / 150
Obiettivi e argomenti
ObiettiviFornire gli elementi di base delle teorie che sono di fondamentoall’informatica
CalcolabilitaComplessita
Programma
Macchine di TuringLa macchina di Turing universaleLimiti delle macchine di TuringLa tesi di Church-TuringRelazioni fra Linguaggi e Macchine di TuringLe classi di complessita P, NP, PSPACE
Pilu Crescenzi () IT A.A. 2012-2013 2 / 150
Contenuti del corso
Domanda principale: Cosa puo essere calcolato da un calcolatore equanto costa farlo?
Risposte
Tesi di Church-Turing: E calcolabile tutto cio che puo esserecalcolato da una macchina di Turing.
Esistono problemi che non possono essere risolti in modo algoritmicomediante una macchina di Turing.
Congettura P 6= NP: Esistono problemi che non possono essere risoltiin tempo polinomiale, ma per i quali e possibile verificare in tempopolinomiale la correttezza di una soluzione.
Intermezzo linguistico
Equivalenza tra grammatiche e modelli di calcolo
Pilu Crescenzi () IT A.A. 2012-2013 3 / 150
Macchine di Turing
() P.Crescenzi, UniFi 4 / 150
Macchine di Turing
Sono macchine astratte (modelli di calcolo) introdotte da A.M.Turingnel 1935 con lo scopo di
Dare una definizione formale del concetto di algoritmoStudiare i limiti del calcolo mostrando l’esistenza di problemi nonrisolubili
La macchina di Turing e un automa con testina di lettura/scrittura suun nastro bidirezionale potenzialmente illlimitato. Ad ogni passo dicalcolo
la macchina si trova in uno stato, appartenente ad un insieme finito, elegge un carattere sul nastrola funzione di transizione della macchina fa scrivere un carattere sulnastro, sposta eventualmente la testina di una posizione, porta lamacchina in un nuovo stato
() P.Crescenzi, UniFi 5 / 150
Definizione di una MdT
Alfabeto di lavoro Σ (� ∈ Σ)Grafo etichettato G = (V ,E )
V = {q0} ∪ F ∪ Q: insieme di stati
q0: stato inizialeF : insieme di stati finaliQ: insieme di altri stati
E ⊆ V × V : insieme di transizioniEtichette: l ((u, v)) =(σ1, τ1,m1), . . . , (σku,v , τku,v ,mku,v )
σi ∈ Σ: simbolo letto (i 6= j ⇒ σi 6= σj)τi ∈ Σ: simbolo scrittomi ∈ {R, L, S}: movimento della testina
Complemento bit a bit
() P.Crescenzi, UniFi 6 / 150
Rappresentazione tabellare di una MdT
5 colonne e 1 riga per ogni etichetta
Prima colonna: stato attualeSeconda colonna: simbolo lettoTerza colonna: nuovo statoQuarta colonna: simbolo da scrivereQuinta colonna: movimento testina
Esempio: MdT per il complemento bit a bit
stato simbolo stato simbolo movimento
q0 0 q0 1 R
q0 1 q0 0 R
q0 � q1 � L
q1 0 q1 0 L
q1 1 q1 1 L
q1 � q2 � R
() P.Crescenzi, UniFi 7 / 150
Calcolo con una macchina di Turing
Funzionamento della MdT
La macchina di Turing inizia il calcolo nello stato iniziale con la testinaposta sul primo carattere (quello piu a sinistra) dell’inputAd ogni passo sulla base dello stato e del carattere letto dalla testina lamacchina scrive un nuovo carattere, si sposta di una posizione (orimane ferma) e raggiunge un nuovo stato (eventualmente lo stesso)La macchina termina quando raggiunge uno stato finale oppure quandonon e definita la funzione di transizione
La posizione della testina quando la macchina raggiunge uno statofinale (spesso noi assumeremo che la testina si trova sul primocarattere del nastro
() P.Crescenzi, UniFi 8 / 150
Configurazioni minimali
La configurazione di una MdT specifica lo stato attuale, il contenutodel nastro e la posizione della testina
La rappresentazione : xqy e la configurazione in cui lo stato e q, ilnastro contiene la stringa xy e la testina si trova sul primo simbolo di y
Configurazione minimale:
Tutti i simboli a sinistra di x sono �Tutti i simboli a destra di y sono �Primo simbolo di x diverso da � (se |x | ≥ 1)Ultimo simbolo di y diverso da � (se |y | ≥ 1)
Configurazione iniziale: q0x
Configurazione finale o di accettazione: xqy con q ∈ F
Output: prefisso piu lungo di y senza �Configurazione di rigetto: se non esiste transizione da q leggendoprimo simbolo di y o leggendo � (se y = λ)
() P.Crescenzi, UniFi 9 / 150
Esempio: MdT per il complemento bit a bit
Partendo dalla configurazione iniziale q00101
1q0101
10q001
101q01
1010q0
101q10
10q110
1q1010q11010q1�1010q21010
q21010 finale con output 1010
Complemento bit a bit
() P.Crescenzi, UniFi 10 / 150
Produzioni tra configurazioni
C1 produce C2 se MdT puo passare da C1 a C2 con una singolatransizione (o un singolo passo di calcolo)
Una computazione di una MdT e una sequenza eventualmente infinitadi configurazioni C1,C2,C3,C4 . . . tale che la MdT per i = 1, 2, 3, . . .passa da Ci a Ci+1 con una singola transizione
La MdT termina o quando raggiunge una configurazione in cui lostato e finale oppure quando la funzione di transizione non e definita
() P.Crescenzi, UniFi 11 / 150
Esempio: MdT per il complemento bit a bit
Ci riferiamo alla MdT che complementa una stringa bit a bit
Esempio di produzione101q01 produce 1010q0
x = 101, y = 1 e etichetta transizione da q0 a q0 contiene (1, 0, R)
Esempio di non produzione1q0101 non produce 101q01
x = 1, y = 101 e etichetta transizione da q0 a q0 contiene le due triple(0, 1, R) e (1, 0, R)Proviamo ad applicare la prima tripla (0, 1, R): non soddisfatta lacondizione che la testina legga il carattere 0Proviamo ad applicare la seconda tripla (1, 0, R): non soddisfattecondizioni che il nastro a sinistra della testina sia 101 e che il nastro adestra della testina sia 1
() P.Crescenzi, UniFi 12 / 150
Complemento a due di un numero binario
Complemento a due di numero x rappresentato con n bit di cui ilprimo e segno: 2n − x
Esempio: x = 13, n = 5
Rappresentazione di x : 01101Complemento a due di x : 32− 13 = 19Rappresentazione di complemento a due di x : 10011
Metodo comunemente usato per rappresentare numeri con segno neicalcolatori
Vantaggi
Addizione e sottrazione implementate senza distinguere rispetto alsegnoLo zero ha un’unica rappresentazione (rappresentati numeri da −2n−1 a2n−1 − 1)
() P.Crescenzi, UniFi 13 / 150
Algoritmo per il Complemento a due di un numero
Sia x =∑n−1
i=0 2ixi
Complemento a due y di x : 2n −∑n−1i=0 2ixi
2n =∑n−1
i=0 2i + 1 =∑n−1
i=0 2i · 1 + 1 =∑n−1
i=0 2i (xi + xi ) + 1
y =∑n−1
i=0 2i (xi + xi ) + 1−∑n−1i=0 2ixi =
∑n−1i=0 2ixi + 1
Algoritmo
Complementare tutti i bit di xSommare 1
Esempio: x = 13 e n = 5
Rappresentazione binaria di x : 01101Complemento bit a bit: 10010Somma di 1: 10011
Algoritmo equivalente (esercizio)
Complementare tutti i bit a sinistra di 1 piu a destra
() P.Crescenzi, UniFi 14 / 150
MdT per il Complemento a due di un numero
1 Raggiunge primo � a destra2 Trova e supera primo 1 a
sinistra
Se non esiste, terminaposizionando testina susimbolo piu a sinistra
3 Si sposta verso sinistra,complementando ogni bitincontrato, fino a raggiungere �
4 Si sposta a destra.
Complessita temporale: O(n) dove n e lunghezza input
n passi per 1Al piu n passi per 2Al piu n passi per 3
() P.Crescenzi, UniFi 15 / 150
Ordinamento di stringhe binarie
Data stringa binaria x , produrre stringa ordinata
Esempio: se x = 010101101, allora l’output e 000011111
Algoritmo
Cercare ripetutamente coppie di 0 e 1 non in ordine e invertirleEsempio: input 0101011
Prima coppia: 010101101⇒ 001101101Seconda coppia: 001101101⇒ 000111101Terza coppia: 000111101⇒ 000011111
Complessita temporale: O(n2) dove n e lunghezza input
Al piu 2n passi per ciascuna coppiaAl piu n/2 coppie
() P.Crescenzi, UniFi 16 / 150
MdT per l’ordinamento
1 Cerca primo 1 a destra
Se non esiste, termina posizionando testina su primo simbolo
2 Cerca 0 che segue
Se non esiste, termina posizionando testina su primo simbolo
3 Complementa 0 e cerca 1 piu a sinistra
4 Complementa 1 e ricomincia
() P.Crescenzi, UniFi 17 / 150
Un linguaggio non regolare L = {0n1n}
Consideriamo l’insieme L = {0n1n : n ≥ 0}Esempio: 00001111 ∈ L mentre 0001111 6∈ LEsempio tipico di linguaggio non regolare
Problema: data stringa binaria x , x ∈ L?
AlgoritmoControllare ripetutamente se i due simboli alle estremita sono opposti
In tal caso cancellarli
Esempio: input 0001011
Primo controllo: 0001011⇒ 00101Seconda coppia: 00101⇒ 010Terzo controllo: 010⇒ x 6∈ L
Complessita temporale: O(n2) dove n e lunghezza input
Al piu 2n passi per ciascun controlloAl piu n/2 controlli
() P.Crescenzi, UniFi 18 / 150
Mdt per L = {0n1n}
1 Se simbolo piu a sinistra e 0, locancella e si sposta su simbolopiu a destra
Se simbolo piu a sinistra nonesiste, raggiunge lo statofinale (la stringa appartiene allinguaggio)
2 Se simbolo piu a destra e 1, locancella e si sposta su simbolopiu a sinistra
Nota beneSe le condizioni ai passi 1 e 2 precedenti non sono verificate allora none definita la transizione e la macchina si interrompe in uno stato nonfinale (e la stringa non appartiene al linguaggio)Input viene cancellato: Facile modificare MdT in modo che input siapreservato (esercizio)
() P.Crescenzi, UniFi 19 / 150
Macchina di Turing multi-nastro
Simile a MdT: usa k nastri con k ≥ 1
Ciascun nastro con propria testina
Istruzione specifica (oltre nuovo stato)
k simboli lettik simboli da scriverek movimenti delle k testine
Etichetta di una transizione
((σ1, . . . , σk), (τ1, . . . , τk), (m1, . . . ,mk))
Configurazione iniziale: input su primo nastro, rimanenti nastri vuoti
() P.Crescenzi, UniFi 20 / 150
Esempio: MdT multi-nastro per 0n1n
1 Scorre primo nastro verso destra fino a primo 1: per ogni 0, scrive un1 sul secondo nastro
2 Scorre primo nastro verso destra e secondo nastro verso sinistra: sesimboli letti non uguali, termina in stato non finale
3 Se legge � su entrambi i nastri, termina in stato finale
stato simboli stato simboli movimenti
q0 (0,�) q0 (�, 1) (R, R)q0 (1,�) q1 (1,�) (S, L)q1 (1, 1) q1 (�,�) (R, L)q1 (�,�) q2 (�,�) (S, S)
Numero di passi eseguiti: legge una sola volta ciascun simbolo
tT (n) ∈ O(n)
() P.Crescenzi, UniFi 21 / 150
MdT e MdT multi-nastro
Risultato
Sono modelli equivalenti
In un verso: ovvioNell’altro verso: l’idea e rappresentare i nastri della macchina multi nastrosu porzioni del singolo nastro disponibile; le porzioni sono separate fra loroda un nuovo simbolo #. Pertanto ad ogni istante l’unico nastro ha la formacontenuto nastro 1 #contenuto nastro 2 #....
Concatenare contenuto dei k nastri, separati da #
Evidenziare simboli attualmente lettiRacchiudere tutto tra due estremita
Per ogni istruzione di MdT multi-nastro T , MdT T ′
Scorre i k nastri e “raccoglie” informazioni sui k simboli lettiApplica transizione, scorrendo i k nastri e applicando su ciascunoscrittura e spostamento
() P.Crescenzi, UniFi 22 / 150
Costo della simulazione
tT (n): numero massimo di passi eseguiti con input di lunghezza nOgni nastro usa al piu tT (n) celle
Spazio non puo essere superiore a tempo
Il singolo nastro usa al piu O(tT (n)) celle
Costante dipende da k
Per ogni passo di T , T ′
Esegue due scansioni per raccogliere informazioniPer ogni nastro, esegue due scansioni per l’eventuale scorrimento adestraEsegue numero di passi O(tT (n))
Quindi, tT ′(n) ∈ O(t2T (n))
Osservazione
sT (i , n): numero di celle usate sull’i-esimo nastro
Numero di celle usate sul singolo nastro:∑k
i=1 sT (i , n) + k + 1
() P.Crescenzi, UniFi 23 / 150
Definizione di sotto-macchina
Informalmente, stato s di T associato a MdT Ts tale che
“Entrando” in s, controllo passa a Ts
Ts viene eseguitaAl termine di Ts , controllo torna a T che esegue transizione da sleggendo simbolo lasciato da Ts
Formalmente, stato s di T associato a MdT Ts tale che, nellaconfigurazione uqv che produce w sx ,
T passa in wqs0 x (qs
0 stato iniziale di Ts)Esecuzione procede con Ts fino a yqs
f z (qsf stato finale di Ts)
T prosegue da configurazione y sz
() P.Crescenzi, UniFi 24 / 150
Esempio: moltiplicazione di numeri binari
Basata sul fatto che x × y = 2× x × y2
Raddoppia x tante volte quante possiamo dividere y per 2Se y ′ = y − 2blog yc > 0 aggiunge x × y ′, con stesso metodo
Piu precisamente (cinque nastri)1 Copia y su nastro 2 e inizializza moltiplicazione a 0 su nastro 32 Cancella 0 a sinistra su nastro 23 Se nastro 2 vuoto, copia nastro 3 su nastro 1 e termina.4 Copia nastro 1 su nastro 4 e nastro 2 su nastro 55 Raddoppia nastro 4 tante volte quanti sono simboli di nastro 5 meno 16 Somma nastro 4 a nastro 3 in nastro 3.7 Cancella 1 a sinistra di nastro 2 e torna al passo 2.
[Jflap]
() P.Crescenzi, UniFi 25 / 150
Prova del nove
Serve a verificare correttezza moltiplicazione (esempio:1902× 1964 = 3735528)
Procedura1 A: somma cifre primo fattore (esempio: 1 + 9 + 0 + 2 = 12 ≡ 3
(mod 9))2 B: somma cifre secondo fattore (esempio: 1 + 9 + 6 + 4 = 20 ≡ 2
(mod 9))3 C : somma cifre A× B (esempio: 3× 2 = 6 ≡ 6 (mod 9)).4 D: somma cifre risultato presunto (esempio:
3 + 7 + 3 + 5 + 5 + 2 + 8 = 33 ≡ 6 (mod 9)).5 Se C = D, la prova ha esito positivo, altrimenti ha esito negativo
(esempio: esito positivo)
Se esito negativo, allora moltiplicazione errata
Se esito positivo, risultato potrebbe essere errato
() P.Crescenzi, UniFi 26 / 150
MdT per prova del nove
Possiamo ottenere la MdT che effettua la prova del nove componendo lediverse macchine che realizzano i passi dell’algoritmo precedente.
Input: axb=c
Funzionamento (usa Tdigitadder)1 Calcola somma s3 cifre di c2 Calcola somma s2 cifre di b3 Calcola somma s1 cifre di a4 Calcola prodotto modulo 9 di s1 per s2
5 Verifica se il risultato e uguale a s3
[Jflap]
() P.Crescenzi, UniFi 27 / 150
La macchina di Turing Universale
() P.Crescenzi, UniFi 28 / 150
Codifica binaria di un alfabeto
Alfabeto utilizzato da odierni calcolatori
Codice ASCII a 8 bitCodice Unicode a 16 bit
Alfabeto binario non restrittivo rispetto a potere computazionale diuna MdT
Garantire successiva decodifica
Codifica di A, B e C: 0, 1 e 00, rispettivamenteSequenza 000 codifica di
AAA
AC
CA
Il codice di A e un prefisso del codice di C
() P.Crescenzi, UniFi 29 / 150
Codifica a lunghezza costante
Σ = {σ1, . . . , σn} con n > 2
k = dlog2 neCodifica cΣ(σi ) di σi : rappresentazione binaria di i − 1 con k bitCodifica cΣ(x) di stringa x = x1 · · · xm: cΣ(x1) · · · cΣ(xm)
Esempio
Alfabeto Σ = {a, b, c, d, e}k = dlog2 5e = 3cΣ(a) = 000, cΣ(b) = 001, cΣ(c) = 010, cΣ(d) = 011 e cΣ(e) = 100
Codifica di cade: 010000011100
Codifica di debba: 011100001001000
() P.Crescenzi, UniFi 30 / 150
Codifica di Huffman
Unisci ripetutamente simboli o gruppi di simboli con frequenza minima
1
0.4
a:0.2 b:0.2
0.6
0.4
c:0.2 d:0.2
e:0.2
0 1
0 1 0 1
0 1
Alfabeto Σ = {a, b, c, d, e}con simboli di ugualefrequenza
cH(a) = 00, cH(b) = 01,cH(c) = 100, cH(d) = 101 ecH(e) = 11
Codifica di cade:1000010111
Codifica di debba:10111010100
() P.Crescenzi, UniFi 31 / 150
Macchine di Turing con alfabeto binario
T : MdT con alfabeto di lavoro ΓT = {�} ∪ Σ con |Σ| > 2
T ′: MdT con alfabeto di lavoro ΓT ′ = {�, 0, 1} tale che
∀x , T (x) non termina ⇒ T ′(cΣ(x)) non termina∀x , T (x) termina in configurazione di rigetto ⇒ T ′(cΣ(x)) termina inconfigurazione di rigetto∀x , T (x) termina in configurazione finale e produce y ∈ Σ∗ ⇒T ′(cΣ(x)) termina in configurazione finale e produce cΣ(y)
T ′ come T : ogni singola transizione di T simulata con ≤ 3k − 2transizioni (dove k = dlog2 |Σ|e)
Leggere codifica di simbolo di ΣSostituire codifica con quella di altro simboloPosizionare in modo corretto la testina
() P.Crescenzi, UniFi 32 / 150
Esempio
MdT T con Γ = {�, a, b, c, d, e}T include
Transizione da p a s con tripla (b, c, S)Transizione da p a q con tripla (a, e, R)Transizione da p a r con tripla (d, a, L)
Grafo di T ′ include
() P.Crescenzi, UniFi 33 / 150
Codifica di una MdT
MdT universale simula qualunque altra MdT (con alfabeto binario) apartire da sua descrizione
Proposta la prima volta da Turing stessoRuolo importante nello sviluppo di calcolatori alla von NeumanRichiede codifica di MdT
Codifica simboli: 0 ⇒ Z, 1 ⇒ U e � ⇒ B
Codifica movimenti: L ⇒ L, S ⇒ S e R ⇒ R
Codifica stati: (i + 1)-esimo stato ⇒ rappresentazione binaria di i
Primo stato inizialeSecondo stato unico finale
Transizione codificata giustapponendo codifiche di suoi elementi
MdT codificata giustapponendo codifiche di sue transizioni
() P.Crescenzi, UniFi 34 / 150
Esempio
stato simbolo stato simbolo movimento codifica
q0 0 q0 1 R 0Z0UR
q0 1 q0 0 R 0U0ZR
q0 � q2 � L 0B10BL
q2 0 q2 0 L 10Z10ZL
q2 1 q2 1 L 10U10UL
q2 � q1 � R 10B1BR
Codifica MdT: 0Z0UR0U0ZR0B10BL10Z10ZL10U10UL10B1BR
stato simbolo stato simbolo movimento codifica
q0 � q2 � L 0B10BL
q0 1 q0 0 R 0U0ZR
q0 0 q0 1 R 0Z0UR
q2 � q1 � R 10B1BR
q2 1 q2 1 L 10U10UL
q2 0 q2 0 L 10Z10ZL
Codifica MdT: 0B10BL0U0ZR0Z0UR10B1BR10U10UL10Z10ZL
() P.Crescenzi, UniFi 35 / 150
La MdT universale
Alfabeto: �, 0, 1, B, U, Z, L, R, S e ;
Tre nastri: l’input codificato sul primo nastro rappresenta la codificadi una MdT T e dall’input x ; la macchina simula T con input x
Funzionamento1 Copia su nastro 3 input x codificato con U e Z2 Inizializza nastro 2 con codifica stato iniziale3 In base a stato su nastro 2 e simbolo letto su nastro 3, cerca
transizione da applicare (se non esiste, rigetta)4 Applica transizione modificando nastro 3 e aggiornando nastro 2 con
nuovo stato5 Se nuovo stato e finale, termina in stato finale; altrimenti, torna a
Passo 3
() P.Crescenzi, UniFi 36 / 150
Terzo passo
Per realizzare il passo 3 dobbiamo cercare Operazione di “patternmatching”
1 Scorre nastri 1 e 2 fintanto che trova simboli ugualiSe non incontra simbolo diverso da 0 e 1 su entrambi i nastri
Posiziona testina di nastro 2 su primo simbolo e posiziona testinanastro 1 su primo simbolo transizione successiva e ricomincia
2 Posiziona testina nastro 2 su primo simbolo e verifica se simbolo sunastro 1 uguale a simbolo su nastro 3
Se si, sposta testina nastro 1 a destra e terminaAltrimenti, posiziona testina nastro 1 su primo simbolo transizionesuccessiva e torna a Passo 1
() P.Crescenzi, UniFi 37 / 150
Il grafo della MdT universale
Numero passi eseguiti da U proporzionale a quello di T
Per ogni stringa x di lunghezza n
Primo, quarto, quinto passo: numero passi lineareSecondo passo: numero passi costanteTerzo passo: numero passi quadratico (per “riavvolgere” nastro 2)
() P.Crescenzi, UniFi 38 / 150
Limiti delle macchine di Turing
() IT-03 39 / 150
Configurazioni
Specificano stato attuale, contenuto del nastro e posizione testinaxqy : configurazione in cui
Stato: qNastro: xy con � a sinistra e a destraTestina su primo simbolo di y
Configurazione iniziale: q0 xConfigurazione finale o di accettazione: q ∈ F
Output: prefisso piu lungo di y senza �Configurazione di rigetto: non esiste transizione da q leggendo primosimbolo di y (leggendo �, se y = λ)
Produzioni tra configurazioni
C1 produce C2 se MdT puo passare da C1 a C2 con una singolatransizione
() IT-03 40 / 150
Funzioni calcolabili e linguaggi decidibili
Funzione f : Σ∗ → Γ∗ calcolabile se ∃ MdT T tale che∀x ∈ Σ∗, ∃ sequenza C1, . . . ,Cn di configurazioni
C1: q0x (q0 stato iniziale)∀i , Ci produce Ci+1
Cn: configurazione di accettazione
Linguaggio L (sottoinsieme di Σ∗)χL : Σ∗ → {0, 1}: funzione caratteristica di L
χL(x) =
{1 se x ∈ L,0 altrimenti
L decidibile se e solo se funzione caratteristica calcolabile
Esempio: L = {1n : n = 2k}
() IT-03 41 / 150
Funzioni calcolabili e linguaggi decidibili
Che relazione esiste fra MdT e i linguaggi formali? Ricordiamo che
Linguaggio L su un alfabeto Σ e un sottoinsieme di Σ∗
χL : Σ∗ → {0, 1}: funzione caratteristica di L
χL(x) =
{1 se x ∈ L,0 altrimenti
L decidibile se e solo se la funzione caratteristica e calcolabile con unaMdT
Esempio: L = {1n : n = 2k}
Vedremo che e possibile caratterizzare la relazione fra MdT elinguaggi secondo la gerarchia di Chomsky,
() IT-03 42 / 150
Semplici proprieta
Se L e decidibile, allora Lc e decidibile
L decidibile sse ∃ mdT T con 1 stato finale che termina ∀x e cheaccetta sse x ∈ L
Se
Solo se
() IT-03 43 / 150
Semplici proprieta
Se L e decidibile, allora Lc e decidibile
L decidibile sse ∃ MdT T con 1 stato finale che termina ∀x e cheaccetta sse x ∈ L
Se
Solo se
() IT-03 44 / 150
Insiemi equi-cardinali
Insiemi A e B hanno stessa cardinalita se ∃ biezione f : A→ BN e N+ sono equi-cardinali
f : N+ → N tale che ∀n f (n) = n − 1
1 2 3 4 5 6 7 8 9 100 1 2 3 4 5 6 7 8 9
N e insieme P di numeri pari sono equi-cardinali
f : P → N tale che ∀n f (n) = n2
0 2 4 6 8 10 12 14 16 180 1 2 3 4 5 6 7 8 9
() IT-03 45 / 150
Insiemi numerabili
Insiemi equi-cardinali a insieme N
N+ e P sono numerabiliInsieme Z dei numeri interi
Simile a simulazione con nastro semi-infinitof : Z → N tale che ∀n
f (n) =
0 se n = 0,2n − 1 se n > 0,−2n altrimenti
0 1 -1 2 -2 3 -3 4 -4 50 1 2 3 4 5 6 7 8 9
() IT-03 46 / 150
Numeri razionali positivi
() IT-03 47 / 150
Numeri reali
Risultato
L’insieme dei numeri reali non e numerabile
Per assurdo
∀x d(x , i): i-esima cifra decimale di x
x = 0.8362719 . . .: d(x , 1) = 8, d(x , 2) = 3, d(x , 3) = 6 e cosı via
xdiag: ∀i , d(xdiag, i) = (d(f −1(i), i) + 1) mod 10
xdiag non puo apparire nell’enumerazione
() IT-03 48 / 150
Esistono linguaggi non decidibili
NotazioniΣ: alfabeto binarioL: insieme dei linguaggi su ΣT : insieme MdT con alfabeto Σ ∪ {�}D: insieme linguaggi decidibili in L
Risultato
T e Dsononumerabili
T e numerabileA ogni macchina di Turing corrisponde stringa su {0, 1, B, U, Z, L, R, S}Stringhe su alfabeto fissato numerabili: ordinamento lessicograficoSottoinsieme di insieme numerabile e numerabile
D e numerabileD non e piu che numerabile: per ogni L ∈ D esiste almeno una MdTche decide LD e almeno numerabile: Insieme di linguaggi Li contenenti solorappresentazione binaria di i
() IT-03 49 / 150
Risultato
L non e numerabile
Per assurdo: ∃f : L → N biettiva (poniamo Li = f −1(i))Numerazione σ0, σ1, σ2, . . . di stringhe su ΣLdiag: per ogni numero naturale i , σi ∈ Ldiag se e solo se σi 6∈ Li
0 1 00 01 10 11 000 · · ·L0 0 1 0 0 1 0 1 · · ·L1 1 1 1 0 0 0 0 · · ·L2 0 1 1 0 1 0 0 · · ·L3 0 0 0 0 0 0 0 · · ·L4 1 1 1 1 1 1 1 · · ·L5 1 1 1 1 0 0 1 · · ·
Ldiag = {0, 01, 11, . . .}Per ogni i , Ldiag differisce da Li per almeno una stringa
Risultato
Esistono linguaggi non decidibili
() IT-03 50 / 150
Problema della terminazione
Un importante esempio di linguaggio non decidibile
NotazioniC: insieme delle codifiche binarie di codifiche di MdT in TT (x): computazione di T con input x
Se T (x) termina in una configurazione finale: T (x) accettaSe T (x) termina in una configurazione di rigetto: T (x) rigetta
〈x1, . . . , xk〉: stringa ottenuta raddoppiando bit, concatenando eseparando con 01
〈0110, 1100〉: 001111000111110000
Problema della terminazione
Lstop = {〈cT , x〉 : cT ∈ C ∧ x ∈ Σ∗ ∧ T (x) termina}
Due tipi di stringhe in Lstop
〈cT , x〉 per cui T (x) accetta〈cT , x〉 per cui T (x) rigetta
Lstop non e decidibile
() IT-03 51 / 150
Lstop non e decidibile
Risultato
Lstop non e decidibile
Dimostrazione per assurdoEsiste Tstop tale che
Tstop(y)
{accetta se y ∈ Lstop
rigetta altrimenti
Definiamo Tdiag ∈ T in modo che
Tdiag(z)
{termina se z = cT e Tstop(〈cT , cT 〉) rigettanon termina altrimenti
Cosa fa Tdiag(cTdiag)?
Tdiag(cTdiag ) termina se e solo se Tstop(cTdiag , cTdiag ) rigetta se e solose 〈cTdiag , cTdiag 〉 6∈ Lstop se e solo se Tdiag(cTdiag ) non termina
Tstop non puo esistereLstop non e decidibile
() IT-03 52 / 150
Altri problemi indecidibili
La tesi di Church-Turing implica che la dimostrazione dellaindecidibilita del problema della terminazione non vale solo per lemacchine di Turing ma che il problema della terminazione di unaprogramma e indecidibile per ogni linguaggio di programmazione.Problemi indecidibili si incontrano in vari campi dell’informatica:
Decidere se un programma corretto, cio se calcola la funzione desiderataDati un programma, un input del programma ed una sua istruzione,decidere se l’istruzione sara eseguitaDecidere se una grammatica di tipo 2 e ambiguaDecidere se due grammatiche di tipo 2 sono equivalentiDecidere se un programma si ferma con input 0
() IT-03 53 / 150
Decidere se un programma si ferma con input 0
Sia Lstop−0 = {cT : T (0) termina}. Proviamo che Lstop−0 non e decidibile
“Riduciamo” Lstop a Lstop−0
Supponiamo di avere Tstop−0 che decide Lstop−0Costruiamo macchina Tstop che usa Tstop−0 per decidere Lstop
〈cT , x〉 ∈ Lstop se e solo se T (x) terminacT ∈ Lstop−0 se e solo se T (0) terminaEseguire Tstop−0 con input cT non serveEseguiamo Tstop−0 con input codifica di modifica T ′ di T chegarantisce che T ′(0) termina se solo se T (x) terminaT ′: con input z , cancella z , scrive x ed esegue T (x)
T (x) termina se e solo T ′(0) termina
Tstop
1 Con input 〈cT , x〉 calcola cT ′
2 Esegue Tstop−0 con input cT ′
3 Se Tstop−0 accetta, accetta; se Tstop−0 rigetta, rigetta
Tstop decide Lstop: assurdo
Tstop−0 non puo esistere
() IT-03 54 / 150
Lacc = {〈cT , x〉 : T (x) accetta}
Lacc non e decidibile
“Riduciamo” Lstop a Lacc
Supponiamo di avere Tacc che decide Lacc
Costruiamo macchina Tstop che usa Tacc per decidere Lstop
〈cT , x〉 ∈ Lstop se e solo se T (x) termina〈cT , x〉 ∈ Lacc se e solo se T (x) accettaEseguire Tacc con input 〈cT , x〉 non serve
T (x) potrebbe terminare senza accettare
Eseguiamo Tacc con input codifica di modifica T ′ di T che garantisceche T ′(x) accetta se solo se T (x) terminaT ′: con input z , esegue T (z) e se T (z) termina, allora accetta
T (x) termina se e solo T ′(x) accetta
Tstop
1 Con input 〈cT , x〉 calcola cT ′
2 Esegue Tacc con input 〈cT ′ , x〉3 Se Tacc accetta, accetta; se Tacc rigetta, rigetta
Tstop decide Lstop: assurdo
Tacc non puo esistere
() IT-03 55 / 150
Lempty = {cT : ∀x [T (x) non accetta]}
Lempty non e decidibile
“Riduciamo” Lacc a Lempty
Supponiamo di avere Tempty che decide Lempty
Costruiamo macchina Tacc che usa Tempty per decidere Lacc
〈cT , x〉 ∈ Lstop se e solo se T (x) accettacT ∈ Lempty se e solo, per ogni y , per cui T (y) rigettaEseguire Tempty con input cT non serve
Se rigetta sappiamo solo che esiste y per cui T (y) accetta
Eseguiamo Tempty con input codifica di modifica T ′ di T che garantisceche esiste z per cui T ′(z) accetta se solo se T (x) accettaT ′: con input z , se z 6= x rigetta, altrimenti esegue T con input z = x
T (x) accetta se e solo esiste z per cui T ′(z) accetta
Tacc
1 Con input 〈cT , x〉 calcola cT ′
2 Esegue Tempty con input cT ′
3 Se Tempty accetta, rigetta; se Tempty rigetta, accetta
Tacc decide Lacc: assurdo
Tempty non puo esistere
() IT-03 56 / 150
Osservazioni
Nelle riduzioni precedenti
L2: linguaggio di cui si vuole dimostrare la non decidibilita
L1: linguaggio di cui si conosce la non decidibilita
Data una stringa x di cui decidere l’appartenenza a L1
Abbiamo costruito una stringa x ′ tale che x ∈ L1 se e solo se x ′ ∈ L2
Da Lstop a Lstop−0: data 〈cT , x〉 abbiamo costruito cT ′ (T ′ con inputz , cancella z , scrive x ed esegue T (x))Da Lstop a Lacc: data 〈cT , x〉 abbiamo costruito 〈cT ′ , x〉 (T ′: con inputz , esegue T (z) e se T (z) termina, allora accetta)
Abbiamo costruito una stringa x ′ tale che x ∈ L1 se e solo se x ′ 6∈ L2
Da Lacc a Lempty: data 〈cT , x〉 abbiamo costruito cT ′ (T ′ con input z ,se z 6= x rigetta, altrimenti esegue T con input z = x)
In entrambi i casi, se L2 (e quindi Lc2) fosse decidibile, allora L1 sarebbe
decidibile
Assurdo
() IT-03 57 / 150
Riducibilita: definizione formale
L1 riducibile a L2 (L1 ≤ L2) se esiste riduzione f : {0, 1}∗ → {0, 1}∗,tale che, per ogni x , x ∈ L1 se e solo se f (x) ∈ L2
{0, 1}∗
L1
{0, 1}∗
L2
x ∈ L1 f (x) ∈ L2
y 6∈ L1 f (y) 6∈ L2
Dalle riduzioni “informali” segue che Lstop ≤ Lstop−0, Lstop ≤ Lacc eLacc ≤ Lc
empty
() IT-03 58 / 150
Riducibilita e decidibilita
Se L1 riducibile a L2 e L2 decidibile, allora L1 decidibile (e quindi, Lc1
decidibile)
Usiamo macchina che decide L2 per costruire macchina che decide L1
T1
Tf T2
qT10 x
qTf1 f (x)
qT20 f (x) q
T21 b
qT11 b
Se L1 riducibile a L2 e L1 non decidibile, allora L2 non decidibile
Se L1 riducibile a Lc2 e L1 non decidibile, allora L2 non decidibile
() IT-03 59 / 150
Esempio: Lreg = {cT : L(T ) e regolare}
Dimostriamo che Lstop−0 ≤ Lreg
A partire da cT dobbiamo costruire c ′T tale cheT (0) termina se solo se L(T ′) e un linguaggio regolare
{0, 1}∗: regolare{0n1n : n ≥ 0}: non regolare
Definiamo T ′ in modo che
Se T (0) termina allora L(T ′) = {0, 1}∗Se T (0) non termina allora L(T ′) = {0n1n : n ≥ 0}
T ′ con input y1 Se y ∈ {0n1n : n ≥ 0} accetta2 Altrimenti esegue T (0)3 Se T (0) termina, allora accetta
() IT-03 60 / 150
Auto-referenzialita
Nella dimostrazione, abbiamo costruito una macchina che usa la suastessa descrizione
E possibile?
Puo una macchina avere accesso alla sua propria codifica?Per scrivere la codifica di una macchina T dobbiamo definire unamacchina “piu potente” di T ?
Si: esistono macchine di Turing che possono stampare la propriacodifica
() IT-03 61 / 150
Costruire programmi che si auto-riproducono
Va bene Scrivi questa frase?
No: uso di auto-referenzialita
Applicare un programma P a una stringa (programma) Q
Scrivi due copie della frase che segue i due punti e
racchiusa tra virgolette, racchiudendo la seconda copia
tra virgolette:‘‘Scrivi due copie della frase che segue
i due punti e racchiusa tra virgolette, racchiudendo la
seconda copia tra virgolette:’’
P riproduce il suo argomento Q seguita da una versione di Q travirgolette
Q e (produce) il testo di P
() IT-03 62 / 150
Un programma Java che scrive se stesso
class P {
public static void main(String [] a) {
char quote = 34;
System.out.println(Q+quote+Q+quote);
}
static String Q = "frase";
}
Risultato: stampa di frase"frase"
Sufficiente assegnare a Q testo programma, fino al punto in cuiapparirebbe la frase
() IT-03 63 / 150
Un programma Java che scrive se stesso
class P {
public static void main(String [] a) {
char quote = 34;
System.out.println(Q+quote+Q+quote);
}
static String Q = "class P { ... String Q = ";
}
Risultato: stampa del codice stesso a eccezione dell’ultimo punto evirgola e dell’ultima parentesi graffa
Sufficiente modificare le due occorrenze dell’istruzione di stampa con
System.out.println(Q+quote+Q+quote+’;’+’}’);
Risultato: stampa esatta del codice stesso
() IT-03 64 / 150
La tesi di Church-Turing
() IT-04 65 / 150
Altri modelli di calcolo oltre a MdT?
Le macchine di Turing rappresentano un modello di calcolo moltosemplice che permette
definire formalmente il concetto di algoritmo, di funzione calcolabile edi problema decidibilemostrare lesistenza di funzioni non calcolabili e problemi non decidibili
Che cosa ha portato Turing ad affrontare questi problemi?
Esistono altri modelli di calcolo piu potenti delle MdT (in grado dicalcolare funzioni che le MdT non sono in grado di calcolare)?
() IT-04 66 / 150
Un po’ di storia, Hilbert
1900: Al Secondo Congresso Internazionale di Matematica Hilbert formula23 problemi matematici per il XX secolo. Il secondo problema riguarda laconsistenza (cioe la non contraddittorieta ) della teoria logica dellaritmeticadei numeri naturali basata sugli assiomi introdotti da Peano nel 1889.1928: Hilbert riformula i problemi aperti riguardanti laritmetica:
LAritmetica e completa? Cioe e possibile dimostrare ogni asserzionevera?LAritmetica e consistente? Cioe siamo certi che non sia possibiledimostrare unasserzione e anche la sua negazione? Se cio fosse veroogni asserzione sarebbe dimostrabile, quindi per dimostrare laconsistenza e sufficiente dimostrare che esistono asserzionidellaritmetica non dimostrabili.LAritmetica e decidibile? Cioe esiste un algoritmo che consente didecidere se unasserzione e un teorema?
() IT-04 67 / 150
Un po’ di storia, il ruolo dei paradossi
I seguenti paradossi mostrano come possiamo fare affermazioni che nonsono ne ne false
Epimenide di Creta (VI sec. a. C.): Tutti i cretesi sono bugiardi.(questa affermazione non puo essere vera ma puo essere falsa; non eun vero paradosso)Eubulide di Mileto (IV sec. a. C.): Questa frase e falsa oppure io stomentendoBuridano (XIV sec.): Socrate dice: “Platone dice il falso” Platonedice: “Socrate dice il vero” (le due affermazioni congiunte sono unparadosso)Russell (XX sec.): Linsieme di tutti gli insiemi che non appartengono ase stessi, appartiene o no a se stesso?Russell: In un villaggio il barbiere rade tutti e soli coloro che non siradono da soli; chi e che rade il barbiere?Gonseth (XX sec.): In una biblioteca puo esistere un catalogo di tutti icataloghi bibliografici che non contengono se stessi?
() IT-04 68 / 150
Un po’ di storia, Godel
1931: Godel dimostra che l’aritmetica non puo essere al tempo stessocompleta e consistente. Idea della prova:
Rappresentare la logica (assiomi, regole d’inferenza, dimostrazioni eteoremi) all’interno dell’aritmetica mediante un procedimento diaritmetizzazione (o godelizzazione, cioe codificazione dell’apparatodella logica mediante numeri interi).Ricorrere allo stesso tipo di assurdita che si presentano nei classiciparadossi sfruttando l’autoreferenzialita e cioe creando un’asserzione wche afferma: w non e dimostrabile. Se w fosse falsa sarebbedimostrabile e, quindi se il calcolo non contraddittorio, w non puoessere falsa e deve essere vera. Ma se w e vera non e dimostrabilecontraddicendo se stessa. Quindi w e un esempio di asserzione vera manon dimostrabile.Conseguenze: l’aritmetica non completa o non e consistente (ma laconsistenza non e dimostrabile allinterno della teoria stessa).
() IT-04 69 / 150
Un po’ di storia, Turing
1935: Turing dimostra l’indecidibilita dellaritmetica
Definisce il concetto di algoritmo introducendo le macchine di Turing.Mostra che il problema della terminazione di una macchina di Turing eformulabile come un’asserzione dell’aritmetica (ancora mediante unagodelizzazione).Mostra che il problema della terminazione non e risolubile con lemacchine di Turing e quindi e indecidibile. Tale risultato implica chel’aritmetica stessa non e decidibile.
() IT-04 70 / 150
Un po’ di storia, Church Markov ed altri
Contemporaneamente a Turing Church ha introdotto un concetto dicalcolabilita (λ-definibilit) basato su un sistema algoritmico (λ-calcolo).Tale sistema e stato dimostrato equivalente alle macchine di Turing,dallo stesso Turing.Cio ha permesso di formulare la Tesi di Church-Turing: Ogni funzioneche sia dimostrata calcolabile con un qualunque modello di calcoloformale e calcolabile secondo TuringAbbiamo anche visto che esiste una corrispondenza fra funzionicalcolabili con MdT e il riconoscimento di linguaggi.Successivamente sono stati proposti molti modelli di calcolo (daMarkov, Kleene Post, e altri) basati su approcci diversi. Pero
Tutti i modelli proposti sono equivalenti alle MdTSulla base di questi risultati oggi e convinzione comune che non esistaun modello di calcolo piu potente delle MdT e che la tesi diChurch-Turing sia vera
() IT-04 71 / 150
Algoritmi di Markov
Un algoritmo di Markov e definito da un insieme finito e ordinato diregole di riscrittura
a→ b con a, b ∈ Σ∗
a⇒ b con a, b ∈ Σ∗ (regola finale)
Una regola e applicabile alla prima occorrenza della sua parte sinistra
Se xay ∈ Σ∗ e x non contiene a, allora a→ b (a⇒ b) puo essereapplicata producendo xby
Esecuzione di un algoritmo di Markov con input x1 current = x2 Scandisce le regole nell’ordine specificato3 Se nessuna regola e applicabile a current, termina con output
current4 Applica a current la prima regola applicabile producendo y : se la
regola e terminale, termina con output y , altrimenti current = y etorna al passo 2
() IT-04 72 / 150
Linguaggi di programmazione
Ogni programma scritto in Java puo essere tradotto in linguaggiomacchina
Compito dei compilatori
Se dimostriamo che esistono funzioni non calcolabili da un linguaggiomacchina, allora abbiamo che esistono funzioni non calcolabili da unprogramma Java
Modello di calcolo almeno potente quanto un linguaggio macchinaDimostrazione che ogni algoritmo realizzato in tale modello puo esseresimulato da una macchina di TuringDimostrazione che macchina di Turing puo essere simulata da unalgoritmo realizzato in tale modello
() IT-04 73 / 150
Random Access Machine
Ha un numero potenzialmente infinito di registri e un contatore diprogramma
Ogni registro e individuato da un indirizzo interoOgni registro puo contenere un numero intero arbitrariamente grande
n denota un intero, (n) denota il contenuto del registro il cuiindirizzo e n e [n] denota il contenuto del registro il cui indirizzo econtenuto nel registro il cui indirizzo e n
Programma RAMSequenza di istruzioni (eventualmente etichettate)
(n):=o1 operatore o2 oppure [n]:=o1 operatore o2 dove operatore e{+,−, ∗, /} e o1 e o2 possono essere m, (m) o [m]
if o1 operatore o2 goto etichetta dove operatore e {=, <>,<=, <}e o1 e o2 possono essere m, (m) o [m]
end
() IT-04 74 / 150
Esecuzione di un programma RAM
Inizialmente i primi n registri contengono n valori interi, tutti altriregistri contengono 0 e il contatore di programma e uguale a 0
A ogni passo, l’istruzione indicata dal contatore di programma vieneeseguita
Se l’istruzione non e if, il contatore di programma aumenta di 1Altrimenti, se la condizione non e verificata, il contatore di programmaaumenta di 1Altrimenti, il contatore di programma viene posto uguale all’indicedell’istruzione corrispondente all’etichetta
Istruzione end termina esecuzione
Output contenuto nel registro 0
() IT-04 75 / 150
Esempio
Decidere se una sequenza di 10 numeri interi e palindroma
(11) := 9 + 0
loop: if (11) <= (10) goto yes
if [10] <> [11] goto no
(10) := (10) + 1
(11) := (11) - 1
if 0 = 0 goto loop
yes: (0) := 1 + 0
end
no: (0) := 0 + 0
end
() IT-04 76 / 150
La tesi Church-Turing
Una funzione f : Nn → N e calcolabile se e solo se f e Post-calcolabile see solo se f e Markov-calcolabile se e solo se f e ricorsiva se e solo se f eRAM-calcolabile
E calcolabile tutto cio che puo essere calcolatoda una macchina di Turing.
() IT-04 77 / 150
Linguaggi e Macchine di Turing
() Lucidi di P.Crescenzi, Unifi 78 / 150
Funzioni calcolabili e linguaggi decidibili
Che relazione esiste fra MdT e i linguaggi formali? Ricordiamo che
Linguaggio L su un alfabeto Σ e un sottoinsieme di Σ∗
χL : Σ∗ → {0, 1}: funzione caratteristica di L
χL(x) =
{1 se x ∈ L,0 altrimenti
L decidibile se e solo se la funzione caratteristica e calcolabile con unaMdT
Esempio: L = {1n : n = 2k}
Vedremo che e possibile caratterizzare la relazione fra MdT elinguaggi secondo la gerarchia di Chomsky,
() Lucidi di P.Crescenzi, Unifi 79 / 150
Semplici proprieta
Se L e decidibile, allora Lc e decidibile
L decidibile sse ∃ mdT T con 1 stato finale che termina ∀x e cheaccetta sse x ∈ L
Se
Solo se
() Lucidi di P.Crescenzi, Unifi 80 / 150
Linguaggi semi-decidibili
Un linguaggio L e semidecidibile se esiste MdT T ∈ T che con input x , sex ∈ L, allora T (x) termina in configurazione finale, altrimenti T (x) nontermina
Lstop e semi-decidibileDeriva da esistenza di MdT universale U
1 Verifica che input sia 〈cT , x〉2 Esegue U con input cT e x : se termina, termina in configurazione finale
() Lucidi di P.Crescenzi, Unifi 81 / 150
Lcstop non e semi-decidibile
L e decidibile se e solo se L e Lc sono semi-decidibiliDimostrazione
Solo se
Se L e decidibile, allora L e chiaramente semi-decidibileSe L e decidibile, allora Lc e decidibile e, quindi, semi-decidibile
Se
Siano T e T c due macchine di Turing che semi-decidono,rispettivamente, L e Lc
Tdec(x) simula T (x) e T c(x) in parallelo su due nastriPer ogni x ∈ Σ∗, T (x) termina oppure T c(x) terminaSe termina T (x), Tdec(x) termina in stato finale altrimenti termina inconfigurazione di rigetto
C
orollario: Lcstop non e semi-decidibile
() Lucidi di P.Crescenzi, Unifi 82 / 150
Generatore di un linguaggio
Generatore di un linguaggio L: MdT T che, con input λ, stampauna dopo l’altra tutte le (potenzialmente infinite) stringhe contenutein L (in un qualunque ordine e eventualmente con ripetizione)
L e semi-decidibile sse L ammette generatore
Se: esegue generatore fino a trovare stringa in inputSolo se: esegue visita in ampiezza di tutte le infinite computazioni coninput xi
() Lucidi di P.Crescenzi, Unifi 83 / 150
Ricordiamo la definizione di grammatica
Grammatica: quadrupla G = (V ,T , S ,P)
V : alfabeto di simboli non terminaliT : alfabeto di simboli terminaliS ∈ V : simbolo inizialeP: insieme di produzioni
x → y con x , y ∈ (V ∪ T )∗ e x contenente almeno un simbolo in V
Produzione x → y applicabile a stringa z se z = uxv : risultatow = uyv
w direttamente generabile da z
Frase z generabile da G se esiste sequenza finita di x0, . . . , xn taleche
x0 = Sxi direttamente generabile da xi−1
xn = z
Linguaggio generato da G : insieme di stringhe generabili da G
() Lucidi di P.Crescenzi, Unifi 84 / 150
La gerarchia di Chomski
Tipo di linguaggio Tipo di produzioni
Tipo 0 α→ β con α ∈ (V ∪ T )∗V (V ∪ T )∗
e β ∈ (V ∪ T )∗
Contestuale α→ β con α ∈ (V ∪ T )∗V (V ∪ T )∗,β ∈ (V ∪ T )∗ e |β| ≥ |α|
Libero da contesto A→ β con A ∈ Ve β ∈ (V ∪ T )(V ∪ T )∗
Regolare A→ aB e A→ acon A,B ∈ V e a ∈ T
Obiettivo: determinare i corrispondenti modelli di calcolo
() Lucidi di P.Crescenzi, Unifi 85 / 150
Grammatiche regolari, tipo 3
Le produzioni sono
A→ a con A ∈ V e a ∈ TA→ aB con A,B ∈ V e a ∈ T
Esempio: linguaggio delle sequenze unarie di lunghezza pari
A→ 1BB → 1B → 1A
Produzione di 1111: A→ 1B →B→1A 11A→A→1B 111B →B→1 1111Ogni 1 prodotto da A si accoppia a un 1 prodotto da B
() Lucidi di P.Crescenzi, Unifi 86 / 150
MdT di sola lettura e grammatiche regolari
Abbiamo visto che un linguaggio regolare e riconosciuto da un automa astati finitiOsserviamo che un automa a stati finiti e equivalente ad una macchina diTuring tale che
la testina e di sola lettura
ad ogni passo di calcolo la testina si sposta a destra
() Lucidi di P.Crescenzi, Unifi 87 / 150
Macchine di Turing non deterministiche
Grafo delle transizioni puo includere:
Arco uscente da q con etichetta contenente almeno due triple
〈σ, τ1,m1〉
e〈σ, τ2,m2〉
tali cheτ1 6= τ2
oppurem1 6= m2
Due o piu archi distinti uscenti da q con etichette contenenti ciascunaalmeno una tripla con lo stesso primo simbolo
() Lucidi di P.Crescenzi, Unifi 88 / 150
Albero delle computazioni e decidibilita
Computazione di mdT non deterministica: albero dellecomputazioni
Nodi: configurazioni della mdTArchi: produzione di una configurazione da parte di un’altra
Cammino (finito o infinito) dell’albero che parte dalla radice:cammino di computazione
Input x accettato da mdT: albero delle computazioni includealmeno un cammino di computazione accettante (cammino dicomputazione che termina in configurazione finale)
Linguaggio accettato da mdT: insieme delle stringhe accettate
() Lucidi di P.Crescenzi, Unifi 89 / 150
Un esempio
Consideriamo il seguente linguaggio:
L = {xx : x ∈ {0, 1}∗}
MdT non deterministica che accetta L1 Sposta testina di una posizione a destra.2 Se simbolo letto non e �, non deterministicamente sceglie di tornare a
passo 1 oppure di eseguire passo 3: altrimenti, termina in stato nonfinale
3 Sposta contenuto del nastro di una posizione a destra.4 Inserisce simbolo @ e posiziona testina su primo simbolo a sinistra5 Verifica se le due stringhe separate da @sono uguali: in tal caso,
termina in stato finale. Altrimenti, termina in stato non finale
() Lucidi di P.Crescenzi, Unifi 90 / 150
q0010010
0q110010
q60@10010
@q810010
01q10010
q601@0010
@@q10010
010q1010
q6010@010
q6@@@
q12
0100q110
q60100@10
100@q810
01001q10
q601001@0
001@@q10
010010q1
() Lucidi di P.Crescenzi, Unifi 91 / 150
MdT non deterministiche e MdT (deterministiche)
Le macchine non deterministiche non sono piu potenti delle macchinedeterministiche. InfattiPer ogni mdT non deterministica T , esiste mdT T ′ tale che L(T ) = L(T ′)
Idea: visita in ampiezza di albero delle computazioni
Idea: visita in ampiezza di albero delle computazioniUn nastro usato come coda: configurazioni di T inserite man mano chesono generate ed estratte per generarne di nuove (all’inizioconfigurazione iniziale)Un nastro usato per memorizzare configurazione estratta ed esaminarlaper generare configurazioni da essa prodotteT ′ estrae configurazione in testa alla coda: se e finale, termina in statofinale, altrimenti calcola configurazioni prodotte inserendole in coda
Coda vuota al momento di estrazione: termina in stato non finale
() Lucidi di P.Crescenzi, Unifi 92 / 150
Grammatiche di tipo 0 e macchine di Turing
Se un linguaggio L e di tipo 0 allora esiste una macchina di Turing nondeterministica a due nastri che semi-decide L
DimostrazioneMacchina di Turing non deterministica con due nastri che opera nelmodo seguente
1 Inizializza il secondo nastro con il simbolo iniziale S2 Sia φ il contenuto del secondo nastro. Per ogni produzione α→ β in
P, non deterministicamente applica (tante volte quanto e possibile) taleproduzione a φ, ottenendo la stringa ψ direttamente generabile da φ
3 Se il contenuto del secondo nastro e uguale a x (che si trova sul primonastro), termina nello stato qsi. Altrimenti torna al secondo passo
T accetta tutte e sole le stringhe che possono essere generate a partireda S
Non determinismo non necessario
() Lucidi di P.Crescenzi, Unifi 93 / 150
Grammatiche contestuali, tipo 1
Le produzioni sono
α→ β con |β| ≥ |α|Esempio: linguaggio delle sequenze del tipo 0n1n2n per n > 0
S → 012S → 0A12A1→ 1AA2→ B1221B → B10B → 000B → 00A
Produzione di 001122: S → 0A12→A1→1A 01A2→A2→B122
01B122→1B→B1 0B1122→0B→00 001122
Ogni forma sentenziale contiene un solo simbolo non terminale
Regola da applicare univocamente determinata
() Lucidi di P.Crescenzi, Unifi 94 / 150
Grammatiche di tipo 1 (contestuali) e MdT
Se un linguaggio L e contestuale allora esiste una macchina di Turing nondeterministica a tre nastri che decide L
Dimostrazione: come nel caso dei linguaggi di tipo 0Quando cerca di applicare (in modo non deterministico) una produzione,verifica se la stringa ottenuta ha lunghezza minore oppure ugualeall’input x
Se cosı non e, termina in stato non finale
Evitare di rimanere sempre in stringhe della stessa lunghezza a causadell’applicazione ciclica della stessa sequenza di produzioni
Numero di possibili stringhe distinte di lunghezza k, con 1 ≤ k ≤ |x |, epari a |N ∪ T |kMantiene sul terzo nastro un contatore inizializzato ogni volta che unastringa di lunghezza k viene generata sul secondo nastro per la primavoltaPer ogni produzione che viene applicata, se la lunghezza della stringagenerata non aumenta, allora il contatore viene incrementato di 1Se il contatore supera |N ∪ T |k , allora termina in stato non finale
() Lucidi di P.Crescenzi, Unifi 95 / 150
Osservazione
Nella dimostrazione precedente, le celle utilizzate da ognicomputazione su ogni singolo nastro e limitato dalla lunghezza dellastringa x di input
Ovvio per i primi due nastriIl terzo nastro contiene un contatore da 1 a, al massimo, |N ∪ T ||x|
Operando in aritmetica in base |N ∪ T |, anche questo contatorerichiede al piu un numero di celle limitato da |x |
() Lucidi di P.Crescenzi, Unifi 96 / 150
La classe P
() IT-09 97 / 150
Complessita di un problema
Obiettivo: classificare i problemi dal punto di vista della lorocomplessita , cioe della quantita di risorse di calcolo che la lorosoluzione richiede
Risorse di interesse: Tempo e Memoria
Fra le due risorse la prima e la piu importante
Problemi trattabili e problemi intrattabili:
Trattabili: i problemi risolubili in tempo polinomiale con MdTIntrattabili quelli che sappiamo risolvere solo con algoritmi di costoesponenziale
() IT-09 98 / 150
Complessita temporale
MdT T con singolo nastro che termina per ogni input
Complessita temporaleFunzione f : N → Nf (n): max numero di passi eseguiti da T con input di lunghezza n
Analisi asintoticaf e g : funzioni da N in Nf = O(g(n)) se esistono c e n0 tali che, per n ≥ n0, f (n) ≤ cg(n)Esempio
f (n) = 1 + 10n + 7n2 + 22n6
f non e O(n5), f (n) = O(n6) e f (n) = O(2n)
() IT-09 99 / 150
Due osservazioni sulla complessita temporale
Dipende da modello di calcoloL = {0n1n : n ≥ 0}
Puo essere deciso da MdT con due nastri in tempo O(n)Non esiste MdT (con un nastro) che decide L in tempo O(n)Esiste MdT (con un nastro) che decide L in tempo O(n2)
Dipende da codifica utilizzata
Codifica unaria allunga rappresentazione di numero intero in modoesponenziale rispetto a codifica binariaEssendo input piu lungo, MdT ha piu tempo a disposizioneComplessita temporale O(n) con codifica unaria, puo voler direcomplessita temporale O(2n) con codifica binaria
() IT-09 100 / 150
La classe P
Insieme dei linguaggi L per i quali esiste MdT che decide L in tempoO(nk) per qualche k ≥ 1
Robusta rispetto al modello di calcoloTutti i modelli “ragionevoli” possono simularsi tra di loro con unoverhead polinomiale
Varianti deterministiche di macchine di TuringAlgoritmi di MarkovMacchine di PostLinguaggi di programmazione di alto livello
Robusta rispetto alla codificaTutte le codifiche in base b > 1 sono polinomialmente correlate tra diloro
logb n = logc nlogc b
() IT-09 101 / 150
Tipi di problemi
Restringersi a problemi su linguaggi e restrittivo?EsempioDato un grafo G con pesi positivi sugli archi e due nodi A e B del grafo
Problema di decisione: Esiste un percorso da A a B?
Problema di ottimizzazione: qual e il percorso piu breve tra A a B?
Problema di enumerazione: quanti sono i percorsi diversi da A a B?
Problema di ricerca: dato x trova un percorso da A a B di lunghezzainferiore a x
() IT-09 102 / 150
Tipi di problemi
EsempioDato un grafo G con pesi positivi sugli archi e due nodi A e B del grafo
Problema di decisione: Esiste un percorso da A a B?L1(G ) = insieme dei grafi G per cui esiste un percorso da A a BProblema di ottimizzazione: qual e il percorso piu breve tra A a B?L2,y (G ) = insieme dei grafi G per cui esiste un percorso da A a B dilunghezza inferiore a yRisolvere il problema di decisione per diversi valori di y permette dirisolvere il problema di ottimizzazione
Dato un grafo G sia W la somma di tutti i pesi associati agli archi delgrafoDato che i pesi sono positivi il percorso piu breve e ha valore compresofra 0 e WEffettua una ricerca binaria fra 0 e W cercando il piu piccolo valore yper cui G appartiene a L2,y (G )
Ragionamenti analoghi si possono applicare ai problemi dienumerazione e di ricerca
() IT-09 103 / 150
Problemi in P
Algoritmi descritti mediante linguaggio di programmazione di altolivello
Spesso, in linguaggio naturale
Istanze del problema codificate in modo ragionevole
Numeri rappresentati in base b > 1Insiemi rappresentati come sequenze di elementi separati da simbolospeciale
Quando possibile, attraverso regole che generano l’insieme
Problemi in P considerati trattabili
Problemi fuori di P considerati intrattabili
Cinque algoritmi A1, . . . ,A5
10−9 secondi per eseguire un singolo passo
Dimensione Algoritmo/complessita
istanza n A1/n2 A2/n
3 A3/n5 A4/2n A5/3n
10 0.1 µs 1 µs 0.01 ms 1 µs 59 µs30 0.9 µs 27 µs 24.3 ms 1 s 2.4 giorni
50 2.5 µs 0.125 ms 0.31 s 13 giorni 2.3× 105 secoli
() IT-09 104 / 150
Esempio: numeri relativamente primi
Decidere se, dati due numeri a e b, essi sono relativamente primi
Algoritmo di EuclideGCD(a, b) = GCD(b, r) dove r = a mod b
int GCD(int a, int b) {
if (b == 0) {
return a;
} else {
return GCD(b, a % b);
}
}
() IT-09 105 / 150
Analisi di complessita
Al piu, sono necessarie log(b) chiamate ricorsive.
Siano (ak−1, bk−1), (ak , bk), (ak+1, bk+1) tre coppie successive
Dimostriamo che bk−1 ≥ bk + bk+1
ak = qbk + bk+1
ak ≥ bk + bk+1
bk−1 = akbk−1 ≥ bk + bk+1 ovvero bk−1 ≥ 2bk+1
b = b0 ≥ 2k/2bk per ogni k ≥ 2Numero di passi al piu log b
Complessita temporale di GCD logaritmica rispetto al valore dei duenumeri
Quindi, lineare rispetto alla loro codifica
Decidere se due numeri sono relativamente primi appartiene a P
() IT-09 106 / 150
Esempio: cammini minimi in un grafo
Decidere se, dato un grafo G , due nodi u e v di G e un intero k,esiste un cammino da u a v di lunghezza al piu k
Algoritmo basato su programmazione dinamica per calcolare lalunghezza del cammino minimo tra una qualunque coppia di nodi
Nodi numerati da 1 a nA[h][i ][j ]: lunghezza del cammino minimo da i a j passando solo pernodi di indice minore oppure uguale a hA[h + 1][i ][j ] = min{A[h][i ][h + 1] + A[h][h + 1][j ],A[h][i ][j ]}
Un cammino minimo da i a j , che non passi per nodi di indici maggioridi h + 1, passa per il nodo h + 1 oppure no
A[n][u][v ]: lunghezza del cammino minimo da u a v
Complessita temporale: O(n3)
() IT-09 107 / 150
Esempio: 2-SAT
X = {x1, x2, . . . , xn}: insieme di n variabili booleane
Formula booleana in forma normale congiuntiva (CNF)
Insieme di m clausole ciClausola ci : insieme di letterali {l1, l2, . . . , lki}Letterale l : variabile o negazione di variabile in X
Assegnazione di valori per X : τ : X → {true, false}Letterale l soddisfatto da τ : l = xh ∧ τ(xh) = true oppurel = ¬xh ∧ τ(xh) = false
Clausola ci soddisfatta da τ : almeno un suo letterale soddisfattoFormula CNF soddisfatta da τ : ogni clausola soddisfatta da τ
Decidere se, data una formula CNF con al piu due letterali perclausola, esiste un’assegnazione che la soddisfa
() IT-09 108 / 150
Algoritmo
1 Poni x = x1 e assegna a x il valore true
2 Dichiara tutte le clausole non soddisfatte e tutte le variabili cheappaiono nelle clausole, tranne x , non assegnate
3 Seleziona una clausola non soddisfatta {lh, lk}Se uno dei due letterali ha assegnato il valore true, dichiara la clausolasoddisfatta e ripeti questo passoSe uno solo dei due letterali ha assegnato il valore false, assegna ilvalore true all’altro, dichiara la clausola soddisfatta e ripeti questopassoSe entrambi i letterali hanno assegnato il valore false e x haassegnato il valore false, termina rifiutando, altrimenti assegna a x ilvalore false e torna al passo 2
4 Se vi sono clausole non soddisfatte, cancella quelle soddisfatte, poni xuguale a una variabile di quelle rimanenti, assegna true a x e va alpasso 2. Altrimenti, accetta.
() IT-09 109 / 150
Analisi di complessita e osservazioni
Per ogni variabile, (al piu) due volte dobbiamo scorrere (al piu) tuttele clausole
Complessita temporale: O(nm)2-SAT appartiene a P
Non funziona per k-SAT (ogni clausola contiene al piu k letterali)quando k ≥ 3 e, in generale, per SAT (nessun limite).
Formula DNF (forma normale disgiuntiva)
Clausola Ci soddisfatta da τ : ogni suo letterale soddisfattoFormula DNF soddisfatta da τ : almeno una clausola soddisfatta da τBanale verificare che una clausola non e soddisfacibile
Deve contenere una variabile e la sua negazione
DNF-SAT appartiene a P
() IT-09 110 / 150
Riducibilita polinomiale
L1 polinomialmente riducibile a L2 (L1 ≤p L2) se esiste funzione fcalcolabile in tempo polinomiale tale che
x ∈ L1 ↔ f (x) ∈ L2
Se L1 ≤p L2 e L2 appartiene a P, allora L1 appartiene a P
Riducibilita come strumento per dimostrare la trattabilita di unproblema
2-COLORABILITY: dato un grafo G = (N,E ), decidere se esiste unafunzione f : N → {1, 2} tale che f (u) 6= f (v) se (u, v) ∈ E2-COLORABILITY e polinomialmente riducibile a 2-SAT
Associare una variabile booleana xi a ogni nodo iAssociare le due clausole {xi , xj} e {¬xi ,¬xj} a ogni arco (i , j)Se queste due clausole sono soddisfatte, allora le due variabili xi e xjdevono avere assegnati diversi valori
2-COLORABILITY appartiene a P
() IT-09 111 / 150
La classe NP
() IT-10 112 / 150
SAT
Data una formula CNF, tale formula e soddisfacibile?
Non si conoscono algoritmi polinomiali che risolvono questo problema
Ma
Se una formula ϕ e soddisfacibileEsiste assegnazione τ che soddisfa ϕ|τ | e polinomiale in |ϕ|Esiste un algoritmo polinomiale che verifica se, effettivamente, τsoddisfa ϕ
Basta sostituire alle variabili i valori assegnati da τ e verificare che ogniclausola sia soddisfatta
() IT-10 113 / 150
3-COLORABILITY
Dato un grafo G = (N,E ), esiste una funzione f : N → {1, 2, 3} taleche f (u) 6= f (v) se (u, v) ∈ E ?
Non si conoscono algoritmi polinomiali che risolvono questo problema
Ma
Se un grafo ϕ e 3-colorabileEsiste funzione f che colora con tre colori tutti i nodi|f | e polinomiale in |G |Esiste un algoritmo polinomiale che verifica se, effettivamente, f coloracon tre colori tutti i nodi (in modo corretto)
Basta verificare che, per ogni arco (u, v), f (u) 6= f (v)
() IT-10 114 / 150
HAMILTONIAN PATH
Dato un grafo G = (N,E ), esiste un cammino che passi per tutti inodi una e una sola volta?
Non si conoscono algoritmi polinomiali che risolvono questo problema
Ma
Se un grafo ammette un cammino hamiltonianoEsiste una sequenza s di N nodi distinti u1, . . . , u|n| tale che ui−1 eadiacente a ui , per ogni i con 2 ≤ i ≤ n|s| e polinomiale in |G |Esiste un algoritmo polinomiale che verifica se, effettivamente, s uncammino che passa per tutti i nodi una e una sola volta
Basta verificare che i nodi della sequenza siano distinti e che, per ogni icon 2 ≤ i ≤ n, (ui−1, ui ) ∈ E
() IT-10 115 / 150
PARTITION
Dato un insieme A di n numeri interi a1, . . . , an, esiste una partizionedi A in due sottoinsiemi A1 e A2 tale che la somma dei numeri in A1
sia uguale a quella dei numeri in A2?
Non si conoscono algoritmi polinomiali che risolvono questo problema
Ma
Se un insieme A ammette una partizione perfettaEsiste un sottoinsieme I dell’insieme {1, . . . , n} tale che∑
i∈I
ai =∑i 6∈I
ai
|I | e polinomiale in |A|Esiste un algoritmo polinomiale che verifica se, effettivamente, I e unapartizione perfetta
Basta verificare che∑
i∈I ai =∑
i 6∈I ai
() IT-10 116 / 150
La classe NP
Insieme di tutti i linguaggi L per cui esiste un polinomio p e unamacchina di Turing V che opera in tempo polinomiale tali che, perogni x ,
x ∈ L⇔ ∃y [|y | ≤ p(|x |) ∧ T (x , y) accetta]
(y e detta essere un certificato)
Definizione alternativa: insieme di tutti i linguaggi L per i quali esisteuna macchina di Turing non deterministica che decide L in tempopolinomiale
Con input x , la macchina di Turing prova non deterministicamentetutte le stringhe di lunghezza al piu p(|x |)Se x ∈ L, la stringa y e la codifica di un cammino accettante dellamacchina non deterministica
SATISFIABILITY, 3-COLORABILITY, HAMILTONIAN PATH ePARTITION appartengono a NP
() IT-10 117 / 150
P vs NP
Abbiamo visto che le MdT non deterministiche calcolano le stesse funzionicalcolabili con una MdT determinisitica. Infatti e possibile simulare unaMdT non deterministica con una macchina deterministica. Si noti perochela simulazione di un passo di calcolo della MdT non determinisitica puorichiedere l’esecuzione di molti passi da parte della MdT determinisitica.Infatti
P e contenuta in NP
Se x ∈ L, la stringa y e la codifica della computazione della macchinadeterministica T che, in tempo polinomiale, termina in stato finaleAlternativamente, una macchina di Turing deterministica e anche unamacchina di Turing non deterministica con grado di non determinismo 1
P e diversa da NP?
Domanda da un milione di dollariTrovare una prova e piu difficile che verificarla?Con risorse temporali di calcolo limitate, il non determinismo e piupotente del determinismo?
() IT-10 118 / 150
Linguaggi NP-completi
Intuitivamente, sono i problemi piu “difficili” in NP
Se uno solo di essi fosse in P, allora P sarebbe uguale a NP
Riducibilita come strumento per comparare la difficolta di dueproblemi
Se L1 ≤p L2 e se L1 non appartiene a P, allora L2 non appartiene a PL2 e almeno tanto difficile quanto L1
Linguaggio NP-completo: linguaggio L in NP tale che ogni altrolinguaggio L′ in NP e polinomialmente riducibile a L
Se L e NP-completo e L appartiene a P, allora P e uguale a NPPer risolvere la questione P vs NP possiamo
Mostrare che L non e in P (P diverso da NP)Mostrare che L e in P (P uguale a NP)
() IT-10 119 / 150
Dimostrare risultati di NP-completezza
Vogliamo dimostrare che un linguaggio L e NP-completo
Mostriamo che tutti i linguaggi in NP sono polinomialmente riducibili aLOppure
Conosciamo gia dei linguaggi NP-completiSufficiente trovare un linguaggio L′ NP-completo tale che L′ ≤p LPer la proprieta transitiva, questo implica che tutti i linguaggi in NPsono polinomialmente riducibili a L
Per usare la seconda strategia dobbiamo avere un primo linguaggioNP-completo
Teorema di Cook-Levin
SATISFIABILITY e NP-completo
() IT-10 120 / 150
3-SAT
Ogni clausola contiene esattamente tre letterali distinti
Riduzione da SAT
Tecnica di riduzione per sostituzione localeAd ogni clausola c = {l0, . . . , lk−1} facciamo corrispondere insieme Dc
di nuove clausole (con eventuali nuove variabili) tale che a ogniassegnamento che soddisfa c corrisponde un’estensione che soddisfatutte le clausole in Dc (e viceversa)
k = 1: Dc = {{l0, y c0 , y
c1 }, {l0, y c
0 , yc1 }, {l0, y c
0 , yc1 }, {l0, y c
0 , yc1 }}
k = 2: Dc = {{l0, l1, y c0 }, {l0, l1, y c
0 }}k = 3: Dc = {c}k > 3:
Dc = {{l0, l1, y c0 }, {y c
0 , l2, yc1 }, {y c
1 , l3, yc2 }, . . .
. . . , {y ck−5, lk−3, y
ck−4}, {y c
k−4, lk−2, lk−1}
() IT-10 121 / 150
3-COLORABILITY
Riduzione da 3-SATTecnica di riduzione per progettazione di componenti
Per ogni variabile, una componente (gadget) del grafo il cui scopo equello di modellare l’assegnazione di verita alla variabile (a sinistra) e,per ogni clausola, un gadget il cui scopo e quello di modellare lasoddisfacibilita della clausola (a destra)
Pilu Crescenzi
ITLC
C
149
Figura 6.1: riduzione da 3-SAT a 3-COLORABILITY.
T
F
N
tu
fu l0
l1
l2
ac
bc
dc gc
hc
T
l0 l1 l2 ac bc dc gc hc
1 2 2 1 3 2 3 22 1 2 2 1 3 2 31 1 2 2 1 3 2 32 2 1 1 2 3 2 31 2 1 1 2 3 2 32 1 1 2 3 1 2 31 1 1 2 3 1 2 3
Viceversa, supponiamo che esista una colorazione f del grafo con tre colori e definiamoun’assegnazione ! di verita alle variabili di X nel modo seguente: per ogni variabile u ! X,se f(tu) = 1, allora !(u) = true, altrimenti !(u) = false. Supponiamo, per assurdo,che tale assegnazione non soddisfi almeno una clausola c ! C, ovvero che tutti i letteralicontenuti in c non siano soddisfatti. Cio implica che tutti i nodi corrispondenti a taliletterali e contenuti nel gadget corrispondente a c sono colorati con il colore 2. Quindi,f(hc) = 3 e f(gc) = 2: cio implica che f(dc) "= 2 e, quindi, che f(ac) = 2 oppuref(bc) = 2, contraddicendo l’ipotesi che f sia una colorazione corretta del grafo. Inconclusione, abbiamo dimostrato che C e soddisfacibile se e solo se il grafo e colorabilecon tre colori e, quindi, che il linguaggio 3-SAT e riducibile in tempo polinomiale allinguaggio 3-COLORABILITY: quindi, quest’ultimo e NP-completo.
6.4.4 Cammino hamiltoniano
Dimostriamo che 3-SAT e polinomialmente riducibile a HAMILTONIAN PATH, facen-do uso della tecnica di riduzione per progettazione di componenti. A tale scopo, siaC = {c0, . . . , cm!1} un insieme di m clausole costruite a partire dall’insieme X di n va-riabili booleane {x0, . . . , xn!1}. Vogliamo costruire, in tempo polinomiale, un grafo G
Formula soddisfacibile se e solo se grafo colorabilel0 l1 l2 ac bc dc gc hc
1 2 2 1 3 2 3 22 1 2 2 1 3 2 31 1 2 2 1 3 2 32 2 1 1 2 3 2 31 2 1 1 2 3 2 32 1 1 2 3 1 2 31 1 1 2 3 1 2 3
() IT-10 122 / 150
SUBSET SUM
Dato un insieme A di numeri interi e un numero intero s, esiste unsottoinsieme di A tale che la somma dei suoi numeri sia uguale a s?Riduzione da 3-SATTecnica di riduzione per progettazione di componentiEsempio: {x1, x2, x3}, {¬x1,¬x2, x3}, {¬x1, x2,¬x3}
Numero 1 2 3 1 2 3
p1 1 0 0 1 0 0n1 1 0 0 0 1 1p2 0 1 0 1 0 1n2 0 1 0 0 1 0p3 0 0 1 1 1 0n3 0 0 1 0 0 1
x1 0 0 0 1 0 0y1 0 0 0 1 0 0x2 0 0 0 0 1 0y2 0 0 0 0 1 0x3 0 0 0 0 0 1y3 0 0 0 0 0 1
s 1 1 1 3 3 3
() IT-10 123 / 150
PARTITION
Riduzione da SUBSET SUM
Tecnica di riduzione per similitudine
Dato A e s, sia S la somma degli elementi di A
Definiamo A′ = A ∪ {an+1 = 3S − s, an+2 = 2S + s}Se esiste B ⊆ A la somma dei cui elementi e s
A′1 = B ∪ {an+1} ha somma s + (3S − s) = 3SA′2 = A− B ∪ {an+1} ha somma (S − s) + (2S + s) = 3SQuindi, A′1 e A′2 e una soluzione per PARTITION
Se esistono sottoinsiemi A′1 e A′2 di A′ di uguale somma
A′1 e A′2 hanno somma S+(3S−s)+(2S+s)2
= 3San+1 appartiene a A′1 oppure a A′2 (supponiamo A′1)Quindi, A′1 −{an+1} e un sottoinsieme di A la somma dei cui elementi es
() IT-10 124 / 150
HAMILTONIAN PATH
Riduzione da 3-SAT
Tecnica di riduzione per progettazione di componenti
Gadget per variabile
Capitolo 6 – Le classi P e NP
ITLC
C150
Figura 6.2: il gadget associato alla variabile xi nella riduzione da 3-SAT a HAMILTONIAN PATH.
ui
p0i n0
i p1i n1
i· · · pm!1
i nm!1i
ui+1
tale che C e soddisfacibile se e solo se G include un cammino hamiltoniano. Per ognivariabile xi con 0 ! i < n, definiamo il gadget mostrato nella Figura ??, in cui il numerodi nodi inclusi nella diagonale del rombo e pari a due volte il numero delle clausole. Inparticolare, per ogni variabile xi, introduciamo in G un nodo ui e, per ogni variabile xi
e per ogni clausola cj, introduciamo in G due nodi pji e n
ji. Inoltre, per ogni variabile
xi, aggiungiamo a G gli archi (ui, p0i), (ui, nm!1
i ), (p0i , ui+1) e (nm!1
i , ui+1), dove ilnodo un e un nuovo nodo di G. Infine, per ogni variabile xi e per ogni clausola cj,aggiungiamo a G gli archi (pj
i, nji), (nj
i, pji) e (nj
i, pj+1i ) (ad eccezione, ovviamente, del-
l’arco (nm!1i , pm
i ) che non puo essere aggiunto in quanto il nodo pmi non esiste). Cio
completa la costruzione dei gadget che modellano l’assegnazione di verita alle variabili.Per ogni clausola cj, definiamo poi il gadget che modella la soddisfacibilita della clausolacome costituito da un solo nodo vj. I due insiemi di gadget sono collegati tra di loro nelmodo seguente (si veda la Figura ??). Se una variabile xi appare affermata nella clausolacj allora aggiungiamo un arco dal nodo p
ji al nodo vj e uno dal nodo vj al nodo n
ji (co-
me mostrato nella parte sinistra della figura). Viceversa, se una variabile xi appare negatanella clausola cj allora aggiungiamo un arco dal nodo n
ji al nodo vj e uno dal nodo vj al
nodo pji (come mostrato nella parte destra della figura). Intuitivamente, ogni cammino
hamiltoniano dovra decidere se visitare la diagonale del rombo di una variabile xi dasinistra verso destra oppure da destra verso sinistra: il primo caso corrisponde all’aver
() IT-10 125 / 150
Gadget per clausola: singolo nodoCollegamento tra i gadget
Pilu Crescenzi
ITLC
C
151
Figura 6.3: connessione tra gadget associati a variabili e gadget associati a clausole.
vj
· · · pji nj
i· · ·
vj
· · · pji nj
i· · ·
assegnato il valore true a xi e, quindi, alla possibilita di soddisfare tutte le clausole cj incui xi appare affermata, mentre il secondo caso corrisponde ad aver assegnato il valorefalse a xi e, quindi, alla possibilita di soddisfare tutte le clausole cj in cui xi appare ne-gata. Ancora una volta, e chiaro che la costruzione dell’istanza di HAMILTONIAN PATHpuo essere eseguita in tempo polinomiale. Dimostriamo ora formalmente che la formulabooleana e soddisfacibile se e solo se il grafo risultante dalla riduzione ammette un cam-mino hamiltoniano. Supponiamo che esista un’assegnazione ! di verita alle variabili diX che soddisfa C. Quindi, ! soddisfa cj per ogni clausola cj ! C: sia lj il primo deiletterali in cj a cui ! assegna il valore true e sia xi(j) la variabile corrispondente a lj.Possiamo costruire un cammino hamiltoniano in G nel modo seguente. Per ogni nodoui con 0 ! i ! n ! 1, distinguiamo i seguenti due casi.
1. !(xi) = true. In tal caso, includiamo nel cammino hamiltoniano l’arco (ui, p0i)
e l’arco (nm!1i , ui+1). Inoltre, per ogni j con 0 ! j ! m ! 1 tale che i "= i(j),
includiamo nel cammino gli archi (pji, n
ji) e, per ogni j con 0 ! j < m ! 1,
includiamo nel cammino gli archi (nji, p
j+1i ). Infine, per ogni j con 0 ! j ! m!1
tale che i = i(j), includiamo nel cammino gli archi (pji, vj) e (vj, nj
i). In altreparole, alle variabili il cui valore di verita e true facciamo visitare la diagonaledel corrispondente rombo da sinistra verso destra e, ogni qualvolta incontriamouna clausola il cui valore di verita e determinato da tale variabile, eseguiamo una“deviazione” passando per il nodo corrispondente alla clausola.
Se formula e soddisfacibile, allora esiste cammino che passa a sinistra(true) o a destra (false) e visita le clausole la prima volta che puoSe esiste cammino, allora assegnando true a passaggi a sinistra efalse a passaggi a destra ogni clausola e soddisfatta
Non sono possibili deviazioni senza ritorno immediato
() IT-10 126 / 150
Conclusione
Se esiste y tale che V (x , y) accetta, da y e dalla computazioneV (x , y) deriviamo un’assegnazione che soddisfa la formula
Viceversa, da un’assegnazione che soddisfa la formula possiamoricavare dal valore delle variabili che appaiono in Dy un certificato ytale che V (x , y) accetta
La costruzione richiede tempo polinomiale
Quindi L e polinomialmente riducibile a SATISFIABILITY
Poiche L e un qualunque linguaggio in NP, SATISFIABILITY eNP-completo
() IT-10 127 / 150
La classe PSPACE
() IT-11 128 / 150
Complessita di spazio
Fino ad ora abbiamo considerato il tempo:
Data una funzione T : N → N, e una MdT deterministica M chericonosce il linguaggio L diciamo cheSe M decide L usando O(T (|x |)) tempo allora M ha complessitaTIME (T (|x |))P, NP sono classi basate sul tempo richiesto per il calcolo
Lo spazio e l’altra risorsa di interesse:Data una funzione T : N → N, e una MdT M che riconosce illinguaggio L diciamo cheSe M decide L usando O(T (|x |)) celle di memoria distinte sul nastrodi lavoro su input x ha complessita SPACE (T (|x |))
Nota: nella definizione precedente non contiamo le celle di memoriaper memorizzare l’input
() IT-11 129 / 150
La classe PSPACE
SPACE (nk) Insieme dei linguaggi L per i quali esiste MdT che decideL in spazio O(nk) = cnk per qualche costante c , dove n indica ladimensione dell’input
Nota: Se S1(n) = O(S2(n)) allora SPACE (S1(n)) = SPACE (S2(n))
La classe PSPACE e definita come⋃
c≥1 SPACE (nc)
Vedremo dei teoremi che legano PSPACE con le atre classi;mostreremo che- P ⊆ PSPACE ⊆ EXPTIME- NP ⊆ PSPACE
() IT-11 130 / 150
Relazioni fra SPACE (T (n)) e TIME (T (n))
TIME (T (n)) ⊆ SPACE (T (n))
Se un linguaggio L puo essere deciso in tempo T (n) allora puo esseredeciso usando spazio T (n)
Banale: se la MdT esegue T (n) passi puo scrivere al massimo T (n)celle di memoria
Non e vero il contrario: SPACE (T (n)) ⊆ TIME (T (n)): Quicksortrichiede tempo O(n log n) ma spazio O(n)
Come corollario di TIME (T (n)) ⊆ SPACE (T (n)) segue cheP ⊆ PSPACE
() IT-11 131 / 150
Relazioni fra SPACE (T (n)) e TIME (T (n))
SPACE (T (n)) ⊆ TIME (2T (n))
Assumi che MdT possa decidere L in spazio SPACE (T (n)): con inputx la MdT si ferma sempre e o accetta (x ∈ L) o rifiuta (x 6∈ L)
Idea: la macchina non si puo trovare due volte nello stesso stato conla stessa configurazione del nastro di lavoro, perche : altrimenti lamacchina non si fermerebbe! Quindi il tempo e limitato da 2|C |, dove|C | e il numero di configurazioni
Sia una configurazione C della MdT la terna C= (stato, posizionetestina, Configurazione nastro lavoro)
La funzione di transizione ci porta da una configurazione C ad unaconfigurazione C ′
Ogni configurazione di una macchina che usa spazio T (n) puo esseredescritta usando cT (n) bit
Il numero di configurazioni possibili di una macchina che usa spazioT (n) e O(2T (n))
() IT-11 132 / 150
Relazioni fra PSPACE e NP
NP ⊆ PSPACE
E’ sufficiente mostrare per un linguaggio completo in NP che si puocalcolare con spazio polinomiale
Il teorema segue per ogni altro linguaggio in NP; infatti le riduzionipolinomiali in tempo usano spazio polinomiale
Proposizione: SAT e in PSPACE1 Sia data una formula con n variabili e m clausole2 Nella memoria di lavoro scrivi l’assegnazione in cui ogni variabile e 03 Verifica se l’assegnazione presente sul nastro di lavoro verifica la
formula e in questo caso termina (la fromula e soddisfacibile)4 Se l’assegnazione presente sul nastro di lavoro e quello in cui tutte le
variabili sono 1 allora termina (la formula non e soddisfacibile)altrimenti scrivi sul nastro di lavoro l’assegnazione successiva a quellacorrente e vai al passo 2
E’ facile vedere che la macchina si ferma in al piu O(2n) passi dicalcolo e usa spazio di lavoro O(n + m)
() IT-11 133 / 150
Una funzione in PSPACE
P ⊂ PSPACE ? Non lo sappiamo ma si crede che il contenimento siaproprio.Abbiamo visto che PSPACE include tutte le funzioni in NP. Oravediamo una funzione in PSPACE, ma che non sappiamo se sia in NP.
La funzione e motivata da un gioco fra due persone (Alice e Biagio) eutilizza una formula SAT in input:
Data una formula SAT ordiniamo le variabili come x1, x2, . . . , xnIl gioco e giocato da Alice e BiagioAlice fa la prima mossa e sceglie il valore di verita di x1
Biagio fa la seconda mossa e sceglie il valore di verita di x2
Il gioco prosegue con Alice che fissail valore di x3, poi Biagio fissa ilvalore di x4, Alice il valore di x5 e cosı viaAlice vince se alla fine la formula e soddisfatta; Biagio vince se laformula non e soddisfatta
Il gioco e cosı definito: Data una formula SAT esiste una strategiache permette ad Alice di vincere?
() IT-11 134 / 150
Esempio
Data la seguente formula chi vince?
(x1 ∨ x2) ∧ (¬x1 ∨ ¬x2)
Biagio vince. Infatti
Se Alice decide x1 = 1 allora Biagio decide x2 = 1 e la formula non esoddisfacibile
Se Alice decide x1 = 0 allora Biagio decide x2 = 0 e la formula non esoddisfacibile
In altre parole qualunque cosa decide Alice al primo passo esiste unascelta vincente per Biagio
() IT-11 135 / 150
Esempio
Data la seguente formula chi vince?
(x1 ∨ x2 ∨ ¬x3) ∧ (¬x1 ∨ ¬x2 ∨ x3) ∧ (x1 ∨ ¬x2 ∨ x3) ∧ (¬x1 ∨ ¬x2 ∨ ¬x3)
Alice vince. Infatti
Alice decide x1 = 1 allora Biagio decide x2 = 1 e qualunque cosadecida Alice sul valore di x3 la formula non e soddisfacibile e Biagiovince
Alice decide x1 = 0 allora Biagio decide x2 = 1 Alice sceglie x3 = 1 ela formula e soddisfacibile
Alice decide x1 = 0 allora Biagio decide x2 = 0 Alice sceglie x3 = 0 ela formula e soddisfacibile
() IT-11 136 / 150
La condizione per cui Alice vince
Data la seguente formula chi vince?
(x1 ∨ x2 ∨ ¬x3) ∧ (¬x1 ∨ ¬x2 ∨ x3) ∧ (x1 ∨ ¬x2 ∨ x3) ∧ (¬x1 ∨ ¬x2 ∨ ¬x3)
Alice vince perche puo scegliere un valore per x1 che non permette aBiagio di vincere qualunque sia la scelta di x2
In altre parole Alice vince perche esiste una scelta per x1 tale che, perqualunque scelta di Biagio di x2, esiste una scelta di Alice di x3 che lepermette di soddisfare la formula.
Cioe esiste un valore per x1 tale che per ogni valore di x2 esiste unvalore di x3 tale che per ogni valore di x4 esiste un valore di x5 ....
In formula scriviamo ∃x1∀x2∃x3∀x4φ(x1, . . . , xn) e soddisfatta dove ∃vuol dire esiste e ∀ vuol dire per ogni
() IT-11 137 / 150
Formule booleane quantificate QSAT
Una formula booleana quantificata (FBQ) e una formula del tipo
Φ = (Q1x1)(Q2x2) . . . (Qnxn)φ(x1, x2 . . . xn)
dove xi sono variabili booleane e Qi e del tipo ∃xi oppure ∀xi
Φ e valida se φ e soddisfatta per tutti i quantificatori Qi
Ad esempio ∃x1∀x2∀x3φ(x1, x2, x3) e valida se esiste un valore per x1
tale che per ogni valore di x2 e per ogni valore di x3 la formula φ esoddisfatta
Problema QSAT : Data una FBQ Φ dove φ e una formula di SAT cichiediamo se e Φ valida?
() IT-11 138 / 150
QSAT e in PSPACE
Mostriamo che esiste un algoritmo che solve QSAT e richiede spaziopolinomiale
Data una formula φ con n variabili e sufficiente considerare unalgoritmo che cicla attraverso tutti i 2n valori di verita ?
Problema: bisogna memorizzare molte informazioni durantel’enumerazione
Infatti con la formula ∃x1∀x2∀x3φ(x1, x2, x3) per risolvere il problemadobbiamo memorizzare i risultati per 2 bit di x1, 2 bit di x2 e cosı viaper un totale di 2n bit di spazio!
Un algoritmo banale richiede spazio esponenziale!
Soluzione: un algoritmo ricorsivo che riutilizza lo spazio
() IT-11 139 / 150
QSAT e in PSPACE
Un algoritmo che richiede spazio polinomiale
Data Φ = (Q1x1)(Q2x2) . . . (Qnxn)φ(x1, x2 . . . xn), poni i = 1 eapplica la seguente procedura ricorsivaSe Qi = ∃
Poni xi = 0, esegui (Qi+1xi+1)(Qi+2xi+2) . . . (Qnxn)φ(. . . , 0, xi+1 . . . xn)Poni xi = 1, esegui (Qi+1xi+1)(Qi+2xi+2) . . . (Qnxn)φ(. . . , 1, xi+1 . . . xn)Se almeno una delle due chiamate ricorsive da 1 allora ritorna 1altrimenti ritorna 0
Se Qi = ∀Poni xi = 0, esegui (Qi+1xi+1)(Qi+2xi+2) . . . (Qnxn)φ(. . . , 0, xi+1 . . . xn)Poni xi = 1, esegui (Qi+1xi+1)(Qi+2xi+2) . . . (Qnxn)φ(. . . , 1, xi+1 . . . xn)Se ambedue le chiamate ricorsive danno 1 allora ritorna 1 altrimentiritorna 0
Nota: l’algoritmo riutilizza lo spazio per ciascuna attivazione ricorsiva
S(n) denota lo spazio richiesto per n variabiliS(n) = 2 + S(n − 1): 2 bits per memorizzare le risposte piu S(n − 1)per l’attivazione ricorsivaRisolvendo l’equazione di ricorrenza S(n) = O(n)() IT-11 140 / 150
QSAT e in PSPACE
Un algoritmo che richiede spazio polinomiale
L’algoritmo visita il grafo in preordine: quando ha completato la visita dei
sottoalberi sinistro e destro allora calcola il valore del nodo che e ritornato al padre
() IT-11 141 / 150
Esempio
Un algoritmo che richiede spazio polinomiale
L’area grigia individua il sottoalbero parametro della attivazione ricorsiva: prima
attivazione albero completo
() IT-11 142 / 150
Esempio
Un algoritmo che richiede spazio polinomiale
L’area grigia individua il sottoalbero parametro della attivazione ricorsiva:
seconda attivazione
() IT-11 143 / 150
Esempio
Un algoritmo che richiede spazio polinomiale
L’area grigia individua il sottoalbero parametro della attivazione ricorsiva:
l’attivazione ricorsiva ritorna il valore 1 (in rosso nella figura)
() IT-11 144 / 150
Esempio
Un algoritmo che richiede spazio polinomiale
La procedura ricorsiva ritorna il valore 0 e questo permette il calcolo del valore
della funzione per il nodo etichettato da ∃ a sinistra
() IT-11 145 / 150
Esempio
Un algoritmo che richiede spazio polinomiale
L’area grigia individua il sottoalbero destro del etichettato da ∀ a sinistra
() IT-11 146 / 150
Esempio
Un algoritmo che richiede spazio polinomiale
Attivazione ricorsiva del sottoalbero sinistro di un nodo etichettato ∃
() IT-11 147 / 150
Esempio
Un algoritmo che richiede spazio polinomiale
Attivazione ricorsiva del sottoalbero destro di un nodo etichettato ∃; questo
permette di completare il calcolo della funzione per i due diretti ascendenti del
nodo (etichettati ∃ e ∀)() IT-11 148 / 150
Esempio
Un algoritmo che richiede spazio polinomiale
E’ stata completato il calcolo del calcolo della funzione per il sottoalbero sinistro
della radice; attivazione ricorsiva del sottoalbero destro della radice
() IT-11 149 / 150
QSAT e PSPACE completo
QBF e in PSPACE: quindi risolubile in spazio polinomiale
Si puo anche mostrare che e PSPACE completo: possiamo affermareche QBF e il piu difficile problema nella classe PSPACE
Ad esempio se si riuscisse a mostrare che QBF appartiene a NP alloratutti i problemi in PSPACE appartengono a NPNota: la riduzione di Cook usa tempo polinomiale e non funziona; civuole un’altra riduzionePer un problema in PSPACE possiamo usare tempo esponenziale per lariduzione
() IT-11 150 / 150