Concetto di stringa
Alfabeto e stringa
Alfabeto: insieme finito di simboli (Σ)
Stringa: sequenza finita di caratteri nell'alfabeto (in Σ)
Σ = {a, b, c, d, ..., z}
st2 = "aabbccde"
Σ* = {tutte le stringhe costruibili in Σ}
Caratteristiche delle stringhe
Lunghezza: cardinalità
Stringa nulla: stringa senza simbolo (" ") lunghezza 0 (e)
Sottostringa: caratteri di una stringa ne formano un'altra
Concatenazione: tutti i caratteri di una più tutti i caratteri di un'altra
Ordine lessicografico: ordine degli elementi dell'alfabeto (alfa < beta, a precede b)
Ordine di stringa: se la stringa x è più corta precede la più lunga, a parità c’è ordine lessicografico (alfa < beta, alfa > beta)
Linguaggio e automa a stati finiti
Linguaggio
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, ...} (la stringa vuota NON appartiene)
Prendo n ∈ N = (1010101)2 e mi chiedo => "1010101" ∈ L?
Automa a stati finiti (DFA)
Con 2 bit di memorizzazione posso rappresentare 4 stati: 00, 01, 10, 11
Da ogni stato, a seconda del numero che leggo dopo, si passa da uno stato ad un altro o si rimane nello stesso
Questa rappresentazione è quella di una macchina a stati finiti (4 stati) e c’è quindi uno stretto collegamento con la rappresentazione di un calcolatore
Definizione di automa a stati finiti (DFA)
Def: macchina astratta costituita da 5 elementi:
Ψ = (Q, Σ, δ, q0, F)
- Q: stati interni della macchina (qi i∈N)
- Σ: alfabeto che la macchina può interpretare
- δ: funzione da uno stato e un simbolo a un nuovo stato => Q×Σ —> Q Transizioni
- q0: stato di input prima di leggere la sequenza
- F: sottoinsieme di stati. (stati di accettazione, la stringa viene accettata se fa parte di questi sottostati.)
Q = {q0, q1, q2, q3}
Σ = {0, 1}
δ = (le frecce) :
| 0 | 1 | |
| q0 | q1 | q2 |
| q1 | q1 | q2 |
| q2 | q3 | q1 |
| q3 | q2 | q3 |
q0 ∈ Q
F : {q1}
Lingua riconosciuta da una macchina
L(M) = {w ∈ Σ* | M accetta w}
Una macchina riconosce solo il linguaggio (nessun ε)
F = ∅ ⇒ L(M) = ∅
F = Q ⇒ L(M) = Σ*
Esercizio
Consideriamo un automa M: M = { Q, Σ, δ, q0, F }
Q = { q1, q2 }
Σ = { 0, 1 }
δ =
| 0 | 1 | |
| q1 | q1 | q2 |
| q2 | q1 | q2 |
q0 = q1 stato iniziale
F = { q2 }
Rappresentazione L(M)? Tutte le stringhe che terminano in 1
Consideriamo una macchina M'1
M'1 = (Q, Σ, δ, q1, F1)
Uguale ad M, ma F1 = {q1}
L(M'1) = {w ∈ Σ* | w termina in 0, oppure è ε}
Accettazione di un automa
Dato un automa a stati finiti (DFA):
M = { Q, Σ , δ , q0, F }
M accetta w ∈ Σ* se ∃ una sequenza di stati: r0, r1, r2, r3, ..., rm
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.
-
Linguaggi formali e automi
-
Appunti Automi e Linguaggi
-
Appunti quaderno di Automi e linguaggi
-
Automi a pila