Sintesi degli argomenti del corso di Informatica Teorica
Periodo: 03/10/2016 – 16/12/2016
Corso di Laurea: Informatica
Principali argomenti di informatica teorica
- Chiusura linguaggi regolari e context-free (dimostrazione)
- Quintupla di A e A complemento
- Dato il linguaggio { (an b)* | con n pari } scrivere l'automa e complemento
- Che vuol dire automa minimo? (definizione)
- Che vuol dire che due stati sono indistinguibili?
- L'automa minimale è unico?
- I problemi P e NP? (spiegazione)
- Che vuol dire tempo polinomiale?
- Scrivere la grammatica delle stringhe palindrome
- Scrivere la grammatica delle parentesi
- CNF e trasformazione di una grammatica
- Lemma di iterazione (P. Lemma 2, dimostrazione)
- Verifichiamo se due automi riconoscono lo stesso linguaggio?
- Automa minimo unico? (dimostrazione per assurdo)
- Problemi: emptyness, inclusion (spiegazione e dimostrazione)
- Berry e Sethy (spiegazione algoritmo)
- Linguaggi locali (definizione e quadrupla)
- NFA e DFA hanno la stessa potenza? (dimostrazione con subset)
- Macchina di Turing
- Chi dice che la macchina di Turing riesce a calcolare tutte le funzioni? (Turing/Church)
- Descrizione e spiegazione della macchina (con settupla)
- Transizioni della macchina per fare la somma di due numeri
1. Chiusura dei linguaggi regolari
I linguaggi regolari sono chiusi per:
- Unione
- Intersezione
- Complemento
1.1 Chiusura per intersezione
Teorema: Se L1 e L2 REC, allora L1 ∩ L2 REC.
Dimostrazione per costruzione: Si costruisce un automa che riconosce l'intersezione dei due linguaggi: siano A1 e A2 due automi, anche incompleti, che riconoscono rispettivamente i linguaggi L1 ed L2 (L1=L(A1), L2=L(A2)).
A1 = (Q,Σ,δ,q0,F) A2 = (Q,Σ,δ,q0,F).
Si costruisce l'automa per intersezione A = (Q,Σ,δ,q0,F) dove Q = {(q1,q2)|q1 ∈ Q1 AND q2 ∈ Q2} cioè Q = Q1 x Q2, q0 = (q0,q0), δ = ((q1,q2),a) = (δ(q1,a),δ(q2,a)) ∀ a ∈ Σ.
F = {(q1,q2)|q1 ∈ F1 AND q2 ∈ F2} cioè F = F1 x F2.
È semplice provare che A riconosce L1 ∩ L2.
1.2 Chiusura per complemento
Teorema: se L REC, Lc REC.
Dimostrazione per costruzione: Si costruisce un automa che riconosce il complemento Lc = Σ* - L. Dato A = (Q,Σ,δ,q0,F) che riconosce L, si costruisce Ac = (Q,Σ,δ,q0,Fc).
Si completa l'automa, quindi bisogna sempre dichiarare l'alfabeto rispetto al quale si vuol fare la costruzione. Gli stati di accettazione diventano di non accettazione e viceversa. Ac riconosce Lc.
1.3 Chiusura per unione
Teorema: se L1 e L2 REC, allora (L1 U L2) REC.
Ci sono due modi per dimostrarlo:
- Tramite la legge di Morgan: L1c ∩ L2c = (L1 U L2)c
- Per costruzione: siano A1 e A2 due automi che riconoscono rispettivamente i linguaggi L1 e L2, ipotizzati completi.
A1 = (Q,Σ,δ,q0,F) A2 = (Q,Σ,δ,q0,F).
Si costruisce l'automa unione A = (Q,Σ,δ,q0,F) dove Q = {(q1,q2)|q1 ∈ Q1 AND q2 ∈ Q2}, q0 = (q0,q0), δ = ((q1,q2),a) = (δ(q1,a),δ(q2,a)) ∀ a ∈ Σ, F = {(q1,q2)|q1 ∈ F1 OR q2 ∈ F2}.
Si può provare che A riconosce (L1 U L2), facendo l'unione tramite l'ε-transizioni.
2. Chiusura dei linguaggi context-free
Linguaggi liberi dal contesto
2.1 Chiusura per unione
Siano <Σ1,V1,S1,P1> e <Σ2,V2,S2,P2> due linguaggi non contestuali, la loro unione diventa: <Σ1 U Σ2, V1 U V2 U {S'}, S', P1 U P2> dove S' → S1 U S2 è il nuovo assioma.
2.2 Chiusura per concatenazione
Avendo <Σ1 U Σ2, V1 U V2 U {S'}, S', P1 U P2>, aggiungiamo la regola di produzione S' → S1 U S2 ed S' è il nuovo assioma.
2.3 Chiusura per iterazione
Dato <Σ1,V1,S1,P1>, si ha <Σ1,V1 U {S'},S',P1> aggiungendo S' → S1 S'|ε e usando S' come nuovo assioma.
2.4 Chiusura per intersezione
L'intersezione di due linguaggi c.f. non è necessariamente c.f.
Es. {an bn cm | n ≥ 1} ∩ {an bm cn | n ≥ 1} non è context free perché viene an bn cn che non è cf.
2.5 Chiusura per complemento
La chiusura per complemento non è necessariamente context free e lo si dimostra con De Morgan (L1c U L2c) = L1 ∩ L2 e l'intersezione non è necessariamente context free.
3. DFA e automa minimale
Un DFA (quintupla Q,Σ,δ,q0,F) è un automa a stati finiti deterministico che, dopo aver letto una sequenza in input, si ferma in un singolo stato. Esso è composto da 5 componenti:
- Q: insieme degli stati;
- Σ: insieme dei caratteri di input;
- δ(q,a): funzione di transizione;
- q0: stato iniziale;
- F: stato finale o di accettazione che è incluso in Q; possono esistere più stati finali.
Tra tutti gli automi equivalenti, l'automa minimale è quello con il minor numero di stati:
- per i DFA il minimale è unico;
- per gli NFA il minimale non è unico.
Minimizzare un automa significa trovare il minimale equivalente. Esistono vari algoritmi di minimizzazione:
- Algoritmo di Moore O(n2)
- Algoritmo di Hopcroft O(n log n)
- Algoritmo di Brzozowski (tempo esponenziale)
- dove n = numero di stati dell'automa da minimizzare
4. Relazione di indistinguibilità
La relazione di indistinguibilità è una relazione tra gli stati di un automa.
Sia A = (Q,Σ,δ,q0,F) un DFA e {p,q} ⊆ Q.
Allora, pIq <=> ∀w ∈ Σ* | δ*(p,w) ∈ F <=> δ(q,w) ∈ F.
Invece, p e q sono distinguibili se:
∃w ∈ Σ* | δ*(p,w) ∈ F AND δ*(q,w) ∉ F o viceversa.
La relazione di indistinguibilità è una relazione di equivalenza:
- Proprietà riflessiva: pIp ∀p ∈ Q
- Proprietà simmetrica: pIq → qIp ∀p,q ∈ Q
- Proprietà transitiva: pIq, qIr → pIr ∀p,q,r ∈ Q
Ogni stato del minimale è una classe della partizione e quindi si devono trovare le classi di stati indistinguibili.
4.1 Teorema di Nerode
Sia A = (Q,Σ,δ,q0,F) un automa che riconosca L. π = {Q1,Q2,...,Qm} la partizione di indistinguibilità.
L'automa minimo che riconosce L è MA = (QM,Σ ,δM,q0,FM) dove
- QM = {Q1,Q2,...,Qm}
- q0 = [q0]
- δM ([q],a) = [δ(q,a)], ∀q ∈ Q AND ∀a ∈ Σ
- FM = { [q] | q ∈ F}
Affinché la funzione di transizione sia ben definita, si deve mostrare che applicando δ a qualunque stato di una classe si arriva alla stessa classe:
Se pIq, allora δ(p,a)Iδ(q,a)
5. Grammatica generatrice di palindrome e parentesi
L = Linguaggio delle palindrome
G = Grammatica che genera L
G = <{S},{a,b},S,P> dove P sono le seguenti regole di produzione:
- S → aSa
- S → bSb
- S → a
- S → b
- S → aa
- S → bb
L = Linguaggio delle parentesi
G = Grammatica che genera L
G = <{S},{ '(', ')' },S,P>
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.