You are on page 1of 16

Appunti sulla teoria degli automi, dei linguaggi e della calcolabilit

Marco Liverani Ottobre 2005

1 Introduzione
Alla base dellInformatica, a fondamento della teoria su cui viene costruita la cosiddetta scienza dellinformazione, viene posta la teoria della calcolabilit, ossia lo studio di ci che calcolabile sulla base di un procedimento automatico, di un algoritmo diremmo utilizzando un termine appena pi preciso. Di conseguenza la teoria della calcolabilit studia anche ci che calcolabile non , ci che con un procedimento automatico non pu essere calcolato in un tempo nito, ossia ci che pu essere calcolato solo astrattamente impiegando un tempo enorme, che nessuno sarebbe mai disposto ad aspettare, ma anche ci di cui non si conosce il limite temporale entro cui potremmo conoscere la soluzione esatta. Ci si scontra cos immediatamente con i limiti estremi dellInformatica, la scienza che si occupa di denire metodi e tecniche per il calcolo e il trattamento automatico delle informazioni. Studiando ci che calcolabile e ci che non lo viene naturale analizzare pi astrattamente luniverso dei problemi, per vericare se esiste una gerarchia nel grado di difcolt dei problemi che possono essere affrontati e risolti (ossia la cui soluzione possa essere calcolata) mediante un algoritmo. In altre parole viene naturale chiedersi se esiste la possibilit di stabilire se un determinato problema oggettivamente pi arduo di un altro, al di l dellopinione personale di chi tali problemi sta cercando di risolverli. Emerge cos una teoria della complessit dei problemi e degli algoritmi mediante cui siamo in grado di risolverli. Questa breve nota presenta degli appunti estremamente sintetici e schematici sulla teoria degli automi e della calcolabilit. Sono solo alcuni spunti che possono essere utili a dare unidea di alcuni dei temi trattati da questa parte fondante dellInformatica. Per il necessario completamento ed approfondimento degli argomenti che in queste pagine sono soltanto sorati, si rimanda ai testi citati nelle note bibliograche. In particolare bene precisare che lordine con cui sono trattati ed introdotti i diversi argomenti, riette in modo sostanziale limpostazione dellottimo testo di Hopcroft, Motwani e Ullman [3], ricco di numerosissimi esempi ed esercizi.
E-mail: liverani@mat.uniroma3.it http://www.mat.uniroma3.it/users/liverani/

2 Automi a stati niti


Un alfabeto un insieme nito e non vuoto di simboli; una stringa una sequenza nita di simboli di un alfabeto. Un linguaggio un insieme anche innito di stringhe costruite su uno stesso alfabeto. Spesso si pu confondere il concetto di linguaggio con quello di problema, visto che in teoria degli automi un problema costituito dalla questione di decidere se una certa stringa appartiene o meno ad un determinato linguaggio. Un automa a stati niti deterministico (Deterministic Finite Automata, DFA) un oggetto costituito dai seguenti elementi: un insieme nito di stati Q; un insieme nito di simboli di input ; una funzione di transizione che applicata ad un simbolo e ad uno stato restituisce uno stato: : Q Q; uno stato iniziale q 0 scelto fra gli stati di Q; un insieme di stati nali F Q. Dunque un DFA una quintupla: A = (Q, , , q 0 , F ). Un DFA pu essere espresso elencando le sue componenti e descrivendo la funzione di transizione, oppure mediante un grafo detto diagramma delle transizioni di stato o mediante una matrice di transizione. Dato un automa a stati niti deterministico questo denisce un linguaggio sullalfabeto , costituito da tutte le stringhe ottenute concatenando le etichette presenti sul grafo delle transizioni sugli spigoli dei cammini che vanno dallo stato iniziale ad uno degli stati accettanti. In altre parole il linguaggio L su denito da A = (Q, , , q 0 , F ) dato da tutte le stringhe che producono una sequenza di transizioni dallo stato iniziale q 0 ad uno degli stati accettanti di F . Con indichiamo la funzione di transizione estesa, che descrive cosa succede (in quale stato si arriva) quando, a partire da un certo stato, lautoma elabora non un solo simbolo, ma una stringa costituita da una sequenza di simboli. Possiamo denire ricorsivamente la funzione di transizione estesa (con indicheremo dora in avanti la stringa vuota): (q, ) = q (q, w a) = ((q, w), a), con w a

Allora il linguaggio di un automa a stati niti deterministico A = (,Q, , q 0 , F ) de nito come L(A) = {w : (q 0 , w) F }. I linguaggio L = L(A) per qualche automa a stati niti deterministico A si chiamano linguaggi regolari. Un automa a stati niti non deterministico (NFA, Nondeterministic Finite Automata) un automa che pu trovarsi contemporaneamente in diversi stati. Anche un NFA si denisce come una quintupla A = (,Q, , q 0 , F ), dove: lalfabeto nito di simboli; 2

