Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
15/08/20 1 15/08/20 2
100010001 101101111
15/08/20 5 15/08/20 6
Operazioni su stringhe
w a1a2 an abba
w a1a2 an ababaaabbb
v b1b2 bm bbbaaa
Concatenazione Inverso
15/08/20 7 15/08/20 8
Lunghezza di una stringa Lunghezza della concatenazine
w a1a2 an uv u v
Lunghezza: w n
Esempio: u aab, u 3
v abaab, v 5
Esempi: abba 4
aa 2
uv aababaab 8
a 1
uv u v 3 5 8
15/08/20 9 15/08/20 10
L’operazione * L’operazione +
* : L’insieme di tutte le possibili stringe che : L’insieme di tutte le possibili stringe che
è possibile generare a partire dall’alfabeto è possibile generare a partire dall’alfabeto
eccetto
a, b a, b
* , a, b, aa, ab, ba, bb, aaa, aab, * , a, b, aa, ab, ba, bb, aaa, aab,
*
a, b, aa, ab, ba, bb, aaa, aab,
15/08/20 15 15/08/20 16
Linguaggi. estensionali Esempi di linguaggi
Un linguaggio su un alfabeto
Alfabeto {a , b }
È un qualsiasi sottoinsieme di *
Esempio: Un linguaggio infinito L {a nb n : n 0}
a, b
* , a, b, aa, ab, ba, bb, aaa,
linguaggio : ab abb L
L
linguaggio : a, aa, aab aabb
linguaggio : { , abba, baba, aa, ab, aaaaaa} aaaaabbbbb
15/08/20 17 15/08/20 18
ADDITION {x y z : x 1n , y 1m , z 1k , SQUARES {x # y : x 1n , y 1m , m n 2 }
nm k}
Altre operazioni
Definizione: Ln
LL L
n L {a nb n : n 0}
a, b3 a, ba, ba, b
aaa, aab, aba, abb, baa, bab, bba, bbb L2 {a nb n a mb m : n, m 0}
0
Casi speciale: L
aabbaaabbb L2
a , bba , aaa 0
15/08/20 27 15/08/20 28
Star-Closure-intensione (Kleene *) Chiusure
Tutte le stringhe che possono essere costruite
da L Definizione: L L1 L2
L* L0 L1 L2
Definizione: Lo stesso come L* without the
Esempio: ,
a, bb, a, bb,
a, bb*
aa , abb , bba , bbbb ,
a, bb aa, abb, bba, bbbb,
aaa, aabb, abba, abbbb, aaa, aabb, abba, abbbb,
15/08/20 29 15/08/20 30
Deterministic Finite Automaton (DFA)
Input Tape
Deterministic stringa
Output
Finite Automata “accettato ”
Finite
or
Automaton
E linguaggi regolari “rigettato”
Simulatore http://www.jflap.org/
15/08/20 1 15/08/20 2
q5 q5
a, b a, b
b a a b b a a b
q0 a q1 b q2 b q3 a q4 q0 a q1 b q2 b q3 a q4
Stato iniziale
15/08/20 3 15/08/20 4
a b b a a b b a
a, b a, b
q5 q5
a, b a, b
b a a b b a a b
q0 a q1 b q2 b q3 a q4 q0 a q1 b q2 b q3 a q4
15/08/20 5 15/08/20 6
a b b a a b a
Input String
a, b a, b
q5 q5
a, b a, b
b a a b b a a b
q0 a q1 b q2 b q3 a q4 q0 a q1 b q2 b q3 a q4
accettato
15/08/20 7 15/08/20 8
a b a a b a
a, b a, b
q5 q5
a, b a, b
b a a b b a a b
q0 a q1 b q2 b q3 a q4 q0 a q1 b q2 b q3 a q4
15/08/20 9 15/08/20 10
Input finito
a, b a, b
reject
q5 q5
a, b a, b
b a a b b a a b
q0 a q1 b q2 b q3 a q4 q0 a q1 b q2 b q3 a q4
rigettato
15/08/20 11 15/08/20 12
Linguaggio accettato: L abba Per accettare una stringa :
q5
Per rigettare una stringa :
a, b
b a a b
q0 a q1 b q2 b q3 a q4 Tutti i caratteri di input sono stati esaminati
E non si è raggiunto uno stato finale
15/08/20 13 15/08/20 14
Un altro esempio
Language Accepted: L {a n b : n 0 }
a a, b a a, b
b a, b b a, b
q0 q1 q2 q0 q1 q2
Linguaggio accettato:
: funzione di transizione
q0 : stato iniziale
EVEN {x : x * and x is even}
{ , 11, 1111, 111111, } F : insieme degli stati di accettazione
15/08/20 17 15/08/20 (finale) 18
q5 q5
a, b a, b
b a a b b a a b
q0 a q1 b q2 b q3 a q4 q0 a q1 b q2 b q3 a q4
15/08/20 19 15/08/20 20
Stato iniziale q0 Insieme stati finali F Q
esempio esempio
a, b F q4 a, b
q5 q5
a, b a, b
b a a b b a a b
q0 a q1 b q2 b q3 a q4 q0 a q1 b q2 b q3 a q4
15/08/20 21 15/08/20 22
Funzione di transizione
:Q Q
esempio:
q0 , a q1
( q, x ) q
x a, b
q q
q5
Descrive il risultato della a a, b
b a b
Transizione dallo stato q q0 a q1 b q2 b q3 a q4
Con simbolo x
15/08/20 23 15/08/20 24
q0 , b q5 q2 , b q3
a, b a, b
q5 q5
a a, b a a, b
b a b b a b
q0 a q1 b q2 b q3 a q4 q0 a q1 b q2 b q3 a q4
15/08/20 25 15/08/20 26
q2 q5 q3
a, b
q3 q4 q5
q4 q5 q5 Descrive lo stato che risulta dopo aver
q5
q5 q5 q5 Esaminata la stringa w
a a, b
b a b a partire dallo stato q
q0 a q1 b q2 b q3 a q4
15/08/20 27 15/08/20 28
esempio: * q0 , ab q2 * q0 , abbbaa q5
a, b
a, b
q5
q5
a a, b
a, b b a b
b a a b q0 a q1 b q2 b q3 a q4
q0 a q1 b q2 b q3 a q4
15/08/20 29 15/08/20 30
Caso speciale:
15/08/20 31 15/08/20 32
: * q ,w q
q w q
15/08/20 33 15/08/20 34
Output
q1 q5 q2
“accettato ” states q2 q5 q3
a, b
Finite q3 q4 q5
or
Automaton q4 q5 q5
“rigettato” q5
q5 q5 q5 a, b
b a a b
q0 a q1 b q2 b q3 a q4
15/08/20 35 15/08/20 36
Linguaggio accettato da un DFA
Per un DFA M Q, , , q0 , F
Linguaggio di un DFA: M
È denotato come L M Il linguaggio accettato da M:
E contiene tutte le stringhe
Accettate da M
L M w * : * q0 ,w F
Un linguaggio L
È accettato (o riconosciuto) q0 w q q F
Da un DFA M se L M L
15/08/20 37 15/08/20 38
DFA esempi
Linguaggio rifiutato da M : {a , b }
a, b
L M w : q0 ,w F
* *
a, b
w q0 q0
q0 q q F
L (M ) { } L (M ) *
Linguaggio vuoto Tutte le stringhe
15/08/20 39 15/08/20 40
{a , b } L M = { tutte le stringhe binarie
che contengono
a, b
la sottostringa 001 }
0,1
1 0
q0 a, b q0 1
0 0 00 1 001
L (M ) { }
Linguaggio che riconosce le 0
15/08/20
Stringa vuota 41 15/08/20 42
1 0 b
0,1
q0 a q2 q3
1
0 1 b a
0 00 001
q4
0
a, b
15/08/20 43 15/08/20 44
Linguaggi regolari Esempi di linguaggi regolari:
Definizione:
abba , ab, abba
Un linguaggio L è regolare se esiste un
DFA M che lo accetta ( L(M ) L ) {a nb : n 0} awa : w a , b *
{ tutte stringhe {a,b}* con prefisso ab }
{ all binary strings without substring 001}
L {a nb n : n 0}
ADDITION {x y z : x 1n , y 1m , z 1k ,
nm k}
15/08/20 47
Automa finito deterministico
calcolo finito e deterministico
Non-Deterministic sequenziale, un segmento di lng
Finite Automata dell’input
15/08/20 1 15/08/20 2
q1 a q2 Due scelte q1 a q2
a a
q0 q0
a a
q3 q3
15/08/20 3 15/08/20 4
Prima delle due scelte
alfabeto = {a} a a
15/08/20 5 15/08/20 6
a a a a
Abbiamo consumato tutto l’input
q1 a q2 q1 a q2 “accettato”
a a
q0 q0
a a
q3 q3
15/08/20 7 15/08/20 8
Seconda scelta Seconda scelta
a a a a
Input non può essere tutto usato
q1 a q2 q1 a q2
a a
q0 q0 Automa si ferma
a a
q3 q3 “rigettato”
15/08/20 9 15/08/20 10
15/08/20 13 15/08/20 14
a a
q1 a q2 q1 a q2
a a
q0 q0
a a
q3 q3 “reject”
15/08/20 15 15/08/20 16
Un altro esempio Prima scelta
a a a a a a
q1 a q2 q1 a q2
a a
q0 q0
a a
q3 q3
15/08/20 17 15/08/20 18
a a a a a a
Input cannot be consumed
q1 a q2 “reject” q1 a q2
a a
q0 q0
a a
Automaton halts
q3 q3
15/08/20 19 15/08/20 20
Second Choice An NFA rejects a string:
Se non vi è una computazione del NFA
a a a che accetta la stringa.
Input non viene tutto consumato
q1 a q2
a Per ogni computazione:
Automaton halts • tutto l’input è consumato e l’automa
q0 • non ha raggiunto uno stato finale
a
q3 “reject” O
• L’input non è stato tutto consumato
15/08/20 21 15/08/20 22
“rigettato” q1 a q2
q1 a q2 q1 a q2
a a a
q0 q0
a a “rigettato” q0
q3 q3 a
q3
Tutte le possibili computazioni
non raggiungono uno stato finale
15/08/20 23 15/08/20 24
Lambda transizione
a a
q0 a q1 q2 a q3 q0 a q1 q2 a q3
15/08/20 25 15/08/20 26
a a a a
q0 a q1 q2 a q3 q0 a q1 q2 a q3
15/08/20 27 15/08/20 28
Esempio di non accettazione
Tutto l’input è esaminato
(rigettato)
a a a a a
“accettato”
q0 a q1 q2 a q3 q0 a q1 q2 a q3
stringa aa è accettata
15/08/20 29 15/08/20 30
a a a a a a
q0 a q1 q2 a q3 q0 a q1 q2 a q3
15/08/20 31 15/08/20 32
Input non viene analizato tutto
a a a
Linguaggio accettato: L {aa}
Automa si ferma
“rigettato”
q0 a q1 q2 a q3 q0 a q1 q2 a q3
Un altro NFA
q0 a q1 b q2 q3
15/08/20 35 15/08/20 36
a b a b
“accept”
q0 a q1 b q2 q3 q0 a q1 b q2 q3
15/08/20 37 15/08/20 38
Un altra stringa
a b a b a b a b
q0 a q1 b q2 q3 q0 a q1 b q2 q3
15/08/20 39 15/08/20 40
a b a b a b a b
q0 a q1 b q2 q3 q0 a q1 b q2 q3
15/08/20 41 15/08/20 42
a b a b a b a b
q0 a q1 b q2 q3 q0 a q1 b q2 q3
15/08/20 43 15/08/20 44
Linguaggio accettato
15/08/20 45 15/08/20 46
•Semplici automata:
0 M1 M2
q0 q1 0, 1 q2
1 q0 q0
0 0
q0 q1 0, 1 q q0 q1 0, 1 q
2 2
1 1
15/08/20 51 15/08/20 52
(q0 , ) {q2 } (q2 ,1)
0 0
q0 q1 0, 1 q q0 q1 0, 1 q
2 2
1 1
15/08/20 53 15/08/20 54
*
Funzione di transizione estesa
La stessa cosa ma applicata a stringhe
* q0 , aa q4 , q5
* q0 , a q1
q4 q5 q4 q5
a a a a
q0 a q1 b q2 q3 q0 a q1 b q2 q3
15/08/20 55 15/08/20 56
In generale
q j * qi ,w : vi è un cammino da qi a q j
* q0 , ab q2 , q3 , q0 con label w
qi w qj
q4 q5
a a
w 1 2 k
q0 a q1 b q2 q3 1 2 k
qi qj
15/08/20 57 15/08/20 58
15/08/20 59 15/08/20 60
The Language of an NFA M w m L M
Il linguaggio accettato da M è: * (q0 ,w m )
L M w 1 ,w 2 ,...wn qi
wm
q0 w
qk qk F
dove * (q0 ,w m ) {qi ,..., qk , , q j } m
wm qj
E vi è un qk F (stato finale)
15/08/20 61 15/08/20 62
* q0 , aa q4 , q5 aa L(M )
* q0 , ab q2 , q3, q0 ab LM
F F
15/08/20 63 15/08/20 64
F q0 ,q5 F q0 ,q5
q4 q5 q4 q5
a a a a
q0 a q1 b q2 q3 q0 a q1 b q2 q3
* q0 , abaa q4 , q5 aaba L(M ) * q0 , aba q1 aba LM
F F
15/08/20 65 15/08/20 66
δ*(stato, cW)=
{
q4 q5 delta_*(q,W)
con q elemento dell’insieme {delta(stato, c)}
a a
}
q0 a q1 b q2 q3
q * q , Per ogni stato
15/08/20 67 15/08/20 68
1
NFA accettano i linguaggi regolari
2 q * q, Per ogni stato
15/08/20 69 15/08/20 70
NFA M1
Definizione: 0
LM1 {10} *
q0 q1
macchina M1 è equivalente alla macchina M 2 1
se L M 1 L M 2 DFA M2 0,1
0
LM 2 {10} *
q0 q1 1 q2
1
0
15/08/20 71 15/08/20 72
Teorema: dimostrazione: mostreremo
Linguaggi a
Linguaggi
Accettati
Linguaggi
regolari
Accettati Linguaggi
regolari
da NFA da NFA
Linguaggi AND
Accettati da un Linguaggi a
DFA
Accettati Linguaggi
regolari
NFA e DFA hanno lo stesso potere di computazione, da NFA
Accettano gli stessi inguaggi.
15/08/20 73 15/08/20 74
Linguaggi a Linguaggi a
Accettati Linguaggi
regolari
Accettati Linguaggi
regolari
da NFA da NFA
Ogni nfa può essere tradotto in un nfa
ogni DFA è banalmente un NFA
DFA M DFA M
q0 q0 a
q1, q2
15/08/20 77 15/08/20 78
a
DFA M DFA M
q0 a q0 a
q1, q2 q1, q2
b b
trap state
15/08/20 79 15/08/20 80
* (q1 , b ) {q0 }
M a * (q2 , b ) {q0 } M a
NFA NFA
a unione a
q0 q1 q2 q0 q1 q2
b q0 b
b a b a
DFA M DFA M
q0 a q0 a
q1, q2 q1, q2
b b
a, b trap state
15/08/20 81 15/08/20 82
q0 a
q1, q2
q1, q2 F
b
a, b
15/08/20 83 15/08/20 84
Step della procedura
NFA ha gli stati q0 , q1, q2 ,...
step
1. Stato iniziale NFA: q0
15/08/20 85 15/08/20 86
esempio step
15/08/20 87 15/08/20
{qi , q j ,..., qm }, a {qk , ql,..., qn }
88
esempio * (q0 , a ) {q1, q2 }
a
NFA M
q0 a q1 q2 step
b 3. Ripeti lo step 2 per ogni stato nel DFA e
simboli nell’alfabeto finchè non vi sono più
stati che possono essere addizionati al DFA
q0 , a q1, q2
DFA M
q0 a
q1, q2
15/08/20 89 15/08/20 90
esempio step
M a
NFA 4. {qi , q j ,..., qm }
q0 a q1 q2 Per ogni stato DFA
b
a
DFA M b Se qualche q j è uno stato di
a accettazione del NFA
q0 q1, q2 Allora {qi , q j ,..., qm }
b è uno stato di accettazione del DFA
a, b
15/08/20 91 15/08/20 92
Example Step della procedura
M a
NFA
q0 a q1 q2 q1 F step
b 1. Stato iniziale NFA: q0
a
DFA M b
q0 a
q1, q2 stato iniziale del DFA:q0
q1, q2 F
b
a, b
15/08/20 93 15/08/20 94
step
2. per ogni stato DFA {qi , q j ,..., qm }
step
calcolo nel NFA
3. Ripeti lo step 2 per ogni stato nel DFA e
* qi , a simboli nell’alfabeto finchè non vi sono più
unione
* qj ,a {qk , ql,..., qn }
stati che possono essere addizionati al DFA
...
* qm , a
addiziona questa nuova transizione al DFA
15/08/20
{qi , q j ,..., qm }, a {qk , ql,..., qn }
95 15/08/20 96
step Lemma:
4. Per ogni stato del DFA {qi , q j ,..., qm } Se traduciamo un NFA M in un DFA M
Allora i due automata sono equivalenti:
se è presente uno stato q j finale, L M L M
accettante, del NFA
dimostrazione:
Dobbiamo dimostrare che: L M L M
allora, {qi , q j ,..., qm }
è uno stato accettante del DFA e
L M L M
15/08/20 97 15/08/20 98
simboli allora
i
qi qj 1 2 k
DFA M:
{q0 } {q f ,}
state
w L(M ) state
label label
15/08/20 101 15/08/20 102
v
a1 a2 ak a1 a2 ak ak 1
DFA M : DFA M:
{q0} {qi ,} {q j ,} {qc ,} {qd ,} {q0} {qi ,} {q j ,} {qc ,} {qd ,} {qe ,}
allora
1 2 k quindi: L M L M
DFA M :
{q0 } {q f ,}
w L(M )
Fine lemma
15/08/20 107 15/08/20 108
Definizione sintattica
L’espressioni regolari di base : , ,
Concatenatione: L1L2
esempio Star: L1 * sono linguaggi
L(a b c) * , a, bc, aa, abc, bca,... regolari
Reversal: L1R
Complemento: L1
Intersezione: L1 L2
15/08/20 5 15/08/20 6
diremo: linguaggi regolari sono chiusi sotto Useremo nfa con un solo stato finale
NFA
a
Unione: L1 L2 2 stati di
a b
Concatenatione: L1L2 accettazione
b
Star: L1 *
Equivalente
Reversal: L1R a
1 solo stato
NFA
a b
Di accettazione
Complemento: L1
b
Intersezione: L1 L2
15/08/20 7 15/08/20 8
In Generale Caso estremo
NFA
NFA M1 NFA M2
M2
b a
L2 ba
Un solo stato di accettazione Un solo stato di accettazione
15/08/20 11 15/08/20 12
Unione Esempio
NFA per L1 L2 NFA per
n
L1 L2 {a b} {ba}
M1
L1 {a nb}
a
b
M2
L2 {ba}
b a
15/08/20 13 15/08/20 14
Funzione transizione
Evitiamo le transizioni con le lambda dell’automa unione, N, a
transizioni. partire dalle delta di
Mostriamo che a partire da due automi N_1 e N_2.
(N_1,N_2) , si può costruire l'automa
unione dei due linguaggi definiti dagli
automi precedenti.
M1 M2
L1 {a nb}
a
L2 {ba}
b b a
15/08/20 17 15/08/20 18
Star esempio
NFA per L1 * w w1w2 wk
wi L1 NFA per L1* {a nb} *
M1
L1 *
L1 {a nb}
a
b
15/08/20 19 15/08/20 20
Reverse esempio
M1
1. Reverse tutte le transizioni
a
L1R {ba n } b
2. Stato iniziale quello finale,
quello finale stato iniziale
15/08/20 21 15/08/20 22
Complemento esempio
M1
L1 M1 L1 M1
a a, b
L1 {a nb} b a, b
15/08/20 23 15/08/20 24
Intersezione
leggi DeMorgan : L1 L2 L1 L2
L1 regolari L1 , L2 regolari
mostriamo L1 L2 L1 , L2 regolari
L2 regolari regolari
L1 L2 regolari
L1 L2 regolari
L1 L2 regolari
15/08/20 25 15/08/20 26
esempio esempio:
n0 m0
n m
L1 {a nb} regolari L1 {a b} L2 {ab }
L1 L2 {ab} M1 M2
L2 {ab, ba} regolari regolari
a b
q0 b q1 p0 a p1
a, b b a
q2 p2
a, b a, b
15/08/20 27 15/08/20 28
In Generale
Useremo nfa con un solo stato finale
NFA
NFA
a
b 2 stati di
a
accettazione
b
Equivalent NFA
Equivalente
a
NFA 1 solo stato Un solo
a b
Di accettazione Stato di
b
accettazione
15/08/20 29 15/08/20 30
Stati in M q0 p0
stato iniziale stato iniziale
qi , p j
DFA M
Stato in M1 Stato in M2
q0 , p0
nuovo stato iniziale
15/08/20 33 15/08/20 34
q1 a q2 p1 a p2 qi pj pk
DFA M
DFA M qi , p j qi , pk
Nuova transizione
15/08/20 35 15/08/20 36
esempio: Intersezione automata
L {a nb} {ab n } {ab}
n0 m0
n m a, b
L1 {a b} L2 {ab }
M1 M2 q0 , p0 a q0 , p1 b q1, p1 a q2 , p2
a b b a b a
q0 b q1 a
p0 p1 q1, p2 b q0 , p2 q2 , p1
a, b b a
q2 p2 a b
a, b a, b a, b
15/08/20 37 15/08/20 38
Se appariene ad entrambi
M Simula in parallelo M1 e M 2
Sia la stringa di lunghezza n
Esistono due cammini di lunghezza n, uno per ogni
automa. Dallo stato iniziale a quello finale.
Se lng 1 vero, dimostrare vero per n+1. M accettazione stringa w Se e solo se:
Ultimo tratto da n a n+1 arco nei due automa e arco
automa costruito. Considera stringa n e considera M1 accetta w string
come stato finale quello prima dello stato finale, vedi
arco che riconosce il carattere n, simula i due automi. e M 2 accetta w string
Continua ad andare indietro fino a raggiungere lo stato
iniziale.
Espressioni regolari e
linguaggi regolari
Linguaggi
Generati da
Espressioni regolari
Linguaggi
regolari
15/08/20 41 15/08/20 42
Lr1
15/08/20 45 15/08/20 46
15/08/20 49 15/08/20 50
dim - Part 2
Poichè L è regolare , allora esiste un
Linguaggi NFA M che lo accettà
Generati da Linguaggi
regolari
Espressioni regolari
L( M ) L
Per ogni linguaggio regolareL esiste
una espressione regolare r conL( r ) L
Esempio: Il corrispondente
M Generalized transition graph Transition labels b b
a c a c Sono espressioni a
regolari q0 q1 a b q2
a, b ab
b
15/08/20 53 15/08/20 54
b b
Ridurre gli stati: Espressione regolare che si ottiene:
a
q0 q1 a b q2
bb * a b
b
q0 bb * (a b) q2
Transition labels
sono espressioni bb * a b r (bb * a) * bb * (a b)b *
regolari
q0 bb * (a b) q2
L(r ) L( M ) L
15/08/20 55 15/08/20 56
Stato iniziale solo archi uscenti, nessuno Se k=2 slide precedente
rientrante
Solo uno finale tutti entranti e nessun Altimenti
uscente. prendiamo lo stato da eliminare q
Per gli altri stati sono presenti archi uscenti Per ogni q_i e q_j collegati via q
per tutti gli altri stati ed entranti da tutti
gli altri stati e su se stesso. Se non esiste * q _ 1, q _ j ( R _ 1)( R _ 2) * ( R _ 3) ( R _ 4)
un arco da q_i a q_j creiamo un arco con vai da q_i a q, R_1
label insieme vuoto gira su q, (R_2)*
vai da q a q_j, R_3
direttamente da q_i a q_j, R_4
15/08/20 57 15/08/20 58
In generale
Rimuovere uno stato: e
d c
qi q qj
a b
ae * d ce * b
ce * d
qi qj
ae * b
15/08/20 59 15/08/20 60
Per ogni q_i e q_j collegati via q
Algoritmo: Eliminare
uno stato alla volta fino
a che restano 2 stati.
15/08/20 63 15/08/20 64
Presentazione standard di un linguaggio
Prendiamo una stringa che viene accettata, regolare
esiste un cammino che accetta la stringa se
non usa lo stato da eliminare bene G e G’ Linguaggio regolare
accettano la stringa. In slang:
«Se G non usa lo stato da eliminare: bene G’ «si
fa lo stesso giro» »;
Se G usa lo stato da eliminare allora in G’ lo DFA
stato in oggetto non esiste ma nei nuovi archi
tutte le sottostringhe che venivano Espressione
riconosciute tramite lo stato eliminato sono NFA
regolare
descritte dalle espressioni regolari sugli archi
15/08/20 65 15/08/20 66
Lr a, bb, aa, abb, ba, bbb,... Lr {a 2nb 2mb : n, m 0}
15/08/20 69 15/08/20 70
esempio esempio
15/08/20 71 15/08/20 72
Ripetere il processo finchè
Due stati restano il grafo risultante
sarà il seguente
Grafo iniziale Grafo risultante
r1 r4
r3
q0 qf
r2
L’espressione regolare risultante:
r r1 * r2 (r4 r3r1 * r2 ) *
L(r ) L( M ) L
15/08/20 73
Definizione formale G (V , T , S , P )
Grammatica:
G V , T , S , P
Tutte le produzioni P sono della forma:
Insieme delle variabili
A s
Insieme Start Insieme delle
simboli Stringhe di
variabile produzioni
terminali Variabili e non
terminali
15/08/20 1 15/08/20 2
Grammatica lineare
Linguaggio di una grammatica:
Le grammatiche con al massimo una variabile
Per una grammatica G con start S sul lato destro della produzione
* Esempio:
L(G ) {w : S w, w T *}
S aSb S Ab
Stringhe di terminali o S A aAb
A
terminali
15/08/20 3 15/08/20 4
Grammatica non lineare Grammatica lineare
Grammatica G : S SS
Grammatica G : SA
S
A aB |
S aSb
B Ab
S bSa
G2
Esempio: Examples:
G1 S Aab
G1 G2
S Aab S abS A Aab | B
S abS
A Aab | B S a Ba
S a
Ba L(G1 ) (ab) * a L(G2 ) aab(ab) *
15/08/20 9 15/08/20 10
Teorema
Grammatiche regolari
Linguaggi
Generati da
grammatiche
Linguaggi
regolari
15/08/20 11 15/08/20 12
Teorema - Part 1 Teorema - Part 2
Linguaggi Linguaggi
Generati da Linguaggi
regolari
Generati da Linguaggi
regolari
grammatiche grammatiche
regolari regolari
Ogni grammatica regolare Ogni linguaggio regolare
Genera un liguaggio generale È generato da una grammatica regolare
15/08/20 13 15/08/20 14
a A a A
S VF S VF
B B
S aA S aA | B
15/08/20 19 15/08/20 20
A A
a a a a
S a VF S a VF
B B
S aA | B
S aA | B b
A aa B
A aa B
15/08/20 21
B bB
15/08/20 22
A A
a a a a
S a VF S a VF
a a
B B
S aA | B
b b
A aa B
B bB | a S aA aaaB aaabB aaaba
15/08/20 23 15/08/20 24
NFA M Grammatica In Generale
A G una right-linear grammatica G
a S aA | B
a Ha le variabili: V0 ,V1,V2 ,
A aa B
S a
B bB | a
VF
a
E le produzioni: Vi a1a2 amV j
B
L( M ) L(G ) or
b
aaab * a b * a Vi a1a2 am
15/08/20 25 15/08/20 26
V1 V3
Vi a1 a2 ………
am V
V0 j
VF
V2
V4
stato finale
15/08/20 27 15/08/20 28
per ogni produzione: Vi a1a2 am otteniamo NFA M come questo:
a9
Addizioniamo transizioni e nodi intermedi
a2 a4
a1 V1 V3
a3 a5
V0
a1 a2 am a3 a4
Vi ……… VF VF
a8 a9
V2 a5
V4
dimostrazione - Part 2
qualsiasi linguaggio regolare L è generato
Linguaggi da una grammatica regolare G
Generati da Linguaggi
regolari
grammatiche
regolari idea:
b b
M a M a
a a
q0 q1 q2 q0 q1 q2
q0 aq1
q0 aq1 b b
q1 bq1
q1 bq1 q3 q3
q1 aq2
q1 aq2
q2 bq3
15/08/20 35 15/08/20 36
L(G ) L( M ) L In Generale
b per qualsiasi transizione:
G a
q p
q0 aq1 M a
a
q0 q1 q2
q1 bq1
addizioniamo la produzione:
q1 aq2 b
q ap
q2 bq3 q3
q3 q1
variable terminal variable
q3
15/08/20 37 15/08/20 38
G è grammatica regolare
Addizioniamo la qf con
produzione: L(G ) L( M ) L
15/08/20 39 15/08/20 40
Come possiamo provare che un linguaggio
{a nb n : n 0} L
linguaggi Non-regolari non è regolare?
{vv R : v {a, b}*}
Dobbiamo provare che non vi è
linguaggi regolari Nessun DFa or NFa or RE
che lo accetta
a *b b*c a Difficulty: non è facile da provare
b c ( a b) * (perchè vi sono infiniti dfa, nfa e re)
Pigeonhole Principle
4 pigeons
a pigeonhole deve
Contenere due pigeons
3 pigeonholes
15/08/20 3 15/08/20 4
il Pigeonhole Principle
n pigeons n pigeons
m pigeonholes
........... a pigeonhole deve
nm Contenere minimo
due pigeons
m pigeonholes nm
........... ...........
15/08/20 5 15/08/20 6
Cesti: q1 q2 q3 q4 q1 a q2 a q3 b q4
(stati dell’automata) stato
15/08/20
Ripetuto
9 15/08/20
a a 10
sono di più
arbitrario DFa
Nests: q1 q2 q3 q4
q1 1 2
...... qi ...... k q z
(automaton stati) ripetuto
Stati automa
stato stato ripetuto
15/08/20 11 15/08/20 12
| w | # states of DFA m
Sono di
il Pumping Lemma
Più degli
cammino in DFa di
w 1 2 k
m
stati 1 2 ...... q ...... k
stato ripetuto in DFa
15/08/20 15 15/08/20 16
Ci saranno molti stati ripetuti
15/08/20 17 15/08/20 18
j
z
i 1
q ... q
15/08/20 21 15/08/20
x 22
Non fa il loop
y segue loop y
2 volte
... ...
j i 1 j i 1
1
... i
q j 1... ... k 1
... i
q j 1... ... k
x z x z
15/08/20 23 15/08/20 24
addizionale stringa: la stringa xyyyz In Generale: la stringa x yi z
è accettata è accettata i 0, 1, 2, ...
3 volte il loop y y
i volte il loop
... ...
j i 1 j i 1
1
... i
q j 1... ... k 1
... i
q j 1... ... k
x z x z
15/08/20 25 15/08/20 26
• possiamo scrivere w x y z
j i 1
1
... i
q j 1... ... k
• con |x y| m e | y | 1
15/08/20 29 15/08/20 30
15/08/20 31 15/08/20 32
Spiegazione Step 3: come avere una contradizione
Note: È sufficiente mostrare che
1. Let msia la lunghezza critica for L
solo una stringa w L
2. Scegliamo una stringa particolare w L genera una contradizione
che soddisfa la condizione di lunghezza | w | m
3. scrivere w xyz
Non dobbiamo ottenere
4. mostriamo che w xy i z L Per qualche i 1
contradizioni per ogni w L
5. Questo ci dà una contradizione, poichè dal
pumping lemma w xy i z L
15/08/20 33 15/08/20 34
teorema: il linguaggio L {a nb n : n 0}
assumiamo per contradizione
non è regolare
che L è un linguaggio regolare
15/08/20 35 15/08/20 36
L {a nb n : n 0} Dal Pumping Lemma:
m m
sia m la lunghezza critica per L possiamoscrivere w a b x y z
Con lunghezza | x y | m, | y | 1
Prendiamo a stringa w such che: w L
m m
e lunghezza | w| m
w xyz a mb m a...aa...aa...ab...b
m m x y z
prendiamo wa b
k
allora: y a , 1 k m
15/08/20 37 15/08/20 38
x y z a mb m y ak, 1 k m x y z a mb m y ak, 1 k m
allora: x y2 z L x y y z
allora: a m k b m L
15/08/20 39 15/08/20 40
a m k b m L k≥ 1
aaabbb =xyz
1 caso x=aa y=a z=bbb MA: L {a nb n : n 0}
aa aa bbb
Linguaggio regolare
L(a*b* )
Conclusione: L non è un linguaggio regolare
END dim
15/08/20 43 15/08/20 44
a*b*
aayabybb=xyz y=a
aa aa a bbb
aaa bbbbb
y=ab
aaabbbb
15/08/20 45
Initial Stack Symbol
Stack Stack
Pushdown Automata
PDA
stack
$ z top
testina
States
q1 a, b c q2
15/08/20 3 15/08/20 4
a, b c a, c
q1 q2 q1 q2
input input
a a a a
stack stack c
b top c b top b
h diventa h h Push h
e e e e
$ $ $ $
15/08/20 5 15/08/20 6
a, b a,
q1 q2 q1 q2
input input
a a a a
stack stack
b top b top b
h Pop h h immutato h
e e e e
$ $ $ $
15/08/20 7 15/08/20 8
Pop da uno stack vuoto Non-Determinismo
a, b c
q1 q2 PDAs sono non-deterministici
input
Permettono transizioni non deterministiche
a
stack Pop Automa si ferma! q2
a, b c
top , b c
q1 q1 q2
Se l’automata tenta di fare un pop
a, b c
transition
da uno stack vuoto allora si ferma q3
la computazione e rigetta l’input
15/08/20 9 15/08/20 10
Esempio di PDA L( M ) {a nb n : n 0}
Idea di base:
3. Match
a, a b, a a, a b, a trovato
q0 , q1 b, a q2 , $ $ q3 q0 , q1 b, a q2 , $ $ q3
15/08/20 11 15/08/20 12
Esempio di esecuzione: Time 0 Time 1
Input Input
a a a b b b a a a b b b
$ $
Stack Stack
Stato a, a b, a a, a b, a
corrente
q0 , q1 b, a q2 , $ $ q3 q0 , q1 b, a q2 , $ $ q3
15/08/20 13 15/08/20 14
Time 2 Time 3
Input Input a
a a a b b b a a a a b b b a
$ $
Stack
Stack
a, a b, a a, a b, a
q0 , q1 b, a q2 , $ $ q3 q0 , q1 b, a q2 , $ $ q3
15/08/20 15 15/08/20 16
Time 4 Time 5
a a
Input Input
a a
a a a b b b a a a a b b b a
$ $
Stack Stack
a, a b, a a, a b, a
q0 , q1 b, a q2 , $ $ q3 q0 , q1 b, a q2 , $ $ q3
15/08/20 17 15/08/20 18
Time 6 Time 7
Input a Input
a a a b b b a a a a b b b a
$ $
Stack Stack
a, a b, a a, a b, a
q0 , q1 b, a q2 , $ $ q3 q0 , q1 b, a q2 , $ $ q3
15/08/20 19 15/08/20 20
Time 8 Una stringa è accettata se
Input vi è una computazione tale che:
a a a b b b
tutti gli input sono “consumati”
$
E
Stack
lo stato raggiunto è uno stato di accettazione
a, a b, a
Non teniamo conto di quello che c’è nello
accettato
Stack alla fine dello stato di accettazione
q0 , q1 b, a q2 , $ $ q3
15/08/20 21 15/08/20 22
Stato a, a b, a Stato a, a b, a
corrente corrente
q0 , q1 b, a q2 , $ $ q3 q0 , q1 b, a q2 , $ $ q3
15/08/20 23 15/08/20 24
non acettazione : Time 2 non acettazione : Time 3
Input Input a
a a b a a a b a
$ $
Stack Stack
Stato a, a b, a Stato a, a b, a
corrente corrente
q0 , q1 b, a q2 , $ $ q3 q0 , q1 b, a q2 , $ $ q3
15/08/20 25 15/08/20 26
q0 , q1 b, a q2 , $ $ q3 q0 , q1 b, a q2 , $ $ q3
15/08/20 27 15/08/20 28
Non esiste una computazione accettante Un altro esempio di PDA
Per aab .
La stringa aab è rigettata dal PDA.
PDA M: L( M ) {vv R : v {a, b} }
a, a a, a
a, a b, a b, b b, b
q0 , q1 b, a q2 , $ $ q3
q0 , q1 , $ $ q2
15/08/20 29 15/08/20 30
R
1. Push v 3. verifica v in
aby aa y a y aba=xyz 2. Congettura
Nello stack Input con v nello
metà
abcy cba stack
Dell’input
a, a a, a 4. Verifica
b, b b, b trovata
q0 , q1 , $ $ q2
15/08/20 31 15/08/20 32
esecuzione: Time 0 Time 1
Input Input
a b b a a b b a
a
$ $
Stack Stack
a, a a, a a, a a, a
b, b b, b b, b b, b
q0 , q1 , $ $ q2 q0 , q1 , $ $ q2
15/08/20 33 15/08/20 34
Time 2 Time 3
Input Input
b b
a b b a a b b a
a Congettura sei a
$ Metà input $
Stack Stack
a, a a, a a, a a, a
b, b b, b b, b b, b
q0 , q1 , $ $ q2 q0 , q1 , $ $ q2
15/08/20 35 15/08/20 36
Time 4 Time 5
Input Input
b
a b b a a b b a
a a
$ $
Stack Stack
a, a a, a a, a a, a
b, b b, b b, b b, b
, , $ $ ,
q0 q1 q2 q0 q1 , $ $ q2
15/08/20 37 15/08/20 38
q0 , q1 , $ $ q2
15/08/20 41 15/08/20 42
Time 1 Time 2
Input Input
b
a b b b a b b b
a a
$ $
Stack Stack
a, a a, a a, a a, a
b, b b, b b, b b, b
q0 , q1 , $ $ q2 q0 , q1 , $ $ q2
15/08/20 43 15/08/20 44
Time 3 Time 4
Input Input
b b
a b b b a b b b
Congettura sei a a
A metà dell’input $ $
Stack Stack
a, a a, a a, a a, a
b, b b, b b, b b, b
q0 , q1 , $ $ q2 q0 , q1 , $ $ q2
15/08/20 45 15/08/20 46
,
q0 q1 , $ $ q2 q0 , q1 , $ $ q2
15/08/20 47 15/08/20 48
Time 1 Time 2
Input Input
b
a b b b a b b b
a a
$ $
Stack Stack
a, a a, a a, a a, a
b, b b, b b, b b, b
q0 , q1 , $ $ q2 q0 , q1 , $ $ q2
15/08/20 49 15/08/20 50
Time 3 Time 4 b
Input b Input b
b b
a b b b a b b b
a a
$ $
Stack Stack
a, a a, a a, a a, a
b, b b, b b, b b, b
q0 , q1 , $ $ q2 q0 , q1 , $ $ q2
15/08/20 51 15/08/20 52
Time 5 b
Non esiste nessuna computazione
Input b
No stato di che accetta abbb
b
a b b b accettazione a abbb L(M )
$
Stack
a, a a, a a, a a, a
b, b b, b b, b b, b
q0 , q1 , $ $ q2 q0 , q1 , $ $ q2
15/08/20 53 15/08/20 54
1. Push v 3. verifica v in
R
Input Pop Push
2. Congettura simbolo
Nello stack Input con v nello simbolo simbolo
metà
stack
Dell’input
a, a a, a 4. Verifica
q1 a, b c q2
b, b b, b trovata
q0 , q1 , $ $ q2
15/08/20 55 15/08/20 56
Pushing & Popping Strings Esempio: a , eb cdf
q1 q2
input
Input Pop Push
a
a
symbol string string
stack
top c push
e top d
a , w1 w2 pop string
q1 q2 b f
string h diventa h
e e
$ $
15/08/20 57 15/08/20 58
q1
a , eb cdf
q2 altro PDA esempio
L( M ) {w {a, b}* : na ( w) nb ( w)}
Transizioni
equivalenti PDA M
pop
a, e lam, b a, $ 0$ b, $ 1$
q1 a, 0 00 b, 1 11
, a, 1 b, 0
push
l, f l, d l, c q
2
q1
, $ $ q2
15/08/20 59 15/08/20 60
esecuzione: Time 0 Time 1
Input Input
a b b b a a a b b b a a
0
$ $
a, $ 0$ b, $ 1$ a, $ 0$ b, $ 1$
Stack Stack
a, 0 00 b, 1 11 a, 0 00 b, 1 11
a, 1 b, 0 a, 1 b, 0
current
state , $ $ q2 , $ $ q2
q1 q1
15/08/20 61 15/08/20 62
Time 3 Time 4
Input Input
a b b b a a a b b b a a
0 1
$ $
a, $ 0$ b, $ 1$ a, $ 0$ b, $ 1$
Stack Stack
a, 0 00 b, 1 11 a, 0 00 b, 1 11
a, 1 b, 0 a, 1 b, 0
q1
, $ $ q2 q1
, $ $ q2
15/08/20 63 15/08/20 64
Time 5 Time 6
Input Input
a b b b a a 1 a b b b a a 1
1 1
$ $
a, $ 0$ b, $ 1$ a, $ 0$ b, $ 1$
Stack Stack
a, 0 00 b, 1 11 a, 0 00 b, 1 11
a, 1 b, 0 a, 1 b, 0
q1 , $ $ q2 q1 , $ $ q2
15/08/20 65 15/08/20 66
Time 7 Time 8
Input Input
a b b b a a a b b b a a
1
$ $
a, $ 0$ b, $ 1$ a, $ 0$ b, $ 1$
Stack Stack
a, 0 00 b, 1 11 a, 0 00 b, 1 11
a, 1 b, 0 a, 1 b, 0
accept
q1
, $ $ q2 q1
, $ $ q2
15/08/20 67 15/08/20 68
a , w1 w2
q1 q2
Formalismo per I PDA
Funzione di transizione:
(q1 , a ,w 1 ) {(q2 ,w 2 )}
15/08/20 69 15/08/20 70
q2 Formal Definition
a , w1 w2
Pushdown Automaton (PDA)
q1
M (Q, Σ, Γ, δ, q0 , z , F ) Accept
a , w1 w3 q3 states
States
Instantaneous Description
: Stato x Inputx Stack -> P {(Stato, Stack)}
( q, u , s )
Current Current
Remaining
state stack
input
Delta sigma_input x
contents
15/08/20 73 15/08/20 74
q0 , q1 b, a q2 , $ $ q3 q0 , q1 b, a q2 , $ $ q3
15/08/20 75 15/08/20 76
Una computazione:
q0 , q1 b, a q2 , $ $ q3
15/08/20 77 15/08/20 78
Language of PDA
(q0 , aaabbb,$) (q1, aaabbb,$)
Linguaggio L (M ) accettato da PDA M :
(q1, aabbb, a$) (q1, abbb, aa$) (q1, bbb, aaa$)
(q2 , bb, aa$) (q2 , b, a$) (q2 , ,$) (q3 , ,$)
L( M ) {w : (q0 , w, z ) (q f , , s)}
PDA M : PDA M :
a, a b, a a, a b, a
q0 , q1 b, a q2 , $ $ q3 q0 , q1 b, a q2 , $ $ q3
15/08/20 81 15/08/20 82
quindi: L( M ) {a nb n : n 0}
PDA M :
a, a b, a
q0 , q1 b, a q2 , $ $ q3
15/08/20 83
Context free
15/08/20 1 15/08/20 2
15/08/20 3 15/08/20 4
Conversione nella Chomsky Normal Form Introduciamo nuove variabili per i terminali:
Ta , Tb , Tc
esempio: S ABa
Not Chomsky S ABTa
A aab Normal Form
S ABa A TaTaTb
B Ac
A aab B ATc
B Ac Ta a
Convertiamo questa grammatica nella Tb b
Chomsky Normal Form
Tc c
15/08/20 5 15/08/20 6
15/08/20
Tc c 9 15/08/20 10
15/08/20 15 15/08/20 16
15/08/20 17 15/08/20 18
15/08/20 19 15/08/20 20
15/08/20 21 15/08/20 22
15/08/20 23 15/08/20 24
15/08/20 25
Gli stati dell’automa , Variabili della
grammatica e vale l’opposto.
applicazioni
Le variabili context free sono gli stati del
del PDA?
Pumping Lemma W y Z x K, W yy Z xx K, W yyy Z xxx K
Qualcosa di più complicato dobbiamo
considerare sia la variabile che genera la y
(Y) e sia la variabile che genera la x (X)
Stato YX ?
15/08/20 1 15/08/20 2
15/08/20 5 15/08/20 6
con lunghezza: | x y | m, | y | 1
Prendiamo una stringa w tale che: w L
m m m m
con lunghezza
| w| m w xyz a...aa...a...ab...bb...ba...a
x y z
prendiamo w a mb mb m a m
allora: y ak, 1 k m
15/08/20 7 15/08/20 8
x y z a mb mb m a m y ak, 1 k m x y z a mb mb m a m y ak, 1 k m
a m k b mb m a m L k 1 Considerare i casi
con y tra le b, tra le
a e tra ab.
ma: L {vv R : v *}
m+k m m m
xy 2 z = a...aa...aa...a...ab...bb...ba...a ∈ L
a m k b mb m a m L x y y z
CONTRADIZIONE!!!
15/08/20 11 15/08/20 12
quindi: L’assunzione che L è Teorema: il linguaggio
un linguaggio regolare non
L {a nbl c nl : n, l 0}
è vera
non è regolare
END OF PROOF
15/08/20 13 15/08/20 14
L {a nbl c nl : n, l 0}
L {a nbl c nl : n, l 0}
sia m la lunghezza critica di L
assumiamo per contradzione
che L sia un linguaggio regolare Prendiamo una stringa w tale che: w L
e lunghezza | w| m
poichè L è infinito allora
possiamo applicare il Pumping Lemma
prendiamo w a mb m c 2 m
15/08/20 15 15/08/20 16
Dal Pumping Lemma:
x y z a mb m c 2 m y ak, 1 k m
possiamo scrivere w a m b m c 2m x y z
con lunghezzas | x y | m, | y | 1
Dal Pumping Lemma: x yi z L
m m 2m
i 0, 1, 2, ...
w xyz a...aa...aa...ab...bc...cc...c
x y z
allora: x y 0 z = xz ∈ L
allora: y ak, 1 k m
15/08/20 17 15/08/20 18
x y z a mb m c 2 m y ak, 1 k m a mk b mc 2m L k 1
mk m 2m Contradizione.
allora: a b c L
15/08/20 19 15/08/20 20
Vedere gli altri casi. La y tra le Teorema: il linguaggio L {a n! : n 0}
b, tra le c, tra ab, tra bc.
Non è regolare
L {a n! : n 0}
L {a n! : n 0}
sia m la lunghezza critica of L
assumiamo che L
sia un linguaggio regolare prendiamo una stringa w tale che: w L
lunghezza | w| m
poichè L è infinito
Possiamo applicare il Pumping Lemma
prendiamo w a m!
15/08/20 23 15/08/20 24
Dal Pumping Lemma: x y z a m! y ak , 1 k m
Possiamo scrivere w a m! x y z
con lunghezza | x y | m, | y | 1
Dal Pumping Lemma: x yi z L
m m! m
m! i 0, 1, 2, ...
w xyz a a...aa...aa...aa...aa...a
x y z
allora: x y2 z L
allora: y ak , 1 k m
15/08/20 25 15/08/20 26
x y z a m! y ak , 1 k m a m! k L 1 k m
mk m!m
xy 2 z a...aa...aa...aa...aa...aa...a L
x y y Deve esistere p tale che:
z
m! k p!
allora: a m! k L
15/08/20 27 15/08/20 28
ovvero: m! k m! m per m 1
a m! k L 1 k m
m! m!
m!m m!
m!(m 1) ma: L {a n! : n 0}
(m 1)!
contradizione
m! k p! Per ogni p
15/08/20 29 15/08/20 30
END OF PROOF
15/08/20 31 15/08/20 32
The Pumping Lemma:
Per un linguaggio infinito context-free L m>=
Esiste un intero m tale che (2_numero delle variabili
della grammatica)-1
per ogni stringa w L, | w | m
Perché?
possiamo scrivere w uvxyz
Con lunghezze | vxy | m and | vy | 1
E deve essere:
i i
uv xy z L, for all i 0
15/08/20 33 15/08/20 34
linguaggi Context-free
15/08/20 35 15/08/20 36
L {vv : v {a, b}*} L {vv : v {a, b}*}
Assumiamo per assurdo che L Pumping Lemma ci dà un magico numero m
è context-free tale che da li in poi due pezzi della stringa
si ripetono.
Prendiamo
una stringa di L con lunghezza almeno m
poichè L è context-free e infinito
Possiamo applicare il pumping lemma sia: a mb m a mb m L
15/08/20 37 15/08/20 38
v a k1 y a k2 k1 k 2 1 v a k1 y a k2 k1 k 2 1
m m m m m k1 k 2 m m m
a ...... a b ...... b a ...... a b ...... b a ................ a b ...... b a ...... a b ...... b
u vx y z u v2 x y2 z
15/08/20 41 15/08/20 42
a m k1 k2 b m a mb m uv 2 xy 2 z L a m k1 k2 b m a mb m uv 2 xy 2 z L
Contradizione!!!
15/08/20 43 15/08/20 44
L {vv : v {a, b}*} L {vv : v {a, b}*}
a mb m a mb m uvxyz | vxy | m | vy | 1 a mb m a mb m uvxyz | vxy | m | vy | 1
v a k1 y b k2 k1 k 2 1 v a k1 y b k2 k1 k 2 1
m m m m m k1 m k2 m m
a ...... a b ...... b a ...... a b ...... b a ............ a b ............ b a ...... a b ...... b
u v x y z u v2 x y2 z
15/08/20 45 15/08/20 46
a m k1 b m k2 a mb m uv 2 xy 2 z L a m k1 b m k2 a mb m uv 2 xy 2 z L
Contradizione!!!
15/08/20 47 15/08/20 48
L {vv : v {a, b}*} L {vv : v {a, b}*}
a mb m a mb m uvxyz | vxy | m | vy | 1 a mb m a mb m uvxyz | vxy | m | vy | 1
m m m m m k2 k1 m k3 m m
a ...... a b ...... b a ...... a b ...... b a ...... a b ... b a ... a b ......... b a ...... a b ...... b
u v xy z u v2 x y2 z
15/08/20 49 15/08/20 50
a mb k2 a k1 b m k3 a mb m uv 2 xy 2 z L a mb k2 a k1 b k3 a mb m uv 2 xy 2 z L
2 2
k1, k 2 1 dal Pumping Lemma: uv xy z L
assurdo!!!
15/08/20 51 15/08/20 52
L {vv : v {a, b}*} Altri casi: vxy È dentro a mb m a mb m
a mb m a mb m uvxyz | vxy | m | vy | 1
or
m
Case 4: v È nel primo a a mb m a mb m
y Sovrappone a mb m
or
Analisi simile al caso 3 a mb m a mb m
m m m m
Analisi simile al caso 1:
a ...... a b ...... b a ...... a b ...... b
uv x y z a mb m a mb m
15/08/20 53 15/08/20 54
quindi: {a n! : n 0}
Il punto di partenza che
L {vv : v {a, b}*}
linguaggi Context-free
è context-free è sbagliato
linguaggi Context-free
15/08/20 59 15/08/20 60
n2 n n2 n
L {a b : n 0} L {a b : n 0}
assumiamo per assurdo che L Pumping Lemma ci da m
è context-free
15/08/20 61 15/08/20 62
n2 n n2 n
L {a b : n 0} L {a b : n 0}
m2 m
m2 m a b uvxyz | vxy | m | vy | 1
Prendiamo m: a b uvxyz
n2 n
L {a b : n 0} Vediamo il rapporto tra il
2
numero di a e di b quando i=0
a m b m uvxyz | vxy | m | vy | 1
Sia i=0: (m k 2 ) 2 (m 1) 2
m 2 2m 1
v a k1 y b k2 1 k1 k 2 m
m 2 k1
m 2 k1 m k 2
a b uv 0 xy 0 z m 2 k1 (m k 2 ) 2
15/08/20 67 15/08/20 68
m 2 k1 (m k 2 ) 2 Casi
Caso 1. v e y sono una serie di a, quindi pumping v e y
aumentano le a ma non le b
m 2 k1 m k2 Caso 2. v e y sono una serie di b, quindi pumping v e y
a b uv 0 xy 0 z L aumentano le b ma non le a.
Caso 3 (interessante) visto prima
Ma via PL: v è una serie di a e y è una serie di b.
Si potrebbe pensare che crescono secondo
uv 0 xy 0 z L le regole del linguaggio. Ma le a dovrebbero
crescere rispetto alle brispettando il fatto
che le tutte le a sono di lunghezza quadratic
assurdo!!! rispetto al numero delle b. Questo non è possibile
Perche le v, quindi le a, crescono linearmente
(allo stesso modo) delle y , ovvero delle b.
15/08/20 69 15/08/20 70
Context-Free linguaggi
PDA sono equivalenti
ai
linguaggi
(grammatiche)
accettati da
PDA
linguaggi Context-Free
15/08/20 1 15/08/20 2
dimostrazione - Step 1:
dimostrazione - step 1
Context-Free linguaggi
linguaggi accettati by trasforma le
(grammatiche) PDAs
grammatiche Context-Free
in
Traduci ogni grammatica context-free G PDAs
In un PDA M con: L(G ) L( M )
15/08/20 3 15/08/20 4
Prendiamo una grammatica context-free G
L(G ) L( M )
15/08/20 5 15/08/20 6
Grammatica consideriamo le
Derivazioni Leftmost Procedura di conversione:
T Ta , S aSTb , S aSTb $
Time 0
T , S b , S b Stack
, T Ta a, a , T Ta a, a
, T b, b , T b, b
, S , $ $ , S , $ $
q0 q1 q2 q0 q1 q2
15/08/20 9 15/08/20 10
q0 , S q1 , $ $ q2 q0 , S q1 , $ $ q2
15/08/20 11 15/08/20 12
derivazione:S aSTb a derivazione:S aSTb abTb
S b
Input a b a b Input a b a b
T T
b b
, S aSTb $ , S aSTb $
Time 3 Time 4
, S b Stack , S b Stack
, T Ta a, a , T Ta a, a
, T b, b , T b, b
q0 , S q1 , $ $ q2 q0 , S q1 , $ $ q2
15/08/20 13 15/08/20 14
q0 , S q1 , $ $ q2 q0 , S q1 , $ $ q2
15/08/20 15 15/08/20 16
derivazione:S aSTb abTb abTab abab derivazione:S aSTb abTb abTab abab
T
Input a b a b Input a b a b
a a
b b
, S aSTb $ , S aSTb $
Time 7 Time 8
, S b Stack , S b Stack
, T Ta a, a , T Ta a, a
, T b, b , T b, b
q0 , S q1 , $ $ q2 q0 , S q1 , $ $ q2
15/08/20 17 15/08/20 18
derivazione:S aSTb abTb abTab abab derivazione:S aSTb abTb abTab abab
Input a b a b Input a b a b
b
, S aSTb $ , S aSTb $
Time 9 Time 10
, S b Stack , S b Stack
, T Ta a, a , T Ta a, a
, T b, b , T b, b
accettaz
q0 , S q1 , $ $ q2 q0 , S q1 , $ $ q2
15/08/20 19 15/08/20 20
Procedura di conversione: esempio
grammatica
per ogni per ogni S aSTb
produzione in G PDA
terminale in G S b
Aw a T Ta , S aSTb
Addiziona T , S b
le transizioni , T Ta a, a
, A w a, a , T b, b
, S , $ $ , S , $ $
q0 q1 q2 q0 q1 q2
15/08/20 21 15/08/20 22
q0 , q1 b, a q2 , $ $ q3
15/08/20 23 15/08/20 24
configurazione istantanea
(q2 , bb, aa$)
passo di computazione.
a
Time n+1: Input a
a a a b b b a (q1, bbb, aaa$) (q2 , bb, aa$)
$
Time n Time n+1
Stack
a, a b, a
q0 , q1 b, a q2 , $ $ q3
15/08/20 25 15/08/20 26
simboli Contenuti , S , $ $
esaminati Dello Stack
q0 q1 q2
15/08/20 27 15/08/20 28
esempio grammatica Calcolo PDA
grammatica
Derivazione Leftmost
S aSTb (q0 , abab,$)
PDA S (q1 , abab, S $)
S b
, S aSTb aSTb (q1 , bab, STb$)
T Ta (q1 , bab, bTb$)
, S b abTb
T (q1 , ab, Tb$)
, T Ta a, a abTab (q1 , ab, Tab $)
grammatica grammatica
calcolo del PDA calcolo del PDA
Leftmost derivazione Leftmost derivazione
xAy (q1 , i n , Ay $)
xAy (q1 , i n , Ay $)
i j Bzy (q1 , i n , i j Bzy $)
i j Bzy (q1 , i n , i j Bzy $)
(q1 , i 1 n , i 1 j Bzy $)
Produzione Applicata Transizione applicata
Transizione applicata
A i j Bz leggi i dall’input
, A i j Bz i , i
E rimuovilo dallo stack
q0 , S q1 , $ $ q2 q0 , S q1 , $ $ q2
15/08/20 31 15/08/20 32
grammatica Il processo viene ripetuto con successiva
PDA calcolo
Leftmost derivazione variabile leftmost
xAy (q1 , i n , Ay $)
xAy
i j Bzy (q1 , i n , i j Bzy $)
i j Bzy (q1 , j 1 n , Bzy $)
(q1 , i 1 n , i 1 j Bzy $) i j j 1 k Cpzy (q1 , j 1 n , j 1 k Cpzy $)
(q1 , j 1 n , Bzy $)
(q1 , k 1 n , Cpzy $)
ultima Transizione applicata
tutti simboli i j Produzione applicata
j , j
Sono stati rimossi B j 1 k Cp E cosi via
Dal top dello stack
q0 , S q1 , $ $ q2
15/08/20 33 15/08/20 34
dimostrato che:
Proof - step 2
grammatica G
Genera la PDA M
Se e accetta w Tradurre
stringa w
solo se i PDA
* (q0 , w,$) (q2 , ,$)
Sw in
grammatiche Context-Free
quindi L(G ) L( M )
15/08/20 35 15/08/20 36
Prendi un qualsiasi PDA M Prima di tutto modifica PDA M tale che:
1. PDA ha un solo stato di accettazione
PDA M1 vecchi
• - nuovo simbolo iniziale @ Stati di
accettazione
nuovo
• - stato di accettazione nello stack solo @ PDA M ,
Stato di
accettazione
,
qf
,
15/08/20 39 15/08/20 40
2. Nuovo simbolo iniziale dello stack 3. Nello stato di accetazione
Top of stack
lo stack contiene
Z Vecchio simbolo iniziale
solo il simbolo @
@ Simbolo ausiliario stack
PDA M3 Stack vuoto
x {@}
PDA M2 vecchio nuovo
PDA M1 Stato di
, x Stato di
, @ , Z PDA M2
accettazione accettazione
, , @ qf
qi
, ,
PDA M4 qj
, a , b q
PDA M4 qi j
dove è un qualsiasi simbolo
15/08/20 43 15/08/20
dell’alfabeto di input 44
Esempio: M a, a
b, a
PDA M4 è il PDA completamente
modificato secondo le regole precedenti
q
PDA
Costruzione della grammatica caso 1: per ogni stato
q
variabili: Aqi ,q j
Aqq
15/08/20 47 15/08/20 48
PDA PDA
caso 2: per ogni tre stati caso 3: per ogni coppia di transizioni
p q r a, t b,t q
p r s
grammatica grammatica
15/08/20 49 15/08/20 50
15/08/20 51 15/08/20 52
grammatica caso 2: da triple di stati
Aq0q0 Aq0q0 Aq0q0 | Aq0q1 Aq1q0 | Aq0q2 Aq2q0 | Aq0q3 Aq3q0 | Aq0q4 Aq4q0 | Aq0q5 Aq5q0
caso 1: da stati singoli
Aq0q1 Aq0q0 Aq0q1 | Aq0q1 Aq1q1 | Aq0q2 Aq2q1 | Aq0q3 Aq3q1 | Aq0q4 Aq4q1 | Aq0q5 Aq5q1
Aq0q0
Aq1q1 Aq0q5 Aq0q0 Aq0q5 | Aq0q1 Aq1q5 | Aq0q2 Aq2q5 | Aq0q3 Aq3q5 | Aq0q4 Aq4q5 | Aq0q5 Aq5q5
Aq2q2
Aq5q5 Aq5q0 Aq0q5 | Aq5q1 Aq1q5 | Aq5q2 Aq2q5 | Aq5q3 Aq3q5 | Aq5q4 Aq4q5 | Aq5q5 Aq5q5
Aq3q3
Aq4q4
Aq5q5 Variabile Start Aq0q5
15/08/20 53 15/08/20 54
grammatica
Aq0q5 Aq1q4 Aq2q4 aAq2q4 Aq2q2 Aq3q2 b
Apq aArs b Aq1q4 Aq2q4 Aq2q2 aAq2q2 b Aq2q4 Aq3q3
Aq2q4 aAq2q3 Aq2q4 Aq3q4
15/08/20 55 15/08/20 56
Supponiamo che il PDA M è stato tradotto L(G ) L(M )
In una grammatica context-free G Dobbiamo mostrare che se G ha
una derivazione:
Dobbiamo provare L(G ) L(M ) Aq0qf w (stringa di terminali)
15/08/20 57 15/08/20 58
15/08/20 59 15/08/20 60
Lemma: Dim intuitiva:
Apq w
se Apq w (stringa di terminali)
Allora vi è un calcolo
dallo stato p allo stato q
sulla stringa w Case 1: Apq Apr Arq w
Che lascia lo stack vuoto:
( p ,w , ) (q , , ) Case 2: Apq aArs b w
15/08/20 61 15/08/20 62
Type 2 Type 3
altezza altezza
Stack Stack
r s
p r q p a b q
Input string Generato da Apr Generato da Arq Input string Generato da Ars
15/08/20 63 15/08/20 64
Formale : base: Apq w
(Uno step di derivazione)
Proviamo l’asserto per induzione
Sul numero di step della derivazione: caso 1 produzione che deve essere usata è:
App
Apq w Quindi p q e w
Apq w Apq w
( p ,w , ) (q , , ) ( p ,w , ) (q , , )
15/08/20 67 15/08/20 68
Apq w
Case 1: Apq Apr Arq w
k 1 derivazione steps
k 1 steps
Sia: w yz
Case 1: Apq Apr Arq w
Apr y Arq z
Case 2: Apq aArs b w Massimo k steps Massimo k steps
15/08/20 69 15/08/20 70
Apr y Arq z ( p , y , ) (r , , ) (r , z , ) (q , , )
( p , yz , ) (r , z , ) (q , , )
15/08/20 71 15/08/20 72
Ars y
Case 2: Apq aArs b w
Massimo k steps
k 1 steps
Possiamo scrivere
w ayb
Per ipotesi induttiva ,
il PDA calcola:
Ars y
(r , y , ) (s , , )
Massimo k steps
15/08/20 73 15/08/20 74
15/08/20 75 15/08/20 76
sappiamo
λ, b → w
q1 q2
a, b → w1 q2 λ , b → w1 q2
a, b → w1 q2 λ , b → w1 q2
q1 q1
q1 q1
a , b → w2 q3 a , b → w2 q3
a , c → w2 q3 λ , c → w2 q3
a, λ → a b, a → λ "
L( M ) = {a nb n : n ≥ 0}
q0 a, λ → a q1 b, a → λ q2 λ , $ → $ q3
" #
a, λ → a a, a → λ a, λ → a a, a → λ
b, λ → b b, b → λ b, λ → b b, b → λ
q0 λ, λ → λ q1 λ, $ → $ q2 q0 λ, λ → λ q1 λ, $ → $ q2
% & #' L = {a nb n } ∪ {a nb 2n }
%
*
& #' ⊂ *
n≥0
++
L∉ L∈
, L & )
)
, L & #)
& #) L
primavera 2016 11 primavera 2016 12
L = {a nb n } ∪ {a nb 2n }
L = {a nb n } ∪ {a nb 2n }
L & #)
& #)
- % & #) L
S → S1 | S 2 {a nb n } ∪ {a nb 2n }
L
S1 → aS1b | λ {a nb n }
S 2 → aS2bb | λ {a nb 2n }
primavera 2016 13 primavera 2016 14
M L( M ) = {a nb n } ∪ {a nb 2n }
L = {a nb n } ∪ {a nb 2n }
a nb n
& )
a nb n bn
.
" M L
a nb 2 n
primavera 2016 15 primavera 2016 16
M L( M ) = {a nb n } ∪ {a nb 2n } {a nb nc n }
& #)
% & #)
a nb n
M
1
a nb n bn a*b*
/ 0 & )
L ∪ {a nb nc n } 2
& #)
L ∪ {a nb nc n }
( L = {a nb n } ∪ {a nb 2n }) ( L = {a nb n } ∪ {a nb 2n })
% 3
& #)
.
L ∪ {a nb nc n }
4 & #) L = {a nb n } ∪ {a nb 2n }
& )
L ∪ {a nb nc n } & #)
' & )
primavera 2016 23 primavera 2016 24
The CYK Algorithm The CYK Algorithm
• Il problema dell’appartenenza:
– Problema:
• Data una grammatica grammar G e una stringa w
– La grammatica è scritta in Chomsky Normal Form
– G = (V, ∑ ,P , S) dove – Viene usata una tecnica chiamata “dynamic
» V insieme finito di variabili programming” o “table-filling algorithm”
» ∑ (alfabeto) insieme finito di simboli terminali-
» P insieme finito di produzioni
» S simbolo iniziale (elemento distintivo di V)
» V e ∑ sono insiemi disgiunti
– G genera un linguaggio, L(G),
– Domanda :
• w appartiene al L(G)?
08/15/20 1 08/15/20 2
08/15/20 3 08/15/20 4
Esempio CYK Algorithm Constructing The Triangular Table
S AB | BC
• Prendiamo la seguente grammatica: A BA | a
B CC | b
– CNF grammatica G C AB | a
• S AB | BC
• A BA | a
• B CC | b
• C AB | a {B} {A, C} {A, C} {B} {A, C}
– w sia baaba b a a b a
– E’ baaba in L(G)?
Calcolare la riga più bassa
08/15/20 5 08/15/20 6
08/15/20 7 08/15/20 8
Constructing The Triangular Table
• X2 , 2 = (X1 , 2 , X1 , 3)
• {A, C}{A,C} = {AA, AC, CA, CC} = Y
• Step:
– Trovare, se esistono, le regole che producono Y {S, A} {B}
– Esiste una : B {B} {A, C} {A, C} {B} {A, C}
S AB | BC
– X2 , 2 = {B} A BA | a b a a b a
B CC | b
C AB | a
08/15/20 9 08/15/20 10
• X2 , 3 = (X1 , 3 , X1 , 4)
• {A, C}{B} = {AB, CB} = Y
• Steps:
– Trovare, se esistono, le regole che producono Y {S, A} {B} {S, C}
– sono: S e C {B} {A, C} {A, C} {B} {A, C}
S AB | BC
– X2 , 3 = {S, C} A BA | a b a a b a
B CC | b
C AB | a
08/15/20 11 08/15/20 12
Constructing The Triangular Table
• X2 , 4 = (X1 , 4 , X1 , 5)
• {B}{A, C} = {BA, BC} = Y
• Steps:
– Trovare, se esistono, le regole che producono Y {S, A} {B} {S, C} {S, A}
– Cono: S and A {B} {A, C} {A, C} {B} {A, C}
S AB | BC
– X2 , 4 = {S, A} A BA | a b a a b a
B CC | b
C AB | a
08/15/20 13 08/15/20 14
• X3 ,1 = (X1 , 1 , X2 , 2) , (X2 , 1 , X1 , 3)
• {B}{B} U {S, A}{A, C}= {BB, SA, SC, AA, AC} = Y
• Steps: Ø
– Trovare, se esistono, le regole che producono Y {S, A} {B} {S, C} {S, A}
– Nessuna {B} {A, C} {A, C} {B} {A, C}
S AB | BC
– X3 , 1 = Ø A BA | a b a a b a
CC | b
– Nessun elemento in questo insieme BC AB | a
08/15/20 15 08/15/20 16
• X3 , 2 = (X1 , 2 , X2 , 3) , (X2 , 2 , X1 , 3)
• {A, C}{S, C} U {B}{B}= {AS, AC, CS, CC, BB} = Y
• Step: Ø {B}
– Trovare, se esistono, le regole che producono Y {S, A} {B} {S, C} {S, A}
– una: B {B} {A, C} {A, C} {B} {A, C}
S AB | BC
– X2 , 4 = {B} A BA | a b a a b a
B CC | b
C AB | a
08/15/20 17 08/15/20 18
• X3 , 3 = (X1 , 3 , X2 , 4) , (X2 , 3 , X1 , 5)
• {A,C}{S,A} U {S,C}{A,C}
= {AS, AA, CS, CA, SA, SC, CA, CC} = Y Ø {B} {B}
• Step: {S, A} {B} {S, C} {S, A}
– Trovare, se esistono, le regole che producono Y {B} {A, C} {A, C} {B} {A, C}
– una: B b a a b a
S AB | BC
– X3 , 5 = {B} A BA | a
B CC | b
C AB | a
08/15/20 19 08/15/20 20
• X4 , 1 = (X1 , 1 , X3 , 2) , (X2 , 1 , X2 , 3) • X4 , 2 = (X1 , 2 , X3 , 3) , (X2 , 2 , X2 , 4)
• (X3, 1 , X1 , 4) • (X3, 2 , X1 , 5)
• Step: • Step:
– Trovare, se esistono, le regole che producono Y – Trovare, se esistono, le regole che producono Y
– una: B – una: B
– X4 , 1 = {?} S AB | BC – X4 , 1 = {?} S AB | BC
A BA | a A BA | a
B CC | b B CC | b
C AB | a C AB | a
08/15/20 21 08/15/20 22
08/15/20 25 08/15/20 26
08/15/20 27 08/15/20 28
• let the input be a string L consisting of n characters: a1 ... an.
• let the grammar contain r nonterminal symbols R1 ... Rr , with start symbol
R1 .
• let P[n,n,r] be an array of booleans. Initialize all elements of P to false. {S, A, C} X5, 1
• for each s = 1 to n
• for each unit production Rv -> as
Ø {S, A, C}
• set P[1,s,v] = true ; Generata la prima riga- Ø {B} {B}
• for each L = 2 to n
{S, A} {B} {S, C} {S, A}
• for each s = 1 to n-L+1
• for each p = 1 to L-1 {B} {A, C} {A, C} {B} {A, C}
• for each production Ra -> Rb Rc
b a a b a
• if P[p,s,b] and P[L-p,s+p,c] then set P[L,s,a] = true
08/15/20 29 08/15/20 30
for each L = 2 to n
for each s = 1 to n-L+1
for each p = 1 to L-1
for each production Ra -> Rb Rc
if P[p,s,b] and P[L-p,s+p,c] then set P[L,s,a] = true
(5)n-
X5, 1 X5, 1
L+1=s
(4)n- X4, 1 X4, 2
X4, 1 X4, 2
L+1=s X3, 1 X3, 2 X3, 3 L=3, s=1
(3)n-L+1 X2, 1 X2, 2 X2, 3 X2, 4
X3, 1 X3, 2 X3, 3
=s
X1, 1 X1, 2 X1, 3 X1, 4 X1, 5
(2)n-
X2, 1 X2, 2 X2, 3 X2, 4
L+1=s w1 w2 w3 w4 w5
X1, 1 X1, 2 X1, 3 X1, 4 X1, 5 Tavola per una stringa ‘w’ che ha lunghezza 5
08/15/20 w1 w2 w3 w4 w5 31 08/15/20 32
for each L = 2 to n for each L = 2 to n
for each s = 1 to n-L+1 for each s = 1 to n-L+1
for each p = 1 to L-1 for each p = 1 to L-1
for each production Ra -> Rb Rc for each production Ra -> Rb Rc
if P[p,s,b] and P[L-p,s+p,c] then set P[L,s,a] = true if P[p,s,b] and P[L-p,s+p,c] then set P[L,s,a] = true
X5, 1
X5, 1 X4, 1 X4, 2
X4, 1 X4, 2 L=4, s=2 X3, 1 X3, 2 X3, 3
X3, 1 X3, 2 X3, 3 X2, 1 X2, 2 X2, 3 X2, 4
X2, 1 X2, 2 X2, 3 X2, 4 X1, 1 X1, 2 X1, 3 X1, 4 X1, 5
X1, 1 X1, 2 X1, 3 X1, 4 X1, 5
w1 w2 w3 w4 w5
w1 w2 w3 w4 w5
Tavola per una stringa ‘w’ che ha lunghezza 5
Tavola per una stringa ‘w’ che ha lunghezza 5
08/15/20 33 08/15/20 34
Un algoritmo di forza bruta per testare se un
grafo G contiene una cricca con k vertici, e per
trovare qualsiasi cricca di questo tipo che esso
contiene, deve esaminare ciascun sottografo
con almeno k vertici e controllare per vedere
se forma una cricca. Questo algoritmo impiega Altre modelli di Computazione
il tempo O(nk k2): ci sono O(nk) sottografi da
controllare, ciascuno dei quali ha O(k2) spigoli
la cui presenza in G deve essere controllata.
Pertanto, il problema può essere risolto in
tempo polinomiale ogni qual volta k sia una
costante fissa. Quando k fa parte dell'entrata
del problema, tuttavia, il tempo è
esponenziale.[6]
15/08/2020 2
Church’s Thesis:
modelli di Computazione
15/08/2020 3 15/08/2020 4
Church’s e Turing’s Thesis sono simili
Funzioni ricorsive
esempio:
Church-Turing Thesis
f ( n) n 2 1
Domain Range
3 f (3) 10 10
15/08/2020 5 15/08/2020 6
Successor function: s ( x) x 1
We need a set of basic functions
p2 ( x1, x2 ) x2
15/08/2020 7 15/08/2020 8
Costruire funzioni più complicate : Ogni funzione costruita a partire dalle
Funzioni di base e chiuse rispetto composizione
Composizione: f ( x, y ) h( g1( x, y ), g 2 ( x, y )) e ricorsione è chiamata:
Primitive Recursive Function
Ricorsione primitiva:
f ( x,0) g1( x)
f ( x, y 1) h( g 2 ( x, y ), f ( x, y ))
15/08/2020 9 15/08/2020 10
(successor function)
15/08/2020 11 15/08/2020 12
Primitive Recursive Function: Teorema:
mult ( x, y ) l’insieme delle funzioni primitive recursive
è countable
15/08/2020 13 15/08/2020 14
Teorema
vi è una funzione che non
è primitiva ricorsiva Definiamo la funzione g (i ) fi (i ) 1
15/08/2020 15 15/08/2020
Fine Dimostrazione 16
Una funzione specifica che non è Recursive Functions
Recursive Primitive :
y ( g ( x, y )) smallest y such that g ( x, y ) 0
Ackermann’s function:
A(0, y ) y 1
A( x,0) A( x 1,1) Accerman’s function è
A( x, y 1) A( x 1, A( x, y )) Recursive Function
Post Systems
Recursive Functions • Axioms
• Productions
15/08/2020 19 15/08/2020 20
esempio: Unary Addition Una produzione:
V1 V2 V3 V11 V2 V31
Assioma: 1 1 11
1 1 11 11 1 111 11 11 1111
Produzioni:
V1 V2 V3 V11 V2 V31
V1 V2 V3 V1 V21 V31 V1 V2 V3 V1 V21 V31
15/08/2020 21 15/08/2020 22
15/08/2020 23 15/08/2020 24
Matrix Grammars
Rewriting Systems Esempio:
They convert one stringa to another P1 : S S1S2
P2 : S1 aS1, S2 bS2c
• Matrix Grammars
P3 : S1 , S2
• Markov Algorithms
Derivazioni:
• Lindenmayer-Systems
S S1S 2 aS1bS2c aaS1bbS2cc aabbcc
Un insieme di produzioni sono
Very similar to unrestricted grammars
applicate in parallelo
15/08/2020 25 15/08/2020 26
Markov Algorithms
P1 : S S1S2 Grammatiche che producono
P2 : S1 aS1, S2 bS2c
P3 : S1 , S 2
Esempio: ab S
aSb S
L {a nb nc n : n 0}
S .
Teorema: Derivation:
A language is recursively enumerable
if and only if aaabbb aaSbb aSb S
a Matrix grammar generates it
15/08/2020 27 15/08/2020 28
*
In general: L {w : w }
ab S
aSb S
S .
Teorema:
15/08/2020 29 15/08/2020 30
Esempio: a aa
Extended Lindenmayer-Systems: ( x, a, y ) u
context
Derivation: a aa aaaa aaaaaaaa
Teorema:
A language is recursively enumerable
2n if and only if an
L {a : n 0}
Extended Lindenmayer-System generates it
15/08/2020 31 15/08/2020 32
Considera una Turing Machine deterministica
M che decide un linguaggio L
Per ogni stringa w la computazione di M
Complessità temporale termina usando una quantità finita
di transizioni
Iniziale Accetta
stato o rifiuta w
15/08/20 1 15/08/20 2
15/08/20 3 15/08/20 4
Classe Complessità temporale : TIME (T (n ))
L1 L2
L3
15/08/20 5 15/08/20 6
{b n : n è pari}
L1 {a n b : n 0 }
{b n : n 3k }
15/08/20 7 15/08/20 8
Esempi nella classe
TIME (n 2 )
{a n b n : n 0 }
{ww R : w {a , b }}
{ww : w {a , b }}
15/08/20 9 15/08/20 10
15/08/20 11 15/08/20 12
architetture
chiaramente: TIME (n k 1 ) TIME (n k )
Multitape = singolo tape in
tempo quadratico
TIME (n k 1 )
Anche sul sipster
TIME (n k )
15/08/20 13 15/08/20 14
Representa: CYK-algorithm
•Problemi “trattabili”
15/08/20 15 15/08/20 16
Dato un grafo e due nodi: esiste Dato un grafo e due nodi: esiste
un cammino da un nodo all’altro? un cammino da un nodo all’altro?
s t
Step 1 : 1
Step 4: 1
Step 2,3 : m (numero dei nodi)
15/08/20 17 15/08/20 18
15/08/20 19 15/08/20 20
uno Problema del Cammino
Problema: Cammino Hamiltonian Hamiltonian
un cammino in un grafo
(orientato o non orientato) s t
è detto hamiltoniano se
esso tocca tutti i vertici
del grafo
domanda: vi è un Cammino Hamiltoniano
una e una sola volta.
da s a t?
tocca tutti i vertici del grafo
una e una sola volta.
15/08/20 21 15/08/20 22
15/08/20 27 15/08/20 28
Il problema della cricca
Tutte le permutazioni di 5 elementi
e verificare che ogni elemento è
connesso con tutti gli altri.
5! X 5!
Per precisione 5!x(5-1)x(4-1)…x1
15/08/20 29 15/08/20 30
4 1 2 4 1 2
2 2
6 6
10 10
8 8
3 3
Esempio: ( x1 x2 ) ( x1 x3 ) Esempio: ( x1 x2 ) x1 x2
Non soddisfacibile
soddisfacibile: x1 0, x2 1, x3 1 ( x1 x2 ) x1
soddisfacibile
( x1 x2 ) ( x1 x3 ) 1
15/08/20 35 15/08/20 36
Non-determinismo: prima definizione
L {w : w soddisfacibile}
La classe dei linguaggi: NTIME (T (n ))
k
L TIME (2 n ) Turing Machine Non-Deterministica:
i rami di computazione sono limitati
Algoritmo: da un T(n)
ricerca , in modo esaustivo,
su tutti i possibili valori delle variabili Linguaggi decidibili da una mdTuring
Tavole di verità, n variabili , 2 ^ n non deterministica in tempo O (T (n ))
15/08/20 37 15/08/20 38
15/08/20 39 15/08/20 40
Problema del Cammino Problema del Cammino Esempio
Hamiltonian Hamiltoniano Stringa giusta che ci
dà il cammino.
s t
Esempio
due
.
problema della cricca
dato un grafo e dato un k
problema della cricca, dato un k
trovare un insieme di k elementi dove
trovare un insieme di k nodi dove
ciascun elemento è connesso con tutti
ciascun elemento è connesso con tutti
gli altri. Stringa giusta che ci dà la
gli altri.
cricca.
il Problema della soddisfacibilità
t1 t2 t3 tk clausole
ti x1 x2 x3 x p
Variabili il Problema della soddisfacibilità
L {ww}
L NP
NTIME (T (n))
Tempo necessario per n variabili:
La classe NP osservazione:
Non-Deterministic Polynomial time
NP NTIME (n k )
P NP
Per ogni k
15/08/20 55 15/08/20 56
NP-Completezza
Problema aperto: P NP ?
Un problema è NP-complete se:
Osservazione: Osservazione :
15/08/20 59 15/08/20 60
Teorema diCook’: Altri problemi NP-Complete :
Dimostrazione:
•Hamiltonian Path
Convertire una Non-Deterministic Turing
Machine Tutti questi problemi si possono ridurre
In una espressione booleana al problema della soddisfacibilità
in (congiuntiva) conjunctive normal form
15/08/20 61 15/08/20 62
Osservazione:
tempo complessità:
sarebbe molto strano che NP-complete Il numero di passi (step)
problemi sono in P durante una computazione
poly ( k )
TIME (2 2 )
algoritmi
Tempo Polinomiale Non-Deterministico
L NTIME (n k )
15/08/20 67
La classe NP
Non-Deterministic Polynomial time
NP
Per ogni k
NP NTIME (n k )
Linguaggi NP-completi
La classe P
Deterministic Polynomial time
Per ogni k
P TIME (n k )
15/08/20 1 15/08/20 2
Sia x elemento di A
Un linguaggio A è riducibile in tempo
1.Calcola f(x)
polinomiale a un linguaggio B , A≤B, se esiste 2.Calcola M(f(x))
una funzione polinomiale f tale che
per ogni x : x∈A implica f(x) ∈ B
15/08/20 3 15/08/20 4
NP-Completezza
A<=B
Un problema A è NP-completo se:
Pari<=Dispari
Dispari<=Pari
•A è in NP
X è elemento di Pari
(div 2 (resto=0))
•Ogni problema NP è riducibile
Dispari
X è elemento di dispari ad A
Non (div 2) (in tempo polinomiale)
15/08/20 5 15/08/20 6
Osservazione:
NP
completi Se possiamo risolvere un problema
F NP-complete
polinomiali in tempo Deterministico Polinomiale
allora :
NP P NP
15/08/20 7 15/08/20 8
Osservazione :
Se proviamo che Un Linguaggio L è NP-completo se:
non possiamo risolvere un problema
NP-complete • L è in NP, e
in tempo Deterministico Polinomiale
Allora : • Ogni Linguaggio in NP può essere
ridotto a L in Tempo Polinomiale
P NP
15/08/20 9 15/08/20 10
Decidibili
Formule SAT: literal
NP
( x1 x2 x3 ) ( x3 x5 x6 ) ( x3 x6 x4 ) ( x4 x5 x6 )
P NP-complete
?
L: letterale o letterale negato
O: Gruppi di L collegati da ∨
Sat: Gruppi di O collegati da ∧
15/08/20 11 15/08/20 12
Un Linguaggio NP-completo Sia L NP , un arbitrario linguaggio
Teorema di Cook-Levin : Definiamo una riduzione Polinomiale of L to
Linguaggio SAT (satisfiability problem) SAT
è NP-complete Sia M Macchina di Turing Nondeterministica
Dim: che decide L in Tempo polinomiale
Part1: SAT è in NP
(gia provato) Per ogni stringa w costruiamo in Tempo
Part2: ridurre tutti i Linguaggi NP Polinomiale una espressione Booleana (M ,w )
al problema SAT tale che: w L ( M , w) è soddisfacibile
in Tempo Polinomiale
15/08/20 13 15/08/20 14
accettante Profon
Prof dità
| w | n
ondità
nk
…
…
…
…
nk
…
…
accept accept
…
…
reject accept reject accept
qm 2n k
nk x : 1 l qa l1 n k
qa
Massima area di calcolo sul nastro
accettato Stato accettazione
k
w 1 2 n durante n steps (passi) temporali
15/08/20 17 15/08/20 18
{# } {1 , , r } {q1 , , q t }
Configurazione accettante
x: # 1 2 3 qa l1 nk # Dimensione finita (costante)
Righe identiche
1 2 3 nk #
nk : # qa l1
nk nk
2n k 3
15/08/20 19 15/08/20 20
Per ogni cella con posizione i, j Esempio:
nk 3
E per ogni simbolo nell’alfabeto
1: # q0 1 2 n #
del tableau s C 2: # 1 qi 2 n #
Definiamo la variabile xi , j ,s
15/08/20 21 15/08/20 22
15/08/20 25 15/08/20 26
Stati di accettazione
2n k 3 O (n k ) Uno stato di accettazione deve apparire
Da qualche parte nel tableau
15/08/20 27 15/08/20 28
Size of accept : move Ci rende sicuri che il tableau
ci da una sequenza valida di
configurazioni
accept xi , j ,q
all i , j
all q F
15/08/20 29 15/08/20 30
Tableau
Possibili windows Legali
a q1 b a q1 b
a b, R q2 a c
Per ogni Window a a q2
i,j,
elemento
a q1 b
centrale q2 a c
superiore q1 b c , L q2 a a q1 a b a
2x6 area di celle a a b a b q2
b a,R
15/08/20 31 15/08/20 32
Possibili window illegali
Altre finestre legali
# b a
a b a a q1 b
# b a
a b, R a a a q1 a a
b b b
La b in a?
q1 b c , L q2
c b b
b q1 b
q2 b q2
b a,R
Due stati
15/08/20 33 15/08/20 34
15/08/20 35 15/08/20 36
Dimensione di move : Dimensione di (M ,w ) :
Dimensione di una formula per una window (M ,w ) cell start accept move
Legale in una cella i,j: 6
O (n 2k ) O (n k ) O (n 2k
) O (n 2k
)
x Numero di possibili legal window
in una cella i,j: al max |C |6 O (n 2k )
Costruita in Tempo O (n 2k )
x Numero di possibili celle: (2n 3)n
k k
Quindi Polinomiale in n
6
6 | C | (2n 3)n O (n
k k 2k
)
15/08/20 37 15/08/20 38
poichè,
w L (M ,w ) is satisfiable
(M ,w ) cell start accept move e
(M ,w ) è costruita
Abbiamo che:
in Tempo Polinomiale
w L (M ,w ) is satisfiable
END OF Dim
15/08/20 39 15/08/20 40
Osservazione 1: leggi: Distributività
La (M ,w ) formula può essere convertita
in CNF (conjunctive normal form) formula P (Q R ) (P Q ) (P R )
in Tempo Polinomiale
Osservazione 2:
La (M ,w ) formula può essere 3CNF formula: literal
Convertita in una formula 3CNF ( x1 x2 x3 ) ( x3 x5 x6 ) ( x3 x6 x4 ) ( x4 x5 x6 )
in Tempo Polinomiale
clause
Ogni clausola ha tre letterali
a1 a2 al
Conv Linguaggio:
Nuove z 15/08/20 44
15/08/20 43
Esempio di riduzione Tempo-Polinomiale:
CNF-SAT e
Ridurremo il problema
3CNF-SAT sono
Linguaggi NP-completi 3CNF-satisfiability
al
(sappiamo che sono NP Linguaggi) problema CLIQUE
15/08/20 45 15/08/20 46
15/08/20 47 15/08/20 48
Una 5-cricca (Clique) nel grafo G Teorema: 3CNF-SAT è riducibile
In Tempo Polinomiale
a CLIQUE
15/08/20 49 15/08/20 50
Clause 1 x2
Linguaggio: x2
15/08/20 51 15/08/20 52
(x 1 x 2 x 4 ) ( x 1 x 2 x 4 ) (x 1 x 2 x 3 ) ( x 2 x 3 x 4 ) (x 1 x 2 x 4 ) (x 1 x 2 x 4 ) (x 1 x 2 x 3 ) (x 2 x 3 x 4 )
x1 x2 x4 x1 x2 x4
x1 x1 x1 x1
x2 x2 x2 x2
x4 x3 x4 x3
x2 x3 x4 x2 x3 x4
15/08/20 53 15/08/20 54
Teorema:
If: a. Linguaggio A is NP-complete
( x 1 x 2 x 4 ) (x 1 x 2 x 4 ) ( x 1 x 2 x 3 ) ( x 2 x 3 x 4 ) 1
x1 1 b. Linguaggio B is in NP
x2 0
x3 0
x1 x2 x4
c. A è riducibile Tempo Polinomiale a B
x1 x1
x4 1
Then: B is NP-complete
x2 x2
Dim:
x4 x3
Ogni linguaggio L in NP
x2
È riducibile in Tempo Polinomiale a A
x3 x4
15/08/2020 1
15/08/2020 4
Esempio: L1 {a n b : n 0} Altri esempi nella stessa classe
Space(n)
Può essere deciso in spazio O (n )
L1 {a n b : n 0 }
{ab n aba : n , k 0}
{b n : n is even }
{b n : n 3k }
15/08/2020 5 15/08/2020 6
{ww R : w {a , b }}
Macchine calcolabili NSpace(O (n k ))
{ww : w {a , b }} in spazio Polinomiale
Non deterministico. costante k 0
15/08/2020 7 15/08/2020 8
La Classi di Complessità spaziale
chiaramente: Space(n k 1 ) Space(n k ) PSpace PSpace(n k )
k 0
NSpace(n k 1 k
) NSpace(n ) Rapresenta:
•Algoritmi deterministici che usano spazio polinomiale
•Problemi “trattabili nello spazio”
NPSpace NPSpace(n k ) NP
Rapresenta: k 0
15/08/2020 9 15/08/2020 10
tempo complessità:
15/08/2020 11
teorema di Savitch dimostra che nello spazio la
complessità di questa simulazione,
non determinismo -> determinismo,
aumenta in modo al più quadratico.
C_2
input c1,c2 e t, dove t≥0.
c1,c2 sono configurazioni che usano al più
uno spazio f(n) (se lo spazio occupato è CANYELD ha come input anche
minore possiamo raggiungere spazio f(n) tutti gli stati e i collegamenti
aggiungendo caratteri blank); tra di loro ovvero la delta
sia t una potenza del 2 (t=2p per qualche p maggiore o uguale a 0), possibile?.
Ritorniamo per un momento sull’affermazione
Analizziamo la complessità di spazio di M.
M = “Su input w: L’output è il risultato di
CANYIELD(cstart, caccept, 2d*f(n))”
• Ogni volta che CANYIELD si autochiama (ricorsione) memorizza
lo stato corrente (i valori c1,c2 e t) così da poter essere M deve sapere il valore di f(n) quando invoca
richiamati (usati) al ritorno dalla ricorsione. CANYIELD, questo lo dobbiamo calcolare. Quindi
• Ciascun livello della ricorsione quindi usa spazio O(f(n)) la complessità aumenta.
aggiuntivo.
• Il numero delle chiamate ricorsive è invece pari a d*f(n).
Un modo semplice per risolvere questo problema
Dunque, lo spazio totale usato da N: d*f(n)*O(f(n))=O(f2(n))
è quello di modificare M (chiamata M’) in modo
che provi per f(n) = 1,2,3, … Per ogni valore f(n)
=i
,
0 s s n s … fo s s n s …
1 n n s n … f1 n n s n …
2 s n s s …. f2 s n s s …
3 s s s n … f3 s s s n …
………………………………………………………….. D ….
fC n s n s
Letta in questo modo per esempio
Crit
(2, f 3)=s f C (C )
Prendiamo la diagonale
f o (0), f 1(1), f 2 (2), f 3 (3).
15/08/20 1 15/08/20 2
il Tape
...... ......
No limiti – lunghezza potenzialmente infinita
...... ...... Read-Write head
1. legge un simbolo
2. scrive un simbolo
Le testa si muove Left or Right 3. si muove Left or Right
15/08/20 3 15/08/20 4
esempio:
Time 1
Time 0
...... a b k c ......
...... a b a c ......
Time 1 Time 2
...... ...... ...... a f k c ......
a b k c
1. Reads a 1. Reads b
2. Writes k 2. Writes f
3. Moves Left 3. Moves Right
15/08/20 5 15/08/20 6
Read Write
stringa di input Move Left
Blank symbol
...... a b a c ......
q1 a b, L q2
head
Move Right
Head parte dalla posizione più a sinistra
della stringa di input q1 a b, R q2
15/08/20 7 15/08/20 8
esempio:
Time 1
Time 1 ...... ......
a b a c
...... a b a c ......
q1
Sei in q_1 q1
leggi a , Time 2
stato corrente
cambia a in b ...... ......
e vai a right a b b c
q2
q1 a b, R q2
q1 a b, R q2
15/08/20 9 15/08/20 10
esempio: esempio:
Time 1 Time 1
...... a b a c ...... ...... a b a c ......
q1 q1
Time 2 Time 2
...... a b b c ...... ...... a b b c g ......
q2 q2
q1 a b, L q2 g, R
q1 q2
15/08/20 11 15/08/20 12
Determinismo Funzione di Transizione Parziale
macchine di Turing sono deterministiche esempio:
...... a b a c ......
permesso Non permesso
a b, R q2 a b, R q2 q1
q1 q1
a b, R q2 permesso:
q3 a d, L q3
b d, L Nessuna transizione
q1
per simbolo input c
nessuna transizione lambda è permessa b d, L q3
15/08/20 13 15/08/20 14
...... a b a c ......
La macchina si ferma nello stato
in cui si trova
q1
se non vi è nessuna transizione
da eseguire
q1 Nessuna transizione da q1
HALT!!!
15/08/20 15 15/08/20 16
Halt esempio 2: Stati di accettazione
q1 q2 permesso
...... a b a c ......
q1
q1 q2 Non permesso
a b, R q2
Nessuna transizione
•Stati di accettazione non hanno transizioni
q1 possibile da q1
in uscita
b d, L q3 sul simbolo c
•La macchina si ferma e accetta.
15/08/20 HALT!!!17 15/08/20 18
Accettazione
Osservazione:
se macchina si ferma Nell’accettare una stringa di input,
Accettare stringa
in uno stato di non è necessario esaminare tutti
In Input
accettazione i simboli nella stringa.
se macchina si ferma
in uno stato di
RIGETTARE stringa NON- accettazione o
In Input
se la macchina entra
in un infinite loop
15/08/20 19 15/08/20 20
La gerarchia dei linguaggi
linguaggi accettati da una
macchina di Turing
a nb n c n ? ww ? a nb n c n ww
macchinaTuring esempio
Time 0 a a a
Input alphabet {a , b } q0
Accetta il linguaggio: a*
a a, R a a, R
, L , L
q0 q1 q0 q1
15/08/20 23 15/08/20 24
Time 1 a a a Time 2 a a a
q0 q0
a a, R a a, R
, L , L
q0 q1 q0 q1
15/08/20 25 15/08/20 26
Time 3 a a a Time 4 a a a
q0 q1
, L , L
q0 q1 q0 q1
15/08/20 27 15/08/20 28
Rejection esempio
Time 0 a b a Time 1 a b a
q0 q0
Nessuna transizione
a a, R a a, R Halt & Reject
, L , L
q0 q1 q0 q1
15/08/20 29 15/08/20 30
Accetta il linguaggio: a*
Halt & accettazione
q0
q0
15/08/20 31 15/08/20 32
esempio Infinito Loop Time 0 a b a
una macchina di Turing
q0
Per il linguaggio a * b( a b) *
b b, L b b, L
a a, R a a, R
, L , L
q0 q1 q0 q1
15/08/20 33 15/08/20 34
Time 1 a b a Time 2 a b a
q0 q0
b b, L b b, L
a a, R a a, R
, L , L
q0 q1 q0 q1
15/08/20 35 15/08/20 36
Time 2 a b a
A causa dell’ infinite loop:
q0
a b a
Infinite loop
Time 3 •lo stato accettazione non può
q0 •essere raggiunto
Time 4 a b a
•La macchina non si ferma
q0
•La stringa di input è “rejected-rigettata”
Time 5 a b a
q0
15/08/20 37 15/08/20 38
15/08/20 39 15/08/20 40
Turing macchina esempio
Time 0 a a b b
Machina di Turing per il linguaggio {a nb n }
n 1 q0
q4 y y, R y y, L q4 y y, R y y, L
y y, R a a, R a a, L y y, R a a, R a a, L
, L , L
y y, R a x, R b y, L y y, R a x, R b y, L
q3 q0 q1 q2 q3 q0 q1 q2
x x, R x x, R
15/08/20 41 15/08/20 42
Time 1 x a b b Time 2 x a b b
q1 q1
q4 y y, R y y, L q4 y y, R y y, L
y y, R a a, R a a, L y y, R a a, R a a, L
, L , L
y y, R a x, R b y, L y y, R a x, R b y, L
q3 q0 q1 q2 q3 q0 q1 q2
x x, R x x, R
15/08/20 43 15/08/20 44
Time 3 x a y b Time 4 x a y b
q2 q2
q4 y y, R y y, L q4 y y, R y y, L
y y, R a a, R a a, L y y, R a a, R a a, L
, L , L
y y, R a x, R b y, L y y, R a x, R b y, L
q3 q0 q1 q2 q3 q0 q1 q2
x x, R x x, R
15/08/20 45 15/08/20 46
Time 5 x a y b Time 6 x x y b
q0 q1
q4 y y, R y y, L q4 y y, R y y, L
y y, R a a, R a a, L y y, R a a, R a a, L
, L , L
y y, R a x, R b y, L y y, R a x, R b y, L
q3 q0 q1 q2 q3 q0 q1 q2
x x, R x x, R
15/08/20 47 15/08/20 48
Time 7 x x y b Time 8 x x y y
q1 q2
q4 y y, R y y, L q4 y y, R y y, L
y y, R a a, R a a, L y y, R a a, R a a, L
, L , L
y y, R a x, R b y, L y y, R a x, R b y, L
q3 q0 q1 q2 q3 q0 q1 q2
x x, R x x, R
15/08/20 49 15/08/20 50
Time 9 x x y y Time 10 x x y y
q2 q0
q4 y y, R y y, L q4 y y, R y y, L
y y, R a a, R a a, L y y, R a a, R a a, L
, L , L
y y, R a x, R b y, L y y, R a x, R b y, L
q3 q0 q1 q2 q3 q0 q1 q2
x x, R x x, R
15/08/20 51 15/08/20 52
Time 11 x x y y Time 12 x x y y
q3 q3
q4 y y, R y y, L q4 y y, R y y, L
y y, R a a, R a a, L y y, R a a, R a a, L
, L , L
y y, R a x, R b y, L y y, R a x, R b y, L
q3 q0 q1 q2 q3 q0 q1 q2
x x, R x x, R
15/08/20 53 15/08/20 54
Time 13 x x y y Osservazione:
q4
Se modifichiamo
Halt & accettazione La macchina per il linguaggio {a nb n }
q4 y y, R y y, L
y y, R a a, R a a, L
, L
Facilmente possiamo costruire
y y, R a x, R n n n
b y, L Una macchina per il linguaggio {a b c }
q3 q0 q1 q2
x x, R
15/08/20 55 15/08/20 56
Funzione Transizione
Definizione formale
q1 a b, R q2
di
macchina di turing
(q1, a ) (q2 , b, R)
15/08/20 57 15/08/20 58
Turing macchina:
Funzione Transizione
Input Tape
alfabeto alfabeto
stati
q1 c d, L q2
M (Q, , , , q0 , , F )
15/08/20 61 15/08/20 62
q2 q0 q2 q0
Time 6 Time 7
x x y b x x y b
Una mossa q2 xayb x q0 ayb
q1 q1
(dà)
Un calcolo
q2 xayb x q0 ayb xx q1 yb xxy q1 b
15/08/20 63 15/08/20 64
configurazione Iniziale : q0 w
q2 xayb x q0 ayb xx q1 yb xxy q1 b
stringa di input
w
Notazione equivalente: q2 xayb xxy q1 b
a a b b
q0
15/08/20 65 15/08/20 66
15/08/20 67 15/08/20 68
Alfabeto L definito a partire da
quell’alfabeto
L turing riconoscibile
w elemento A* M(w) raggiunge Calcolare funzioni con
lo stato finale se w appartiene macchine di Turing
ad L
non lo raggiunge ? Altrimenti
Non raggiunge uno stato finale.
Ma questo non vuol dire che la
macchina si ferma
15/08/20 69 15/08/20 70
Una funzione f (w) ha: Una funzione può avere molti parametri:
f ( x, y ) x y
f (w)
w D f ( w) S
15/08/20 71 15/08/20 72
Definizione:
dominio degli interi
Una funzione f è calcabile se
Decimali: 5 vi è una macchina di Turing M tale che:
Binari: 101
0->1 Configurazione iniziale Configurazione Finale
1->11 w f (w)
Unario: 11111
n-> n+1 1
q0 qf
Useremo rapresentazione unaria : stato iniziale Stato di accettazione
Più facile da usare con le macchine di Turing Per tutti w D dominio
15/08/20 73 15/08/20 74
x, y Sono interi
q0 w q f f ( w)
macchina Turing :
configurazione configurazione stringa di input: x0 y unario
iniziale Finale
Output stringa: xy 0 unario
Per tuttew D dominio
15/08/20 75 15/08/20 76
x y x y
Start 1 1 1 0 1 1 Start 1 1 1 0 1 1
q0 q0 stato iniziale
iniziale stato
x y
il 0 è il delimitatore che
Fine 1 1 1 1 0
Separa I due numeri
q f stato finale
15/08/20 77 15/08/20 78
macchina Turing f ( x, y ) x y
lo 0 ci può aiutare se usiamo
per la funzione
il risultato per un altra operazione
Ricordarsi di
eliminare due 1
alla fine
1 1, R 1 1, R 1 1, L
x y
q0 0 1, R q1 , L q2 1 0, L q3
Fine 1 1 1 1 0
, R
q f stato finale q4
15/08/20 79 15/08/20 80
esempio di esecuzione: Time 0
Consideriamo i numeri naturali x y
senza lo zero x 11 (=2)
1 1 0 1 1
Quindi basta avere n= 1alla n
y 11 (=2) q0
Final Result
x y
1 1 1 1 0
q4
15/08/20 81 15/08/20 82
Time 0 1 1 0 1 1 Time 1 1 1 0 1 1
q0 q0
1 1, R 1 1, R 1 1, L 1 1, R 1 1, R 1 1, L
q0 0 1, R q1 , L q2 1 0, L q3 q0 0 1, R q1 , L q2 1 0, L q3
, R , R
q4 q4
15/08/20 83 15/08/20 84
Time 2 1 1 0 1 1 Time 3 1 1 1 1 1
q0 q1
1 1, R 1 1, R 1 1, L 1 1, R 1 1, R 1 1, L
q0 0 1, R q1 , L q2 1 0, L q3 q0 0 1, R q1 , L q2 1 0, L q3
, R , R
q4 q4
15/08/20 85 15/08/20 86
Time 4 1 1 1 1 1 Time 5 1 1 1 1 1
q1 q1
1 1, R 1 1, R 1 1, L 1 1, R 1 1, R 1 1, L
q0 0 1, R q1 , L q2 1 0, L q3 q0 0 1, R q1 , L q2 1 0, L q3
, R , R
q4 q4
15/08/20 87 15/08/20 88
Time 6 1 1 1 1 1 Time 7 1 1 1 1 0
q2 q3
1 1, R 1 1, R 1 1, L 1 1, R 1 1, R 1 1, L
q0 0 1, R q1 , L q2 1 0, L q3 q0 0 1, R q1 , L q2 1 0, L q3
, R , R
q4 q4
15/08/20 89 15/08/20 90
Time 8 1 1 1 1 0 Time 9 1 1 1 1 0
q3 q3
1 1, R 1 1, R 1 1, L 1 1, R 1 1, R 1 1, L
q0 0 1, R q1 , L q2 1 0, L q3 q0 0 1, R q1 , L q2 1 0, L q3
, R , R
q4 q4
15/08/20 91 15/08/20 92
Time 10 1 1 1 1 0 Time 11 1 1 1 1 0
q3 q3
1 1, R 1 1, R 1 1, L 1 1, R 1 1, R 1 1, L
q0 0 1, R q1 , L q2 1 0, L q3 q0 0 1, R q1 , L q2 1 0, L q3
, R , R
q4 q4
15/08/20 93 15/08/20 94
Un altro esempio
Time 12 1 1 1 1 0 Che
La funzione raddoppia è calcolabile
q4 il numero
di 1
1 1, R 1 1, R 1 1, L
Macchina di Turing :
esempio
Turing macchina per Start Finish
f ( x) xx
1 1 1 1 1 1
q0 q3
1 $, R 1 1, L 1 1, R
1 $, R 1 1, L 1 1, R
q0 , L q1 $ 1, R q2
q0 , L q1 $ 1, R q2
, R 1, L , R 1, L
q3
q3
15/08/20 99 15/08/20 100
Copia a distanza di una stringa altro esempio
Es 1111 dà 111101111
1 if x y
La funzione f ( x, y )
È calcolabile 0 if x y
Input: x0 y
Output: 1 or 0
15/08/20 101 15/08/20 102
• Repeat
• If un 1 da x non è verificato
cancella tape, scrivi 1 ( x y)
else
15/08/20
cancella tape, scrivi 0 ( x y) 103 15/08/20 104
esempio: x y if x y
f ( x, y )
Block Diagram
0 if x y
x, y
Turing
input output Adder x y
macchina
x, y x y
Comparatore
x y Eraser 0
1 2
3 4
5 6
7 8
9 10
11 12
13 14
15 16
Una limitazione delle macchine di Turing
15/08/20 1 15/08/20 2
Attributi:
Input della Universal Turing Machine:
• macchina Riprogrammabile
• Simula ogni altra Macchina di Turing Descrizione delle transizioni di M
stringa di input di M
15/08/20 3 15/08/20 4
Tape 1 Tape 1
Tre nastri
Descrizione di M Descrizione di M
Universal
Tape 2
Turing Descriviamo le Turing machines M
Machine Come una stringa di simboli:
Contenuti del nastro di M
Tape 3
codifichiamo M Come una
stringa di simboli
Simboli: a b c d
codifica: 1 11 111 1111
codifica: 1 11 111 1111
Codifica dei movimenti della Head
Mossa: L R
codifica: 1 11
15/08/20 7 15/08/20 8
codifica delle transizione Codifica Turing Machine
Codifica binaria Consideriamo tutti gli stati e tutti i caratteri (perché? Si può fare
M diversamente?)
della macchina da simulare
Una lista
{(q,c, q_new, c_new, op) Per tutti gli stati q, Per tutti i caratteri
Tape 1 c}
Al primo posto
1 0 1 0 11 0 11 0 10011 0 1 10 111 0 111 0 1100
q_0 per tutti i caratteri
q_1 per tutti i caratteri
----
q_n per tutti i caratteri.
15/08/20 11 15/08/20 12
Carattere osservato terzo nastro,
Stato da applicare secondo nastro
In rosso i codici I=0
puntatore primo nastro su q_I
puntatore secondo nastro su carattere osservato C
QUI Guardo C e prendo la stringa che comincia co q_I,C
Primo nastro gli input: Macchina $ input Copio nel terzo nastro (q_I,C,q_new,c_new,op)
Copiamo Macchina secondo nastro , /* eseguire l’operazione*/
Copiamo input terzo nastro C diventa c-new nel secondo nastro
Eseguo op sul secondo nastro che sposta la testina
/*Ora cosa devo fare? Da q_I devo passare a q-new */
I=new
Andare su q_I nel primo nastro
/*Come farlo? Devo spostare, sul primo nastro fino a che non
trovo q_new*/
Andare Qui se q_I non è finale
15/08/20 13 15/08/20 14
15/08/20 15 15/08/20 16
Insiemi contabili
Linguaggio delle Turing Machines
Insieme infiniti sono:
…… }
15/08/20 17 15/08/20 18
Non funziona:
Non analizeremo mai 2 2 2
, , ,
Numeri con nominatore 2: 1 2 3
15/08/20 21 15/08/20 22
Approccio migliore
P_1 1 1 1 1 1 1 1 1
P_1(1 P_1(2) P_1(3)
1 2 3 4 1 2 3 4
)
2 2 2 P_2(1) 2 2 P_2(2) 2
P_2
1 2 3 1 2 3
3 3 P_3(1) 3 3
1 2 1 2
4 4
15/08/20
1 23 15/08/20
1 24
Oppure
1 1 1 1 1 1 1 1
1 2 3 4 1 2 3 4
2 2 2 2 2 2
1 2 3 1 2 3
3 3 3 3
1 2 1 2
4 4
15/08/20
1 25 15/08/20
1 26
1 1 2 1 2
Numeri razionali: , , , , ,
P_1(1) 1 2 1 3 2
P_1(2) P_2(1)
P_1(3) P_2(2) P_3(1)
P_1(4) P_2(3) P_3(2) P_4(1) Corrispondenza:
15/08/20 27 15/08/20 28
Definizione
un insieme è countable se esiste Sia S un insieme di stringhe (linguaggio)
un enumeration procedure
(enumeratore)
Un enumerator per S è una Turing Machine
che definisce la corrispondenza con i
che genera (scrive sul nastro)
numeri naturali
tutte le stringhe S una per una
e
Ogni stringa è generata in tempo finito
15/08/20 29 15/08/20 30
15/08/20 31 15/08/20 32
Esempio: L’insieme delle stringhe Enumeratore banale:
Mossa: L R separatore
codifica: 1 11
15/08/20 37 15/08/20 38
End of Proof
15/08/20 41 15/08/20 42
Tecnica: Teorema:
15/08/20 43 15/08/20 44
Proof: Gli elementi dell’insieme delle parti 2 S
hanno la forma:
Poichè S è enumerabile, possiamo scrivere
S {s1, s2 , s3 ,}
{s1, s3}
……
Assurdo: Sia l’insieme delle parti 2 S
enumerabile
15/08/20 45 15/08/20 46
{s2 , s 3 } 0 1 1 0
{s1, s 3 , s4 } 1 0 1 1
15/08/20 47 15/08/20 48
assumiamo (per assurdo) Insieme delle Supponiamo che la seguente sia
Che l’ Insieme delle parti 2 S Parti elementi
Codifica Binaria
è enumerabile
t1 1 0 0 0 0
allora: possiamo enumerare gli elementi
dell’ insieme delle parti t2 1 1 0 0 0
t3 0
2 S {t1, t2 , t3 ,} 1 1 0 1
t4 1 1 0 0 1
15/08/20 49 15/08/20
50
t1 1 0 0 0 0
Stringa binaria t 0011
t2 1 1 0 0 0 Corrisponde ad un
elemento dell’Insieme
t3 1 1 0 1 0 delle parti 2 S : t {s3 , s 4 , } 2S
t4 1 1 0 0 1
Contradizione!!!
15/08/20 53 15/08/20 54
S {a, b}* { , a, b, aa, ab, ba, bb, aaa, aab,} S {a, b}* { , a, b, aa, ab, ba, bb, aaa, aab,}
infinito e countable infinito e countable
15/08/20 55 15/08/20 56
Considera alfabeto : A {a, b}
Considera l’alfabeto : A {a, b}
countable
L’insieme delle stringhe: Turing machines: M1 M 2 M3
S A* {a, b}* { , a, b, aa, ab, ba, bb, aaa, aab,} accetta
infinito e countable
Linguaggi accettati da
Ricorda: L’insieme delle parti di S Turing Machines: L1 L2 L3
contiene tutti i linguaggi: countable
2 S {,{},{a},{a, b},{aa, b},...,{aa, ab, aab},}
uncountable
Denota: X {L1, L2 , L3 ,} Nota: X 2S
countable
15/08/20 57 15/08/20
S {a , b }
*
58
Linguaggi accettati da
Conclusione:
Turing machines: X countable
Esiste un linguaggio L non accettato
da nessuna Turing Machine:
Tutti i possibili linguaggi:
2 S uncountable
X 2S L 2S and L X
S
quindi: X 2 (linguaggio L non può essere descritto
da nessun algoritmo)
since X 2S , we have X 2S
15/08/20 59 15/08/20 60
Linguaggi Non Turing-Accettabili Nota che: X {L1, L2 , L3 ,}
L È un multi-set (elementi possono ripetersi)
Poichè un linguaggio può essere riconosciuto
da più di una Turing machine
Linguaggi
Turing-Accettabili
Anche se esaminiamo i doppioni il risultato
è di nuovo un insieme countable poichè ogni elemento
corrisponde a un intero positivo
15/08/20 61 15/08/20 62
Linear-Bounded Automa:
15/08/20 63 15/08/20 64
Linear Bounded Automa (LBA)
Definiamo i LBA come macchine
Input string non deterministiche
[ a b c d e ]
Working space
Limite a Limite a Problema aperto:
in tape
sinistra destra LBA NonDeterministici
hanno lo stesso potere dei
Tutta la computazione si svolge tra i due limiti LBA Deterministici ?
15/08/20 65 15/08/20 66
L {a nb n c n } L {a n!} produzioni
uv
15/08/20 69 15/08/20 70
Context-free
Regular
15/08/20 73 15/08/20 74
appartenenza
Domanda: dato un linguaggio regolare L
problemi decidibili e una stringa w
(decidibile?) Possiamo verificare se w L ?
per linguaggi regolari
Risposta: Prendiamo un DFA che L
accetta L
e verifichiamo se w è
accettato.
15/08/20 75 15/08/20 76
DFA Domanda: dato un linguaggio regolare L
w Come possiamo verificare
w L se L è vuoto: ( L ) ?
15/08/20 79 15/08/20 80
DFA
Domanda: dato linguaggi regolari L1 e L2
Come possiamo verificare che
L è infinito
L1 L2
15/08/20 81 15/08/20 82
( L1 L2 ) ( L1 L2 ) ( L1 L2 ) ( L1 L2 )
L1 L2 and L1 L2 L1 L2 or L1 L2
L1 L2 L L2 L1 L1 L1 L2 L2 L1
2
L1 L2 L2 L1 L1 L2 L2 L1
L1 L2 L1 L2
15/08/20 83 15/08/20 84
appartenenza:
15/08/20 85 15/08/20 86
Se L è generato da
Stati= non terminali, car =terminali
una grammatica senza restrizione
Q c:= Q ? c Q c= c Q
15/08/20 87 15/08/20 88
linguaggi decidibili
Ricordiamo che:
un linguaggio A è decidibile,
Problemi se vi è una Turing machine M (decisore)
indecidibili che accetta il linguaggio A e
(unsolvable problems) e si ferma su ogni stringa di input
Decision
Turing Machine M On Halt:
YES
Accept
Input
Decisore per
stringa NO
A Reject
15/08/20 1 15/08/20 2
linguaggi indecidibili
linguaggi indecidibili = linguaggi non decidibili
Non esiste un procedimento di decisione
(decisore):
Definizione
Non esiste una Turing Machine
Un problema computazionale è decidibile che accetta il linguaggio
se il corrispondente linguaggio è decidibile e prende una decisione (halts)
per ogni stringa di input.
(la macchina può prendere decisioni per qualche stringa
ma non per tutte)
15/08/20 3 15/08/20 4
Per un linguaggio indecidibile,
Definizione. Turing accettabile
Il corrispondente problema è
Abbiamo una Turing Machine (Algorithm) che
indecidibile (unsolvable):
1_ per ogni input abbiamo una risposta se la
stringa appartiene al linguaggio(yes)
Non esiste una Turing Machine (Algorithm) 2_ ma nulla possiamo dire se la stringa non
che per ogni input appartiene al linguaggio
dà una risposta
(yes (appartiene al linguaggio)
or no (non appartiene al linguaggio)
(chiaramente per alcuni input si)
15/08/20 5 15/08/20 6
Decidable
linguaggio corrispondente:
ATM { M , w : M è una Turing machine che
accetta la stringa w}
15/08/20 7 15/08/20 8
Teorema: ATM è indecidibile Supponiamo che ATM è decidibile
(The membership problem non è decidible)
15/08/20 9 15/08/20 10
Definiamo Diag
Diag accetta (yes) se H dice no; ovvero se M( w) =no Descrizione di Diag:
Diag rigetta (no) se dice si; ovvero se M( w) =s Diag accetta M se M rigetta M
H
Diag rigetta M se M accetta M
Diag:
M,w M, w
Decisore ATM
M YES no M Decisore
per YES M Rigetta M w
per ATM
w H NO yes H NO
w
M Accetta M w
15/08/20 11 15/08/20 12
ATM
M, w
Cosa accade?:
Decisore
M ATM YES M Rigetta M
w
per
Diag accetta Diag se Diag rigetta Diag (!!)
w H NO M Accetta M
w
Abbiamo mostrato:
Definizione di
Turing accettabile
ATM
M accetta D se M(D)
Decidable raggiunge uno stato finale.
15/08/20 15 15/08/20 16
ATM { M , w : M è una Turing machine che Halting Problem
accetta la stringa w} Input: •Turing Machine M
ATM è Turing-Acceptable (semidecidibile) •String w
15/08/20 21 15/08/20 22
H qaccept YES
H qacceptYES qa qb
Input string:
M,w q0 M,w q0 M halts on w?
M ferma su w ?
qreject NO
qreject NO
90 31 90 32
h' è la composizione di due macchine:
la prima con input codiceM fornisce codiceM b codiceM,
h'(codiceM) =1 se M (codiceM ) termina
la seconda è la macchina h che calcola il predicato della
terminazione. =0 se M( codiceM ) non termina
In altre parole h' è la macchina che verifica se una MT
termina quando le viene fornito in input il proprio codice. h"(codiceM) = 0 se h'(codiceM) = 0 (se M( codiceM ) non termina)
= indefinito altrimenti (se M (codiceM ) termina)
Possiamo ora costruire una nuova macchina h" che prende in )
input codiceM e calcola la funzione:
h"(codiceM) = 0 se h'(codiceM) = 0
= indefinito altrimenti termina con 0 se h' si è fermata con 0 e
si mette a ciclare, se h' si è fermata con 1
90 33 90 34
1. Run M on input w
Decidable
M,w
2. If M halts on w
then accept M,w
15/08/20 37 15/08/20 38
Input
Proof: string Decisore
Idea di base: M,w per ATM
Assumiamo che ATM è decidibile; M M accetta w
YES
Proveremo che ogni linguaggio
è Turing-Acceptable
H
w NO M rigetta w
assurdo!
15/08/20 41 15/08/20 42
Decisore per L
Diag accetta se ATM dice yes ovvero se M( w) =no
Diag rigetta se dice no ovvero se M( w) =s
ATM
accetta
Decisore per ATM
ML YES Diag:
accept s
(and halt) M,w
ML accepts s ?
Decisore
s NO reject s
M per A YES M rigetta w
TM
(and halt)
w H NO M accetta w
Sia ML il decisore per il rigetta
15/08/20
linguaggio L 43 15/08/20 44
Descrizione di Diag: ATM
Turing-Acceptable ATM
Decisore
M, w
per ATM
M YES M Rigetta M
w Decidable
H
w
NO M Accetta M
w
15/08/20 45 15/08/20 46