Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
Concetto di Stringa
Alfabeto: insieme finito di simboli
Stringa: sequenza finita di caratteri nell'alfabeto
- Σ = { a, b, c, d, ..., z }
- st2 = "aabbccde"
- Σ* = { tutte le stringhe costruibili in Σ }
- lunghezza: cardinalità
- stringa nulla: stringa senza simbolo ("") lunghezza 0 (ε)
- sottostringa: caratteri di una stringa ne formano un'altra
- concatenazione: tutti i caratteri di 1 più tutti i caratteri di un'altra
- ordine lessicografico: ordine degli elementi dell'alfabeto (alfa < beta, a precede b)
- ordine di stringa: le stringhe più corte precede la più lunga, a parti c'è ordine lessicografico (alfa < beta, alfa > beta)
Linguaggio (sopra un certo alfabeto)
=: sottoinsieme di stringhe sopra un alfabeto Σ
L ⊆ Σ*
Es:
Σ = {0,1} => Σ* = {ε, 0, 1, 00, 01, 10, 11, ...}
L = {w ∈ Σ* | w codifica in binario un numero divisibile per 3}
L = {0, 11, 110, 1001, ...}
cerlastinpevuotonon appartiene
Prendo m ∈ N = (101011001)2 e mi chiedo => "101011001" ∈ L ?
Esercizio:
Consideriamo un automa M:
M = {Q, Σ, δ, q0, F}
Q = {q1, q2}
Σ = {0, 1}
q0 = q1 stato iniziale
F = {q2}
Rappresentazione
L(M)?
Tutte le stringhe che terminano in 1
Queste operazioni conservano la regolarità del linguaggio:
Teorema:
Se A e B sono linguaggi regolari,
Allora: A ∪ B ⇒ Linguaggio regolare
Dim:
Ip1: A, B linguaggi sullo stesso alfabeto
Ip2: A regolare ⇒ ∃ DFA M1 = {Q1, Σ, δ1, q1, F1}:
L(M1) = A
B regolare ⇒ ∃ DFA M2 = {Q2, Σ, δ2, q2, F2}:
L(M2) = B
Idea: ∃ M = (Q, Σ, δ, q0, F)
Q = Q1 × Q2
Σ = comune
δ((q1, q2), δ) = (δ1(q1, δ), δ2(q2, δ))
q0 = (q1, q2) une coppia
F = (F1 × Q2) ∪ (Q1 × F2)
Esercizio:
Mostra un NFA che accetta ogni stringa binaria che ha un 1 nella 3a posizione dalla fine
- 000 ∉ L
- 01000 ∉ L
- 10000100 ∈ L
L'automa sceglie
Non c'è nulla
ACCETTO
può fare in entrando in
equivalente
NFA ≡ DFA
R+ ≡ R R* linguaggio costituito da tutte le sequenze di 1 o più elementi del linguaggio di R
Rk = R o R o ... o R
R ϵ = R stringa vuota ≠ insieme vuoto
R Ø = Ø
R ∪ ϵ L(R) ∪ {ϵ} = potrebbe essere diverso
R ∪ Ø L(R) ∪ Ø = L(R)
L(Ø)
QUIZ
Ø*
L(Ø*) = ?
=>(L(Ø))* = Ø* = ϵ
sequenza di 0 elementi
Teorema (Relazione tra linguaggi ed espressioni regolari)
Un linguaggio L è regolare <=> ∃ REX t.c. il linguaggio generato: L(R) = L
Abbiamo dimostrato:
- ∀ REX => L(R) è regolare
Dobbiamo dimostrare =>
Se L regolare => ∃ REX R t.c L(R)=L
Idea:
- GNFA
- da cui è possibile definire
- REX
- DFA
- L regolare
Una GNFA è costruibile da un DFA, ogni linguaggio regolare è riconosciuto da un DFA. Da ogni linguaggio regolare possiamo costruire e definire una REX.
Esercizio:
Dato un DEA qual è la REX?
Convertiamolo in un GNFA:
Eliminiamo il nodo 2.
Non giusto
Se A
xz e A
caso i=0
x yi z => xz
y0 = ε
i = 4
Perché questo teorema è vero:
A regolare => ∃ DFA
|Q| = p
M è capace di contare soltanto fino a p
Se A |s| ≥ p
q0 → q1 → ... → qn ∈ F
≥ p
“principio delle piccionaia”