Q linsieme nito di stati; q 0 Q lo stato iniziale; F Q linsieme degli stati nali accettanti; una funzione : Q P (Q),1 che a fronte di un simbolo e di uno stato restituisce un sottoinsieme degli stati (dunque anche pi di uno stato). Anche in questo caso si pu denire la funzione di transizione estesa , che a fronte di una stringa restituisce linsieme degli stati in cui lautoma pu terminare la valutazione della stringa stessa. Un NFA accetta una stringa w quando (q 0 , w) F , ossia quando la valutazione della stringa termina in almeno uno stato accettante. Quindi, se A = (Q, , , q 0 , F ) un NFA, allora L(A) = {w : (q 0 , w) F } il linguaggio denito da quel NFA. Per ogni automa a stati niti non deterministico A N = (Q N , , N , q 0 , F N ) possibile costruire un automa a stati niti deterministico A D = (Q D , , D , q 0 , F D ), in grado di accettare lo stesso linguaggio di A N . A D infatti pu essere costruito scegliendo Q D = P (Q N ), ossia gli stati di A D sono costituiti da tutti i sottoinsiemi degli stati di A N . Quindi se S Q D S Q N , deniamo D (S, a) = qS N (q, a); inoltre F D linsieme dei sottoinsiemi di Q N che contengono almeno uno stato in F N : F D = {S Q N : S F N }. Osserviamo che se A N ha n stati (|Q N | = n) allora A D avr al pi 2n stati. Questo signica che lelaborazione di una stessa stringa accettata da un NFA, richiede un numero di passi esponenzialmente maggiore per il DFA corrispondente. Dato un automa a stati niti deterministico A D = {Q D , , D , q 0 , F D } possibile costruire un automa a stati niti non deterministico A N = {Q N , , N , q 0 , F N } equivalente, cio che accetta lo stesso linguaggio, ponendo Q N = Q D e se D (q, a) = p allora N (q, a) = {p}. Teorema 1 Un linguaggio L accettato da un automa a stati niti non deterministico se e solo se accettato da un automa a stati niti deterministico. Un -NFA un automa a stati niti non deterministico che esegue transizioni anche a fronte della stringa vuota . Gli -NFA non ampliano la classe dei linguaggi accettati da automi a stati niti: se L accettato da un -NFA, allora possibile costruire un NFA e un DFA che accettano L e che quindi sono equivalenti all-NFA. Un -NFA si denisce esattamente come un NFA, salvo che per la funzione di transizione che accetta come argomenti uno stato di Q ed un simbolo in {}.

3 Espressioni regolari
possibile denire tre operazioni fondamentali sui linguaggi: Unione: dati due linguaggi L e M si denisce il linguaggio L M come linsieme delle stringhe di L o di M o di entrambi.
1 Con P (Q) indichiamo linsieme delle parti di Q, costituito da tutti i sottoinsiemi di Q.

Espressioni regolari

NFA

epsilon-NFA

DFA

Figura 1: Schema delle dimostrazioni di equivalenza tra automi a stati niti ed espressioni regolari

Concatenazione: dati due linguaggi L e M si denisce il linguaggio LM come linsieme costituito da stringhe ottenute giustapponendo una stringa di L e una di M . La stringa nulla lidentit per la concatenazione: L{} = {}L = L. Chiusura: dato il linguaggio L, la chiusura L linsieme di stringhe ottenute concatenando un numero arbitrario di stringhe di L. Le espressioni regolari sono delle espressioni algebriche costruite utilizzando i tre operatori su simboli e linguaggi per descrivere altri linguaggi. Se E unespressione regolare, indichiamo con L(E ) il linguaggio che descritto e denito da E . Le espressioni regolari possono essere denite ricorsivamente: 1. Per ogni x , x unespressione regolare che rappresenta il linguaggio {x}. Anche e sono espressioni regolari. 2. Se A e B sono espressioni regolari, allora A + B unespressione regolare e rappresenta il linguaggio L(A) L(B ). 3. Se A e B sono espressioni regolari, allora anche AB lo ; rappresenta il linguaggio L(AB ) = L(A)L(B ). 4. Se A unespressione regolare, allora anche A lo ; rappresenta il linguaggio L(A ) = (L(A)) . Le espressioni regolari costituiscono uno strumento per la denizione di linguaggi, equivalente agli automi a stati niti: consentono di descrivere tutti e soli i linguaggi che possibile denire con i tre tipi di automa a stati niti (DFA, NFA, -NFA). Tali linguaggi sono chiamati linguaggi regolari. Il diagramma in Figura 1 evidenzia le dimostrazioni di equivalenza tra espressioni regolari ed automi a stati niti. Due espressioni regolari sono equivalenti se generano lo stesso linguaggio. Dunque opportuno conoscere alcune propriet delle espressioni regolari che ci permettono di stabilire facilmente se due espressioni sono equivalenti e se unespressione pu quindi essere semplicata riconducendola ad unaltra, pi semplice, ma equivalente.

