Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma ... TeoremadiKleene PumpingLemmaperLinguaggiRegolari

  • View
    0

  • Download
    0

Embed Size (px)

Text of Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma ... TeoremadiKleene...

  • Teorema di Kleene Pumping Lemma per Linguaggi Regolari

    Esercizi

    Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma

    N.Fanizzi - V.Carofiglio

    6 aprile 2016

    Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio

  • Teorema di Kleene Pumping Lemma per Linguaggi Regolari

    Esercizi

    1 Teorema di Kleene L3 ⊂ LFSL LFSL ⊂ L3 LFSL ⊂ LREG LREG ⊂ L3

    2 Pumping Lemma per Linguaggi Regolari

    3 Esercizi Esercizio 1 Esercizio 3 Esercizio 8

    Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio

  • Teorema di Kleene Pumping Lemma per Linguaggi Regolari

    Esercizi

    L3 ⊂ LFSL LFSL ⊂ L3 LFSL ⊂ LREG LREG ⊂ L3

    Teorema di Kleene

    Vale la seguente equivalenza:

    L3 ≡ LFSL ≡ LREG

    Dimostrazione. Lo schema di dimostrazione è il seguente:

    1 L3 ⊂ LFSL (ed anche LFSL ⊂ L3) 2 LFSL ⊂ LREG 3 LREG ⊂ L3

    Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio

  • Teorema di Kleene Pumping Lemma per Linguaggi Regolari

    Esercizi

    L3 ⊂ LFSL LFSL ⊂ L3 LFSL ⊂ LREG LREG ⊂ L3

    Tesi I. L3 ⊂ LFSL Sia L ∈ L3 cioè ∃G = (X ,V , S ,P),G di tipo 3: L(G ) = L Si deve costruire un FSA M = (Q, δ, q0,F ) tale che T (M) = L(G )

    Algoritmo. Input: G = (X ,V , S ,P),G di tipo 3 Output: M = (Q, δ, q0,F ) ∈ FSA

    1 X alfabeto di ingresso per M 2 Q = V ∪ {q}, q 6∈ V 3 q0 = S 4 F = {q} ∪ {B | B −→ λ ∈ P} 5 δ : Q × X −→ ℘(Q)

    1 ∀B −→ aC ∈ P : C ∈ δ(B, a) 2 ∀B −→ a ∈ P : q ∈ δ(B, a)

    Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio

  • Teorema di Kleene Pumping Lemma per Linguaggi Regolari

    Esercizi

    L3 ⊂ LFSL LFSL ⊂ L3 LFSL ⊂ LREG LREG ⊂ L3

    Osservazione: l’algoritmo può generare NDA (passi 5.a e 5.b) Occorre dimostrare anche la correttezza dell’automa: L(G ) = T (M)

    L(G ) ⊆ T (M): sia w = x1x2 · · · xk ∈ L(G ) w può essere generata con una derivazione: S =⇒ x1X2 =⇒ x1x2X3 =⇒ · · · =⇒ x1x2 . . .Xk =⇒ x1x2 . . . xk Per la sua def. l’automa M, avendo in input w , compie una serie di transizioni che portano da S a X1,X2, . . . ,Xk fino a q. T (M) ⊆ L(G ): analogamente

    Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio

  • Teorema di Kleene Pumping Lemma per Linguaggi Regolari

    Esercizi

    L3 ⊂ LFSL LFSL ⊂ L3 LFSL ⊂ LREG LREG ⊂ L3

    Inoltre, si dimostra in maniera costruttiva

    LFSL ⊂ L3

    Algoritmo. Input: M = (Q, δ, q0,F ) ∈ FSA Output: G = (X ,V , S ,P) lineare

    1 X alfabeto di ingresso per M 2 V = Q 3 S = q0 4 P = {q −→ xq′ | q′ ∈ δ(q, x)} ∪ {q −→ x | δ(q, x) ∈ F}

    Per esercizio: L(G ) = T (M)

    Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio

  • Teorema di Kleene Pumping Lemma per Linguaggi Regolari

    Esercizi

    L3 ⊂ LFSL LFSL ⊂ L3 LFSL ⊂ LREG LREG ⊂ L3

    Tesi II. LFSL ⊂ LREG Sia L ∈ LFSL cioè ∃M = (Q, δ, q0,F ) ∈ FSA tale che: T (M) = L Supponiamo Q = {q0, q1, . . . , qn} Si definisca il linguaggio:

    Rij = {w ∈ X ∗ | δ∗(qi ,w) = qj}

    contenente le stringhe che fanno transitare M da qi a qj . Per def. di linguaggio accettato da FSA, risulta: T (M) =

    ⋃ qj∈F R0j

    quindi basta dimostrare che ogni linguaggio Rij è regolare 0 ≤ i , j ≤ n

    Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio

  • Teorema di Kleene Pumping Lemma per Linguaggi Regolari

    Esercizi

    L3 ⊂ LFSL LFSL ⊂ L3 LFSL ⊂ LREG LREG ⊂ L3

    Rkij = {w ∈ X ∗ | δ∗(qi ,w) = qj senza transitare in qk , qk+1, . . . , qn}

    Si osservi che: Rn+1ij = Rij

    Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio

  • Teorema di Kleene Pumping Lemma per Linguaggi Regolari

    Esercizi

    L3 ⊂ LFSL LFSL ⊂ L3 LFSL ⊂ LREG LREG ⊂ L3

    dimostriamo per induzione su k che

    Rkij ∈ LREG ∀i , j : 0 ≤ i , j ≤ n

    (k = 0) R0ij = {w ∈ X ∗ | δ(qi ,w) = qj} ∈ LREG perchè finito (k > 0) per ipotesi: Rkij ∈ LREG ∀i , j :∈ {0, . . . , n}

    Dimostriamo che Rk+1ij ∈ LREG Sia w ∈ Rk+1ij per definizione la lettura di w non fa transitare M in nessuno degli stati qk+1, qk+2, . . . , qn. Si possono avere 2 casi (vedi figura):

    1 w non fa transitare M nemmeno in qk , quindi w ∈ Rkij ed Rkij cioè regolare, per ipotesi.

    2 w fa transitare M in qk . In tal caso riscriviamo w come concatenazione di m > 1 sottostringhe: w = w1w2 · · ·wm−1wm con: w1 ∈ Rkik wt ∈ Rkkk 1 < t < m wm ∈ Rkkj

    Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio

  • Teorema di Kleene Pumping Lemma per Linguaggi Regolari

    Esercizi

    L3 ⊂ LFSL LFSL ⊂ L3 LFSL ⊂ LREG LREG ⊂ L3

    Data la genericità di w si può scrivere: w ∈ Rkik · (Rkkk)m−2 · Rkkj (con m > 1) per cui: w ∈ Rkik · (Rkkk)∗ · Rkkj Ne consegue allora che: Rk+1ij ⊆ Rkij ∪ Rkik · (Rkkk)∗ · Rkkj ma ovviamente: Rkij ∪ Rkik · (Rkkk)∗ · Rkkj ⊆ R

    k+1 ij

    quindi il linguaggio

    Rk+1ij = R k ij ∪ Rkik · (Rkkk)∗ · Rkkj

    è regolare perchè espresso come unione, concatenazione e iterazione di linguaggi che sono regolari (per ipotesi induttiva) Risulta dimostrato che ∀k ∈ [0, n] Rkij ∈ LREG perciò

    T (M) = ⋃

    qj∈F R0j =

    ⋃ qj∈F

    Rn+10j

    è regolare perchè unione di linguaggi regolari Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio

  • Teorema di Kleene Pumping Lemma per Linguaggi Regolari

    Esercizi

    L3 ⊂ LFSL LFSL ⊂ L3 LFSL ⊂ LREG LREG ⊂ L3

    Algoritmo alternativo [Hopcroft et al.] LFSL ⊂ LREG eliminando uno stato alla volta occorre preservare i cammini che portano dallo stato iniziale a stati finali si considerano gli stati predecessori q1, . . . , qm e successori p1, . . . , pk dello stato s da eliminare (ins. non disgiunti)

    Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio

  • Teorema di Kleene Pumping Lemma per Linguaggi Regolari

    Esercizi

    L3 ⊂ LFSL LFSL ⊂ L3 LFSL ⊂ LREG LREG ⊂ L3

    archi etichettati con espressioni regolari anzichè con simboli: infinite parole possono portare da uno stato ad un altro eliminando s, per ogni (qi , pj), si etichetta l’arco con l‘espressione regolare: Rij + QiS∗Pj un arco assente nell’automa originario si denota con l’espressione ∅

    Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio

  • Teorema di Kleene Pumping Lemma per Linguaggi Regolari

    Esercizi

    L3 ⊂ LFSL LFSL ⊂ L3 LFSL ⊂ LREG LREG ⊂ L3

    1 per ogni stato finale q ∈ F si eliminano tutti gli stati tranne q0 e q: applicando l’algoritmo si produce un automa con archi etichettati da espr. regolari

    2 se q 6= q0 allora risulta un automa a due stati ⇒ soluzione: (R∗ + SU∗T )∗SU∗

    3 altrimenti risulta un automa ad un stato ⇒ soluzione: R∗

    4 output: somma di tutte le espressioni ottenute al variare di q

    Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio

  • Teorema di Kleene Pumping Lemma per Linguaggi Regolari

    Esercizi

    L3 ⊂ LFSL LFSL ⊂ L3 LFSL ⊂ LREG LREG ⊂ L3

    Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio

  • Teorema di Kleene Pumping Lemma per Linguaggi Regolari

    Esercizi

    L3 ⊂ LFSL LFSL ⊂ L3 LFSL ⊂ LREG LREG ⊂ L3

    Tesi III. LREG ⊂ L3 Sia L ∈ LREG quindi vale una delle seguenti condizioni:

    L è finito L = L1 ∪ L2 con L1, L2 regolari L = L1 · L2 con L1, L2 regolari L = (L1)∗ con L1 regolare

    Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio

  • Teorema di Kleene Pumping Lemma per Linguaggi Regolari

    Esercizi

    L3 ⊂ LFSL LFSL ⊂ L3 LFSL ⊂ LREG LREG ⊂ L3

    Dimostrazione per induzione sulla costruzione di L base L finito L = {w1,w2, . . . ,wn} allora si può scrivere come

    unione di linguaggi lineari Li che generano ognuno una stringa di wi e la classe L3 è chiusa rispetto all’unione:

    L = n⋃

    i=0

    Li

    Si può facilmente dimostrare che ∀i ∈ [0, n] : Li ∈ L3 passo In tutti i tre casi possiamo considerare i linguaggi L1 e L2

    come lineari per ipotesi di induzione. Anche la loro unione/concatenazione/iterazione è in L3 per la chiusura di L3 rispetto a queste operazioni. Quindi L ∈ L3

    Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio

  • Teorema di Kleene Pumping Lemma per Linguaggi Regolari

    Esercizi

    Pumping Lemma per Linguaggi Regolari

    Teorema. Sia M = (Q, δ, q0,F ) ∈ FSA con n = |Q| e sia z ∈ T (M), |z | ≥ n. Allora z = uvw e uv∗w ⊂ T (M), cioè ∀t ≥ 0 : uv tw ∈ T (M) Dimostrazione. Sia z = x1x2 · · · xk ∈ T (M) con k ≥ n Si rappresenta il riconoscimento di z con:

    Se si ha |z | ≥ n si deve passare per almeno n + 1 stati ma n = |Q| quindi c’è uno stato ripetuto:

    ∃i , j , 0 ≤ i <