Intersezione di linguaggi regolari
Siano L1, L2 due linguaggi regolari. Dimostreremo che anche la loro intersezione L = L1 ∩ L2 è un linguaggio regolare.
Idea della dimostrazione
Abbiamo due linguaggi regolari L1 e L2 e vogliamo dimostrare che la loro intersezione L1 ∩ L2 è ancora un linguaggio regolare. Poiché L1 e L2 sono regolari, esistono automi a stati finiti A1 e A2 che accettano i linguaggi L1 e L2, cioè L(A1) = L1 e L(A2) = L2. Costruiremo un automa a stati finiti A che accetta il linguaggio L1 ∩ L2, e così dimostreremo che L1 ∩ L2 è regolare.
Una parola appartiene all’intersezione dei linguaggi se appartiene a L1 e allo stesso tempo a L2. Quindi la parola deve essere accettata sia dall’automa A1 sia dall’automa A2. Usiamo esattamente la stessa idea dell’unione di linguaggi regolari, cambiando soltanto l’insieme degli stati finali.
Formalizzazione del procedimento
Abbiamo due automi,
Costruiamo l’automa A = ⟨Q, Σ, δ, q, F⟩ che accetta il linguaggio L(A1) ∩ L(A2). Si ha:
- Q = Q1 × Q2
- Σ= Σ1 ∩ Σ2
- q = ⟨q0, p0⟩
- F = F1 × F2
Per la funzione di transizione δ vale la relazione seguente:
Esempio
Consideriamo questo automa A1, che accetta tutte le parole con un numero pari di 1:
e l’automa A2, che accetta le parole con un numero dispari di 0:
Costruiamo l’automa che accetta l’intersezione di questi linguaggi. L’insieme degli stati ha la forma Q = Q1 × Q2, lo stato iniziale è ⟨q0, p0⟩ e gli stati finali sono F1 × F2:
Poi completiamo le transizioni ponendo δ(⟨q,p⟩, a) = ⟨δ1(q, a), δ2(p, a)⟩:
In questo automa, ad esempio, dallo stato ⟨q0, p0⟩ c’è una transizione con il simbolo 0 verso lo stato ⟨q0,p1⟩. Significa che l’automa A1 ha, dallo stato q0, una transizione con il simbolo 0 che torna in q0, mentre l’automa A2 con il simbolo 0 passa dallo stato p0 allo stato p1.
Possiamo mettere alla prova l’automa. Dovrebbe accettare parole come 110 o 00000 (contengono un numero pari di 1 e allo stesso tempo un numero dispari di 0), ma non dovrebbe accettare parole come 11, 111, 1010.
Fonti
Capitoli: Chiusura dei linguaggi regolari, Unione di linguaggi regolari, Intersezione di linguaggi regolari, Differenza di linguaggi regolari, Complemento di un linguaggio regolare, Concatenazione di linguaggi regolari, Chiusura di Kleene di un linguaggio regolare