Propriet commutativa: se A e B sono espressioni regolari, allora A + B = B + A; infatti L(A + B ) = L(A) L(B ) = L(B ) L(A). Propriet associativa dellunione: se A, B e C sono espressioni regolari, allora (A + B ) +C = A + (B +C ). Propriet associativa della concatenazione: se A, B e C sono espressioni regolari allora (AB )C = A(BC ). Identit per lunione: A + = + A = A.

Identit per la concatenazione: A = A = A. Annichilitore per la concatenazione: A = A= .

Propriet distributiva della concatenazione sullunione: A(B +C ) = AB + AC , (B + C )A = B A +C A. Propriet di idempotenza per lunione: A + A = A. Propriet della chiusura: (A ) = A , = , = , A + = A A = A A, A = A + + , A? := A + (questultima la denizione delloperatore ?). Osserviamo che la propriet commutativa non vale per la concatenazione: in generale se A e B sono espressioni regolari AB B A.

4 Propriet dei linguaggi regolari


Per stabilire se un linguaggio L regolare esiste uno strumento molto potente che denisce una condizione necessaria per la regolarit di un linguaggio: il pumping lemma. Teorema 2 (Pumping Lemma) Sia L un linguaggio regolare. Allora esiste una costante n dipendente da L tale che, per ogni w L con |w| n, esistono tre stringhe x, y e z tali che w = x y z e: 1. y ;

2. |x y| n; 3. k 0 x y k z L. Il pumping lemma afferma che se L regolare, allora sempre possibile trovare una stringa y, abbastanza vicina allinizio di w L, tale da poter essere replicata pi volte (k > 1) o da essere cancellata (k = 0), ottenendo comunque parole in L. Il pumping lemma quindi molto utile per provare (trovando un controesempio) che un linguaggio non regolare. Di fatto, rileggendo in modo informale il pumping lemma, si pu dire che i linguaggi regolari sono quelli le cui stringhe non richiedono molta memoria (gli stati di un automa riconoscitore) per tenere traccia della struttura con cui i simboli gi 5

analizzati si sono susseguiti. In questo senso, la presenza di un pattern y di lunghezza nita, minore di una certa costante n valida per ogni parola del linguaggio, che si ripete pi volte, garantisce la nitezza del numero di stati necessari per riconoscere le parole del linguaggio e la possibilit di riusare gli stati utilizzati per riconoscere il pattern y. possibile provare numerose propriet di chiusura per la classe dei linguaggi regolari. Tali propriet sono ancora una volta uno strumento utile per riconoscere se un determinato linguaggio o meno regolare. Siano A e B due linguaggi regolari sullalfabeto ; allora valgono le seguenti propriet: 1. A B = {w : w A o w B } regolare. 2. A B = {w : w A e w B } regolare. 3. A = {w : w A} (complemento) regolare. 4. A B = {w : w A e w B } regolare. 5. A R = {w = a 1 a 2 . . . a n : w R = a n a n1 . . . a 1 A} (inverso) regolare. 6. A (chiusura o star di Kleene) regolare. 7. AB = {w : w = w 1 w 2 , w 1 A, w 2 B } (concatenazione) regolare. 8. H (A), lomomorsmo H su A (sostituzione di simboli con stringhe), regolare. 9. H 1 (A), lomomorsmo inverso (sostituzione di stringhe con simboli singoli), regolare.

5 Grammatiche libere dal contesto


La classe dei linguaggi liberi dal contesto estende quella dei linguaggi regolari; tali linguaggi sono deniti dalle grammatiche libere dal contesto che descrivono le regole con cui possono essere derivate tutte le stringhe che appartengono al linguaggio. Una grammatica libera dal contesto una quaterna G = (V, T, P, S), dove V un insieme nito che rappresenta i simboli non terminali o le variabili, T linsieme nito dei simboli terminali o alfabeto, P linsieme delle produzioni, ossia delle regole che danno la denizione ricorsiva del linguaggio, ed S il simbolo iniziale che rappresenta il linguaggio da denire. Se esiste una regola di inferenza (produzione) che in grado di trasformare la stringa A (composta di simboli terminali e non terminali) in B , allora si scrive A G B . Se esiste una successione di produzioni di G che trasformano A in B allora si scriver A G B . Data una grammatica libera dal contesto G = (V, T, P, S) questa denisce il linguaggio libero dal contesto L(G) = {w T : S G w}. possibile rappresentare le derivazioni di una grammatica libera dal contesto mediante alberi sintattici. Un albero sintattico un albero denito come segue: 6

