• Non ci sono risultati.

1ComputazionediunDFAsuunastringa DFA—Definizionealternativadicomputazione AzzoliniRiccardo2020-10-07

N/A
N/A
Protected

Academic year: 2021

Condividi "1ComputazionediunDFAsuunastringa DFA—Definizionealternativadicomputazione AzzoliniRiccardo2020-10-07"

Copied!
3
0
0

Testo completo

(1)

Azzolini Riccardo 2020-10-07

DFA — Definizione alternativa di computazione

1 Computazione di un DFA su una stringa

Dato un DFA A = ⟨Q, Σ, δ, q0, F⟩, in cui δ : Q × Σ → Q, si definisce la funzione di transizione estesa ˆδ : Q× Σ → Q di A, per induzione sulla lunghezza della stringa in input w∈ Σ:

• Base: quando |w| = 0, cioè w = ϵ, si definisce δ(q, ϵ) = qˆ

(informalmente, se non ci sono input, l’automa non si muove dallo stato corrente).

• Passo induttivo: quando|w| > 0, la stringa w contiene almeno un carattere, quindi può essere “spezzata” in w = xa, dove:

– x∈ Σ è un prefisso che comprende tutti i simboli tranne l’ultimo;

– a∈ Σ è un postfisso che coincide con l’ultimo simbolo.

Allora, si definisce:

δ(q, xa) = δ(ˆˆ δ(q, x), a)

Come caso particolare, se|w| = 1 si ha w = a = ϵa, cioè x = ϵ, da cui segue che:

δ(q, a) = δ(ˆˆ δ(q, ϵ), a) = δ(q, a)

In pratica, la funzione di transizione estesa descrive l’evoluzione, la computazione del- l’automa A sulla stringa w nel senso che ˆδ(q, w) è lo stato in cui l’automa evolve partendo dallo stato q e leggendo l’intera stringa w.

Osservazione: A differenza della funzione di transizione δ, quella estesa ˆδ ha un dominio Q×Σche è infinito (perché Σè infinito), quindi non può essere descritta da una tabella.

Questo non è però un problema, perché la definizione induttiva appena presentata dà una procedura operativa che permette di calcolare il valore di ˆδ(q, w) per qualunque coppia (q, w)∈ Q × Σ (ed è anche facile scrivere un programma che implementi concretamente tale procedura).

1

(2)

2 Stringhe e linguaggi accettati

Sia A =⟨Q, Σ, δ, q0, F⟩ un DFA.

• A accetta una stringa w ∈ Σ se e solo se ˆδ(q0, w) ∈ F (cioè, informalmente, se lo stato raggiunto da A partendo dal suo stato iniziale q0 e leggendo la stringa w è uno stato finale).

• Il linguaggio accettato (riconosciuto) da A è

L(A) ={w ∈ Σ | ˆδ(q0, w)∈ F } Si dice che A riconosce un linguaggio L se L(A) = L.

Intuitivamente, si osserva che queste definizioni sono equivalenti a quelle date in prece- denza, basate sulle sequenze di stati/mosse. La funzione di transizione estesa ha il van- taggio di fornire definizioni più compatte e più operative (grazie al trattamento implicito degli stati intermedi).

3 Esempio 1

Si consideri il DFA A descritto dal diagramma

q0

start q1 q2

0

1

0 1

0, 1

cioè, formalmente,

A =⟨{q| 0, q{z1, q2}}

Q

,{0, 1}| {z }

Σ

, δ, q0,{q|{z}1}

F

dove la funzione di transizione è

δ 0 1

q0 q0 q1 q1 q2 q1

q2 q1 q1

2

(3)

Si vuole determinare se A riconosca la stringa vuota, cioè se ϵ∈ L(A).

Per definizione, A accetterebbe w se e solo se fosse ˆδ(q0, ϵ) ∈ F , ma ˆδ(q0, ϵ) = q0 ∈ F/ (per la definizione di ˆδ nel caso base), quindi A non accetta ϵ: ϵ /∈ L(A).

Osservazione: il caso base ˆδ(q, ϵ) = q è completamente indipendente dalla funzione di transizione dello specifico automa considerato.

4 Esempio 2

Considerando ancora l’automa dell’esempio precedente, ci si chiede se 01100∈ L(A).

Come prima, bisogna determinare se ˆδ(q0, 01100)∈ F . Siccome la stringa non è vuota, per calcolare il valore della funzione di transizione estesa bisogna applicare la definizione del caso induttivo: ˆδ(q0, 01100) = δ(ˆδ(q0, 0110), 0), e così via. In pratica, piuttosto che lavorare “all’indietro”, seguendo esattamente la definizione, si può rendere più lineare il processo di calcolo considerando i prefissi della stringa di input, partendo dal più corto (ϵ) e aggiungendo ogni volta il carattere successivo della stringa:

δ(qˆ 0, ϵ) = q0 (caso base)

ˆδ(q0, 0) = δ(ˆδ(q0, ϵ), 0) = δ(q0, 0) = q0 (passo induttivo: x = ϵ, a = 0) δ(qˆ 0, 01) = δ(ˆδ(q0, 0), 1) = δ(q0, 1) = q1 (passo induttivo: x = 0, a = 1) δ(qˆ 0, 011) = δ(ˆδ(q0, 01), 1) = δ(q1, 1) = q1 (passo induttivo: x = 01, a = 1) δ(qˆ 0, 0110) = δ(ˆδ(q0, 011), 0) = δ(q1, 0) = q2 (passo induttivo: x = 011, a = 0) δ(qˆ 0, 01100) = δ(ˆδ(q0, 0110), 0) = δ(q2, 0) = q1 (passo induttivo: x = 0110, a = 0) Siccome ˆδ(q0, 01100) = q1 ∈ F , la stringa 01100 è accettata da A, ovvero 01100 ∈ L(A).

3

Riferimenti

Documenti correlati

Infatti, due fili conduttori paralleli (o, in generale, vicini ma non collegati) formano di fatto un condensatore, creando una rete RC indesiderata che limita la velocità di

Appena la tensione supera un certo valore chiamato tensione diretta (forward voltage, V F ), che tipicamente è di circa 0.6–0.7 V, le cariche riescono ad attraver- sare la giunzione

Se però si applica tra gate e source una tensione che polarizzi inversamente la giunzione p-n, si crea una zona di svuotamento che restringe il canale attraversato dalla corrente

Per scaricare questa tensione senza danneggiare altri componenti del circuito (ad esempio il transistor che comanda la bobina), bisogna collegare un diodo in “antiparallelo”

• quando il pulsante è aperto (non premuto), la resistenza mette la porta di I/O alla tensione di alimentazione, quindi si ha uno stato logico

La causa di questo comportamento strano non è un errore nel software, bensì un comportamento fisico del pulsante, chiamato bouncing: quando esso viene premuto (e quando

Se questa è troppo bassa, il segnale digitale ottenuto dalla conversione può diventare un alias del segnale originale, cioè un segnale di fatto completamente diverso, che assume

Se il nodo contesto è collezione, questo passo corrisponde agli elementi ricetta (figli, appunto, di collezione) aventi ID