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.