1. ogni vertice interno (un vertice che non sia una foglia dellalbero) etichettato con una variabile di V ; 2. le foglie sono etichettate con variabili, simboli terminali o . Se una foglia etichettata con , allora deve essere lunico glio del vertice padre; 3. se un nodo interno etichettato A e i suoi gli sono etichettati (da sinistra a destra) con X 1 , X 2 , . . . , X n , allora A X 1 X 2 . . . X n una produzione in P . Alcune grammatiche libere dal contesto possono essere grammatiche ambigue: in questi casi una stringa terminale ammette pi di un albero sintattico che la produce. Per alcune grammatiche ambigue possibile trovare delle grammatiche non ambigue equivalenti, che producono lo stesso linguaggio. Altre invece sono intrinsecamente ambigue: generano un linguaggio che pu essere prodotto solo da grammatiche ambigue.

6 Automi a pila
Un automa a pila un automa a stati niti non deterministico con -transisioni (un -NFA) e con una caratterizzazione aggiuntiva: una pila (stack) in cui possibile memorizzare stringhe. La pila una struttura di tipo LIFO (last in rst out) e dunque lautoma pu leggere (estrarre) o inserire informazioni sempre solo dalla cima dello stack. Un automa a pila (PDA, Pushdown Automaton) denito formalmente come una settupla: P = (Q, , , , q 0 , Z0 , F ), dove: Q un insieme nito di stati; un insieme nito di simboli in input (alfabeto); lalfabeto (nito) dei simboli che possono essere inseriti nello stack; la funzione di transizione : Q Q , con (q, a,W ) (p, ), con p, q Q, a , = X Y . . . Z , con W, X , Y , . . . , Z ; q 0 lo stato iniziale (q 0 Q); Z0 il simbolo che inizialmente si trova nello stack (Z0 ); F linsieme nito degli stati nali accettanti (F Q). Un automa a pila puaccettare una stringa w venendosi a trovare in uno stato nale accettante al termine dellelaborazione di w (accettazione per stato accettante). Per si pu anche denire il linguaggio di un automa a pila P , L(P ), come linsieme di tutte le parole w tali che al termine dellelaborazione di ognuna lautoma si ritrova con la pila vuota (accettazione per pila vuota). Si pu dimostrare che un linguaggio L accettato per stato nale da un automa a pila P se e e solo se esiste un automa a pila P che accetta L per pila vuota. In

Linguaggi liberi dal contesto Linguaggi liberi dal contesto non ambigui Linguaggi regolari

Figura 2: Rapporti di inclusione tra linguaggi

generale P P : ssato un automa a pila P , il linguaggio L(P ) accettato per stato nale da P diverso dal linguaggio N (P ) accettato dallo stesso P per pila vuota. I linguaggi accettati dagli automi a pila (per stato nale o, equivalentemente, per pila vuota) sono tutti e soli i linguaggi liberi dal contesto (quelli generati da grammatiche libere dal contesto). possibile denire dei particolari automi a pila, detti automi a pila deterministici (DPDA, Directed Pushdown Automaton), ossia automi a pila P = (Q, , , , q 0 , Z0 , F ) tali che: 1. (q, a, X ) ha al massimo un elemento q Q, a , o a = , X ; 2. se (q, a, X ) non vuoto per un a , allora (q, , X ) deve essere vuoto. I linguaggi accettati per stato nale dagli automi a pila deterministici, includono tutti i linguaggi regolari, ma sono inclusi nei linguaggi liberi dal contesto. I linguaggi accettati dagli automi a pila deterministici sono liberi dal contesto ed hanno tutti grammatiche non ambigue.

7 Propriet dei linguaggi liberi dal contesto


Un simbolo X utile per un certo linguaggio L se S a X b w L; se non utile si dice che inutile. Dato un linguaggio si pu ottenere un linguaggio equivalente eliminando da tutti i simboli inutili. Una grammatica in forma normale di Chomsky (CNF, Chomsky Normal Form) se non ha simboli inutili e se le sue produzioni sono solo di questi due tipi: 1. A a, con A variabile e a terminale; 2. A BC , con A, B e C variabili. Teorema 3 Se G una grammatica libera dal contesto il cui linguaggio L(G) contiene almeno una stringa w , allora esiste una grammatica G 1 in forma normale di Chomsky tale che L(G 1 ) = L(G) {}.

