Forse provo a fare un PDF: automi.pdf
Introduzione alla Terminologia
Alcune definizioni:
- Alfabeto - Insieme finito di simboli, ad es
- Stringa - Una sequenza di simboli che appartengono ad un alfabeto
Ad esempio dati abbiamo come stringa dell’alfabeto.
- Linguaggio - Dato un alfabeto definiamo come linguaggio di , ovvero l’insieme delle stringhe di quell’alfabeto.
- Lunghezza di una stringa - Data una stringa definiamo come sua lunghezza ovvero quanti simboli contiene..
- Concatenazione - Data la stringa e la stringa definiamo come concatenazione di con la seguente stringa:
- Stringa vuota - Indichiamo con la stringa vuota ovvero tale che:
- Conteggio - Data una stringa e un simbolo definiamo il conteggio di in come ovvero il numero di volte che compare il simbolo in
- Stringa Rovesciata - Data una stringa , dove , definiamo la stringa rovesciata con
- Potenza - Data la stringa e dato definiamo come potenza:
DFA
Il modello di computazione che useremo all’inizio è un automa a stati finiti, questo ha una memoria limitata e una gestione dell’input ma garantisce un’estrema semplicità.
Esempio - Un sensore per una porta automatica, questo ha solo 2 stati ovvero aperto e chiuso e a seconda dell’input del sensore cambia stato, se c’è qualcuno si apre altrimenti si chiude.
Definizione - DFA - Deterministic Finete Automaton
Un DFA è una tupla dove:
- è l’insieme finito degli stati
- è l’insieme finito dei simboli in input
- ovvero la funzione di transizione degli stati
- è lo stato iniziale
- E’ l’insieme degli stati di accettazione dell’automa, ovvero gli stati dove l’automa si trova dopo aver letto una determinata stringa e consente la terminazione.
Se è un DFA allora l’insieme delle stringhe riconosciute da esso si denota con , in generale è il linguaggio conosciuto da . Può anche accadere che .
Esempio - Il DFA precedente del sensore della porta avrà un linguaggio dove contiene almeno i 3 simboli:
- - nessuno si trova nei due lati della porta
- - qualcuno si trova nel lato anteriore
- - qualcuno si trova nel lato posteriore
Esercizio - Definire il linguaggio del seguente automa:

Per definire precisamente un linguaggio introduciamo la funzione di transizione estesa:
Questa è definita in modo ricorsivo da:
Configurazione
Sia un DFA definiamo la coppia come configurazione di D.
Dato , la configurazione iniziale è .
Passo di Computazione
Parte da una configurazione ad un’altra rispettando la funzione di transizione . Il passaggio avviene rispettando la relazione binaria:
Dove
Quindi una transizione avviene soltanto se la funzione di transizione la permette.
Possiamo estendere questa relazione binaria con il simbolo considerando anche la chiusura riflessiva e transitiva quindi:
- e Dove:
Linguaggio Accettato
Diciamo che è accettato da se oppure con
In altre parole quindi: ovvero le parole del linguaggio devono permetterci di arrivare ad uno stato di terminazione.
Linguaggi Regolari
Definizione
Ovvero è l’insieme dei linguaggi accettati da almeno un DFA
Uno dei nostri obiettivi, ad esempio, sarà quello di progettare dei DFA per dei linguaggi forniti.
Esempio - Abbiamo il linguaggio
Un possibile DFA potrebbe essere:

Notiamo quindi che questo accetta soltanto le stringhe che iniziano con il carattere ‘1’, infatti se riceve ‘1’ entra nello stato e non esce più, mentre se riceve ‘0’ entra nello stato senza più uscire.
Attenzione
Lo stato dal quale non usciamo più, anche chiamato stato pozzo, è necessario infatti non possiamo toglierlo e inserire soltanto la transizione che da ricevendo ‘0’ rimaniamo in come in questo caso:
Progettando l’automa in questo modo infatti accetterà anche le stringhe che iniziano con ‘0’.
Una notazione che si usa se vogliamo non disegnare lo stato pozzo è quella di non indicare semplicemente la transizione, quindi:
Adesso dobbiamo dimostrare che questo DFA accetta il linguaggio, quindi più formalmente:
Iniziamo osservando che se ci troviamo in rimarremo sempre in e stessa cosa anche per , formalmente:
Tenendo in mente questo ragionamento iniziamo la dimostrazione per induzione.
- Case Base
Quindi con una stringa vuota rimaniamo sempre in che non è uno stato di accettazione del DFA.
- Passo Induttivo
In questo caso abbiamo quindi con , e quindi la funzione di transizione estesa avrà questi risultati possibili:
Adesso prendiamo una stringa e la pensiamo costruita come con e , la funzione di transizione ci restituirà:
Le due soluzioni di quel passaggio sono:
- se
- se
Ma poi, ricordando cosa abbiamo detto all’inizio, sappiamo che sia che ci troviamo in o rimarremo sempre li, indipendentemente da come è fatta la stringa .
Operazioni sui Linguaggi
Unione
Intersezione
Complemento
Concatenazione
Da notare che non è commutativo, quindi:
Potenza
Possiamo definirla ricorsivamente:
Operatore “star” *
Adesso vogliamo studiare le proprietà di chiusura dei linguaggi naturali.
Ad esempio - Se possiamo dire che anche ? E la loro intersezione? E il complemento? ecc…
Dimostriamo tutti questi casi.
- Teorema - Chiusura per unione
Una prima idea è che:
Dobbiamo quindi definire un altro DFA t.c. . Ma dato una candidata non possiamo provare a vedere prima se la accetta e poi controllare se la accetta perché altrimenti l’automa perderebbe i suoi stati.
Il controllo va fatto in parallelo su entrambi e una volta controllato ogni carattere di aggiorniamo lo stato di di conseguenza.

