Skip to content

Latest commit

 

History

History
140 lines (90 loc) · 6.65 KB

Tutorato3_180326.md

File metadata and controls

140 lines (90 loc) · 6.65 KB

Proprietà di chiusura

Es 4.2.3 pag 155 libro

a\L = {w ∈ Σ* | aw ∈ L} Dimostrare che se L è regolare anche a\L è regolare.

Si dimostra effettuando una serie di operazioni che mantengono la regolarità.

  1. Se L è regolare possiamo disegnare un DFA M che accetta L.
  2. Possiamo 'invertire' l'automa modificandolo per accettare LR, ovvero tutte le stringhe di L ma rovesciate. Questo automa si chiama M' = (QM', Σ, δM', q0, FM').
  3. Disegno il DFA M'' che è uguale a M' ma ha come stati finali solamente gli stati di M' che hanno una transizione con a verso uno stato finale. M'' = (QM'', Σ, δM'', q0, FM'').
  • ∀ q ∈ QM'
  • δM'(q, a) = p ∈ FM' <==> q ∈ FM'' M'' accetta stringhe wR sse M' accetta wRa. Ovvero il linguaggio di M'' è L(M'') = {wR | wRa ∈ LR}.
  1. Inverto M'' creando M''' che accetta le w tali che a(wR)R ∈ (LR)R, ovvero le w tali che awL.

M''' accetta quindi il linguaggio iniziale che è regolare.

Es T1 (5.1.x)

substring(L) = {w | ∃ x, y | xwy ∈ L}.

Dimostrare che se L è regolare allora anche substring(L) è regolare.

Si parte dall'automa che accetta L. Dato che L è regolare disegno l'automa NFA che lo accetta e lo chiamo M = (Q, Σ, δ, q0, F).

Sia S l'insieme degli stati raggiungibili da q0 con qualunque cammino, anche ε. Sia E l'insieme degli stati che possono raggiungere uno stato finale di M, ovvero almeno uno stato ∈ F.

Disegno un nuovo automa che è uguale a M, ma ha un nuovo stato iniziale qi, e un nuovo (unico) stato finale qf. Costruisco l'NFA:

N = (Q ∪ {qi, qf}, Σ, δ, qi, {qf})

Inoltre:

  • qi avrà delle ε-transizioni verso qualunque stato ∈ S.
  • tutti gli stati ∈ E avranno una ε-transizione verso qf.

In questo modo N accetta esattamente il linguaggio substring(L), che quindi è regolare.

Conversione FA in RE

Esercizio T1 (3.12.ii)

NB: ε = λ;

Esercizio 3.12.ii

Possibile soluzione: ((λ+aa(aa)*)ab)*(a+aa(aa)*(λ+a))

Esercizio T2 (3.12.iv)

Esercizio 3.12.iv

Soluzione: (b+abb*a)*a

Pumping Lemma

Esercizio T1 (5.9)

Dimostrare che L non è regolare. L = {w ∈ {0, 1}* | ∃u | www = uu}

Se fosse regolare rispetterebbe PL.

∀ lunghezza h prendo la parola w = 10h110h1. Essendo w due volte una stessa sequenza (r = s = 10h1, w = rs = ss = rr), www sarà spezzabile in due stringhe identiche che concatenate ricostruiscono www. Quindi w ∈ L.

∀ possibile split w = xyz con |xy| ≤ h e y ≠ ε allora prendo k = 0 e la stringa w' = xy0z sarà necessariamente in una forma in cui non è più la ripetizione di due sequenze identiche. Diciamo che è nella forma w = rs in cui |r| < |s| ed esse non sono uguali. Quindi www = rsrsrs. Non c'è alcun modo di spezzare questa stringa in due pezzi identici, quindi w' ∉ L. Segue che L non può essere regolare.

Esercizio T2 (5.7.ix)

L è regolare?

L = {0m1n | m = n}

Verifico che nega il PL.

∀ lunghezza h prendo la parola w = 0h1h+h! (∈ L, |w| ≥ h).

∀ possibile split w = xyz con |xy| ≤ h e y ≠ ε. Allora y è formata da p zeri, con 1 ≤ ph.

Prendo k = 1 + (h! / p). Allora w' = xykz = 0h-p 0p(1 + (h! / p)) 1h+h! = 0h-p 0(p + h!) 1h+h! = 0h-p 0p 0h! 1h+h! = 0h+h! 1h+h!.

Per cui w' ∉ L. ==> L non è regolare.

Il fattoriale serve perchè k deve essere un intero. h! / p è intero perchè ph e quindi h! è sicuramente divisibile per p.

Esercizio T3 (5.7.viii)

L = {0n | n è un numero composto (non primo)}

Per dimostrarne l'irregolarità si può utilizzare la proprietà di chiusura per complementazione dei linguaggi regolari. Se fosse regolare allora il suo complementare L' = {0n | n è un numero primo} dovrebbe essere regolare. Ma questo non è regolare, il che porta ad una contraddizione. Quindi L non è regolare.

Esercizio T4 (4.1.2.b libro pag 138)

Dimostro che L non è regolare.

L = {0n | n è un cubo perfetto} Sia n la lunghezza del PL.

Prendo w = 0n3, che è sicuramente un cubo ∀ n e |w| ≥ n.

∀ split w = xyz per cui vale:

  • |xy| ≤ n;
  • y ≠ ε

Allora y contiene p zeri, dove 1 ≤ p ≤ n. Prendo un k = 2. Sia w' = xykz.

Dunque |w'| = n3-p + 2p = n3+p.

Quindi ripetto a w la parola w' avrà al più n zeri in più. Sono sufficienti per arrivare ad un cubo perfetto? Il cubo successivo a n3 è (n+1)3.

(n+1)3 = n3 + 3n2 + 2n + 2.

Quindi sarebbe stato necessario incrementare il numero di zeri di 3n2+2n+2 solo per arrivare al cubo successivo, invece w' è cresciuta di al più n zeri. Quindi w' ∉ L.

Costruzione di DFA

Esercizio T5 (2.2.6.b pag 57 libro)

Costruire un DFA che accetta tutte le stringhe che lette al contrario come un numero binario intero siano divisibili per 5.

Per prima cosa basta disegnare il DFA che accetta i multipli di 5 binari (diritti). Poi è sufficiente invertire l'automa con la procedura usuale e si ottiene il DFA richiesto.

Esercizio T5