Il teorema afferma che tutti i linguaggi liberi dal contesto privi di -produzioni possono essere generati da grammatiche in forma normale di Chomsky. Teorema 4 (Pumping lemma per linguaggi liberi dal contesto) Sia L un linguaggio libero dal contesto. Allora esiste n > 0 costante tale che se z L e |z| n allora z = uv w x y con le seguenti condizioni: 1. |v w x| n; 2. v x (almeno una delle stringhe v e x non deve essere vuota);

3. i 0 risulta uv i w x i y L. Valgono le seguenti propriet di chiusura per i linguaggi liberi dal contesto: Unione: se L 1 , L 2 CFL allora L 1 L 2 CFL. Concatenazione: se L 1 , L 2 CFL allora L 1 L 2 CFL. Chiusura: se L 1 CFL allora L CFL e L + CFL. 1 1 Omomorsmo: se L 1 CFL allora H (L 1 ) CFL (H omomorsmo). Inversione: se L 1 CFL allora L R CFL. 1 Intersezione con altri linguaggi regolari: se L CFL e R un linguaggio regolare, allora L R CFL. Data una grammatica libera dal contesto esiste un algoritmo di complessit lineare per vericare se genera almeno una stringa o se il linguaggio generato dalla grammatica vuoto. Utilizzando un algoritmo basato sulla tecnica della programmazione dinamica possibile stabilire con una complessit di O(n 3 ) se una certa stringa di lunghezza n appartiene ad un linguaggio libero dal contesto.

8 Macchine di Turing
Una macchina di Turing un modello di calcolo astratto, denito negli anni 30 dal matematico inglese Alan Turing. Si pu dimostrare che, sebbene la macchina di Turing sia un modello assai elementare, dotato di una potenza di calcolo equivalente a quella di un computer. Lipotesi di Church (o tesi di Church-Turing) afferma che le macchine di Turing sono in grado di calcolare tutte e sole le funzioni che sono effettivamente calcolabili (le funzioni ricorsive parziali), essendo in questo del tutto equivalenti ai moderni computer. Una macchina di Turing costituita da una unit di controllo, che pu memorizzare un numero nito di stati, una testina mobile che pu leggere e scrivere (e spostarsi a destra e a sinistra) su un nastro suddiviso in innite celle. Ogni cella del nastro pu contenere il simbolo nullo (blank) o un carattere preso dallalfabeto nito dei simboli ammissibili . 9

Controllo a stati niti

xi-1

xi

xi+1

Figura 3: Schematizzazione di una macchina di Turing

Inizialmente il nastro contiene linput fornito alla macchina per denire una specica istanza del problema che si deve risolvere. La stringa (nita) di input delimitata da simboli vuoti (blank). La macchina di Turing reagisce al simbolo letto nella cella del nastro innito su cui collocata la testina di lettura e scrittura, scrivendo al suo posto un altro simbolo (o lasciando invariato il simbolo presente), cambiando di stato (o rimanendo nello stato attuale) e spostandosi di una posizione verso sinistra o verso destra sul nastro (o rimanendo immobile). Pi formalmente una macchina di Turing pu essere denita come una settupla M = (Q, , , , q 0 , B, F ), dove: Q linsieme nito degli stati del controllo; linsieme nito di simboli di input; lalfabeto dei simboli che possono essere scritti sul nastro; dunque ; la funzione di transizione : Q Q D che associa ad una coppia (q, x) costituita da uno stato e da un simbolo di , una tripla costituita dal nuovo stato assunto dalla macchina, dal simbolo scritto sul nastro al posto di x e da una direzione (D = {destra, sinistra, fermo}) con cui la testina si mossa sul nastro dopo aver effettuato loperazione di scrittura; q 0 lo stato iniziale; B il simbolo con cui si rappresenta il carattere vuoto (blank; B ); F linsieme degli stati nali accettanti (F Q). I linguaggi accettati da una macchina di Turing sono denominati linguaggi ricorsivamente enumerabili. possibile estendere la macchina di Turing introducendo le macchine di Turing multinastro, dotate di pi di un nastro innito, tra loro indipendenti, e le macchine di Turing non deterministiche, ossia con la capacit di passare da una certa congurazione (stato/simbolo) a pi congurazioni (stato/simbolo/movimento) contemporaneamente. Si pu dimostrare che queste macchine estese non sono pi potenti della macchina di Turing deterministica con un solo nastro: accettano tutte lo stesso tipo di linguaggio, i linguaggi ricorsivamente enumerabili. 10

possibile dimostrare la possibilit (teorica) di simulare il comportamento di una macchina di Turing con un computer; il limite sta nel fatto che la capacit di memoria di un computer nita, mentre il nastro della macchina di Turing di lunghezza innita. Tuttavia si pu sempre immaginare di aggiungere unit di memorizzazione (dischi) a dismisura, man mano che aumenta la necessit di memorizzare simboli per simulare il comportamento di una macchina di Turing. Si pu anche dimostrare la possibilit di simulare il funzionamento di un computer con una macchina di Turing. Possiamo quindi essere sicuri che un problema non risolubile con una macchina di Turing non risolubile neanche con un computer.

9 Problemi decidibili e indecidibili


possibile costruire una codica per rappresentare come una stringa binaria ogni macchina di Turing con alfabeto di input = {0, 1}. Per far questo si stabilisce una numerazione degli r stati della macchina, Q = {q 1 , q 2 , . . . , q r }, in cui q 1 rappresenta sempre lo stato iniziale e q 2 sempre lo stato accettante; si enumerano i simboli dellalfabeto = {X 1 , X 2 , . . . , X s } dei simboli che possono trovarsi sul nastro, stabilendo che X 1 = 0, X 2 = 1 e X 3 = blank; si stabilisce inne che le due direzioni in cui si pu muovere la testina sono indicate con D 1 = sinistra e D 2 = destra. Queste convenzioni non limitano la possibilit di denire macchine di Turing. chiaro che modicando la numerazione degli stati di Q e dei simboli di , ad una stessa macchina di Turing possono corrispondere codiche diverse. La codica binaria di una macchina di Turing con alfabeto di input = {0, 1} completamente determinata dalla codica delle sue regole di transizione: (q i , X j ) = (q k , X l , D m ), con q i , q k Q, X j , X l e D m {sinistra, destra} codicata dalla stringa 0i 10 j 10k 10l 10m . Dunque nella codica di ogni singola regola di transizione (visto che i , j , k, l , m > 0) non compaiono mai due 1 di seguito. Allora la codica della macchina di Turing pu essere ottenuta concatenando le codiche delle regole di transizione, separate dalla sequenza 11. In questo modo abbiamo ottenuto una enumerazione di tutte le macchine di Turing, creando un ordinamento delle stringhe binarie basato sulla lunghezza e, in seconda battuta, sullordine lessicograco delle stringhe con la stessa lunghezza: 1 < 01 < 10 < 001. La macchina di Turing i -esima, M i , quella che corrisponde alla i -esima stringa binaria w i . Non tutte le stringhe binarie rappresentano macchine di Turing: in tali casi associamo quelle stringhe, per convenzione, alla macchina di Turing con un solo stato e nessuna transizione. Deniamo il linguaggio di diagonalizzazione L d come linsieme delle stringhe binarie w i tali che M i non accetta w i (in altri termini w i L(M i )). Teorema 5 L d non un linguaggio ricorsivamente enumerabile: non esiste alcuna macchina di Turing che accetta L d . Deniamo i linguaggi ricorsivi come quei linguaggi L tali che se L = L(M ) per una certa macchina di Turing M , allora se w L la macchina M la accetta in tem-

11

Linguaggi ricorsivi

Lu

Linguaggi ricorsivamente enumerabili (ma non ricorsivi)

Ld

Linguaggi non ricorsivamente enumerabili

Figura 4: Linguaggi ricorsivi e non ricorsivi

po nito e se w L allora M si arresta comunque dopo un numero nito di passi, terminando lelaborazione in uno stato non accettante. Le macchine di Turing di questo tipo corrispondono a ci che noi intendiamo per algoritmo: una procedura nita, che termina comunque dopo un numero nito di passi. I linguaggi ricorsivi, interpretati come problemi, sono detti decidibili, mentre i linguaggi non ricorsivi corrispondono ai problemi indecidibili. Possiamo quindi classicare i linguaggi in tre insiemi contenuti luno nellaltro: Linguaggi ricorsivi: esiste una macchina di Turing in grado di decidere in tempo nito (in un numero nito di passi) se una stringa appartiene o meno al linguaggio. Linguaggi ricorsivamente enumerabili: esiste una macchina di Turing in grado di accettare in un numero nito di passi le stringhe che appartengono al linguaggio (non si pu stabilire a priori se la macchina terminer leleborazione di una stringa che non appartiene al linguaggio, dopo un numero nito di passi). Linguaggi non ricorsivamente enumerabili: come per il linguaggio di diagonalizzazione L d non esiste una macchina di Turing che accetta le stringhe del linguaggio. Teorema 6 Se L ricorsivo allora anche L ricorsivo. La dimostrazione semplice: se L = L(M ) basta costruire la macchina di Turing complementare M che accetta tutto ci che M riuta. Teorema 7 Se L ricorsivamente enumerabile e anche L ricorsivamente enumerabile, allora L e L sono ricorsivi. Anche in questo caso la dimostrazione piuttosto semplice: basta costruire una macchina di Turing M ottenuta componendo M e M , in modo che ogni stringa sia accettata o riutata in un numero nito di passi; cos si prova che L ricorsivo e quindi, per il Teorema precedente, lo anche L. 12

Deniamo il linguaggio universale L u come linsieme delle stringhe binarie ottenute da (M , w), dove M una macchina di Turing con alfabeto di input binario e w una stringa accettata da M (w L(M )), concatenando la codica di M con w. L u ricorsivamente enumerabile, ossia esiste una macchina di Turing U tale che L u = L(U ). Tuttavia L u non ricorsivo. Un altro esempio famoso di linguaggio ricorsivamente enumerabile non ricorsivo il linguaggio H (M ) denito dal problema dellarresto: H (M ) composto dalle parole w tali che M si arresta quando elabora w, indipendentemente dal fatto che w sia accettata oppure no. Il problema dellarresto costituito dalle coppie (M , w) tali che w H (M ). Un problema P 1 si riduce ad un problema P 2 se esiste un algoritmo che traduce ogni istanza di P 1 in una istanza di P 2 . Non detto che ogni istanza di P 2 debba essere limmagine della conversione di una istanza di P 1 . Se il problema P 1 si riduce a P 2 allora P 2 difcile almeno tanto quanto P 1 : se so risolvere P 2 allora posso anche risolvere P 1 . Al contrario se P 1 non ricorsivo allora anche P 2 non pu essere ricorsivo e se P 1 non ricorsivamente enumerabile, allora non pu esserlo neanche P2. Una propriet per i linguaggi ricorsivamente enumerabili denisce un sottoinsieme di tali linguaggi (es.: il sottoinsieme dei linguaggi ricorsivamente enumerabili che godono della propriet di essere liberi dal contesto). Una propriet sui linguaggi ricorsivamente enumerabili banale se denisce linsieme vuoto o linsieme di tutti i linguaggi ricorsivamente enumerabili. Se P una propriet, il linguaggio L P linsieme dei codici delle macchine di turing M i tali che L(M i ) = P . Teorema 8 (Teorema di Rice) Ogni propriet P non banale dei linguaggi ricorsivamente enumerabili denisce un problema L P indecidibile. Problema della corrispondenza di Post (CPC): date due liste con lo stesso numero di stringhe A = (s 1 , s 2 , . . . , s k ) e B = (t 1 , t 2 , . . . , t k ) possibile scegliere la stessa sequenza di stringhe corrispondenti da A e da B e formare per concatenazione la stessa stringa? Ossia: esistono i 1 , i 2 , . . . , i p tali che s i 1 s i 2 . . . s i p = t i 1 t i 2 . . . t i p ? Questo un esempio di problema indecidibile ed molto utile per dimostrare per riduzione lindecidibilit di altri problemi, come ad esempio il problema di stabilire se una grammatica libera dal contesto sia ambigua oppure no.

10 Le classi di complessit P e N P
Una macchina di Turing M ha complessit (in tempo) T (n) se, a fronte di un input di lunghezza n, si arresta accettando o non accettando la strionga dopo non pi di T (n) mosse. La classe P costituita da tutti i linguaggi (o problemi) L per cui esiste un polinomio T (n) tale che L = L(M ) per una macchina di Turing deterministica di complessit T (n). La classe N P invece costituita da tutti i problemi (o linguaggi) L per i quali esiste una funzione polinomiale T (n) tale che L = L(M ) per una macchina di Turing non deterministica di complessit T (n). 13

Visto che le macchine di Turing deterministiche sono un caso speciale di quelle non deterministiche, allora risulta P N P . Non si sa se P N P : al momento stato possibile individuare moltissimi problemi che sono in N P , ma per i quali non si riusciti a costruire una macchina di Turing deterministica in grado di risolverli in tempo polinomiale. Non si riusciti neanche a provare che tale macchina di Turing deterministica non esiste. Dunque al momento si immagina che P N P , ma senza poterlo provare. Un problema P 1 pu essere ridotto in tempo polinomiale al problema P 2 se esiste un algoritmo di complessit polinomiale in grado di trasformare ogni istanza di P 1 in una istanza di P 2 . Se P 1 riducibile in tempo polinomiale a P 2 allora: se P 2 P allora anche P 1 P ; se P 1 P allora anche P 2 P . La classe dei problemi NP-completi costituita da quei linguaggi (problemi) L tali che: 1. L N P ; 2. L N P possibile ridurre in tempo polinomiale L a L. Ovviamente per dimostrare che un problema L N P NP-completo basta provare che un problema L NP-completo riducibile in tempo polinomiale a L. Infatti la composizione di due algoritmi di complessit polinomiale d luogo ad un algoritmo di complessit polinomiale; dunque visto che L NP-completo allora L N P esiste un algoritmo polinomiale A in grado di ridurre tutte le istanze di L ad istanze di L . Siccome esiste un algoritmo B che trasforma tutte le istanze di L in istanze di L in tempo polinomiale, allora per ogni algoritmo A posso costruire un algoritmo polinomiale B A (B dopo A) per convertire le istanze di L in istanze di L (per ogni L N P ). Teorema 9 Se un problema NP-completo in P allora P = N P . Dimostrazione Se L NP-completo e L P , allora (per la NP-completezza di L) ogni problema L N P si riduce in tempo polinomiale ad L. Dunque per ogni L N P posso comporre lalgoritmo risolutivo polinomiale per L con lalgoritmo di riduzione polinomiale da L ad L, ottenendo un algoritmo risolutivo polinomiale per L . 2 La classe dei problemi NP-hard (NP-ardui) costituita da quei problemi L tali che per ogni L N P possibile ridurre in tempo polinomiale L ad L. A differenza dei problemi NP-completi, i problemi NP-hard non si sa se sono N P . I problemi NP-hard sono considerati problemi intrattabili. Il problema SAT cos denito: unespressione booleana assegnata soddisfacibile? Ossia possibile assegnare dei valori booleani alle variabili dellespressione in modo tale che questa risulti vera? Teorema 10 (Teorema di Cook) SAT NP-completo. 14

In unespressione booleana una clausola una disgiunzione logica (or) di uno o pi letterali. Una espressione booleana in forma normale congiuntiva (CNF) se la congiunzione logica (and) di una o pi clausole. Una espressione logica in k-forma normale congiuntiva (k-CNF) se le clausole sono tutte costituite dalla disgiunzione (somma) di k letterali distinti. Vediamo di seguito una breve rassegna di alcuni famosi problemi NP-completi. CSAT: data unespressione booleana in forma normale congiuntiva soddisfacibile? Si dimostra che CSAT NP-completo riducendo SAT a CSAT in tempo polinomiale. k-SAT: data unespressione booleana in k-forma normale congiuntiva, soddisfacibile? Si dimostra che 3-SAT (k = 3) NP-completo riducendo in tempo polinomiale CSAT a 3-SAT. Independent set (IS): dato un grafo G = (V, E ), un insieme indipendente un sottoinsieme di V tale che ogni coppia di vertici non sia adiacente. Il problema IS, dato un grafo G e una costante k, chiede di stabilire se esiste un sottoinsieme indipendente di G con almeno k vertici. Si dimostra che IS NP-completo riducendo in tempo polinomiale 3-SAT a IS. Vertex cover (VC): dato un grafo G = (V, E ) una copertura di vertici un sottoinsieme di V tale che contenga almeno uno degli estremi di ogni spigolo del grafo. Il problema VC, dato un grafo G e una costante k < |V | chiede di stabilire se esiste una copertura di vertici con al pi k elementi. Si dimostra che VC NP-completo riducendo in tempo polinomiale IS a VC. Un ciclo hamiltoniano su un grafo G un ciclo che passa per ogni vertice di G esattamente una volta. Un ciclo hamiltoniano orientato un ciclo hamiltoniano su un grafo G orientato. Directed ham-cycle: dato un grafo orientato G esiste un ciclo hamiltoniano orientato su G? Si dimostra che il problema NP-completo per riduzione polinomiale da 3 S AT . Ham-cycle: dato un grafo G esiste un ciclo hamiltoniano su G? Si dimostra che il problema NP-completo per riduzione polinomiale da DHC. Traveling salesman problem (TSP): dato un grafo G con pesi interi sugli spigoli e una costante k, esiste un circuito hamiltoniano su G il cui peso complessivo sia minore o uguale a k? Si dimostra che TSP NP-completo per riduzione polinomiale da Ham-cycle.

15

Clique: dato un grafo G una clique un sottoinsieme di vertici a due a due adiacenti. Dato un grafo G e una costante k esiste una clique in G con k vertici? Si dimostra che il problema Clique NP-completo riducendo in tempo polinomiale Vertex-cover a Clique. La classe dei problemi CO-NP costituita da quei linguaggi L il cui complemento L in N P . Siccome il complemento di un problema polinomiale polinomiale, allora i problemi che sono in P sono sia in N P che in CO-NP. Ma non sono gli unici: pare che i problemi NP-completi oltre ad essere in N P sono anche in CO-NP.

Riferimenti bibliograci
[1] N. J. Cutland, Computability An introduction to recursive function theory, Cambridge University Press, 1980. [2] M. Frixione, D. Palladino, Funzioni, macchine, algoritmi, Carocci, 2004. [3] J. E. Hopcroft, R. Motwani, J. D. Ullman, Automi, linguaggi e calcolabilit, Addison-Wesley, 2003. [4] F. Luccio, La struttura degli algoritmi, Bollati Boringhieri, 1982.

16

You might also like