Automi, Linguaggi e Computazione Capitolo 1 : Teoria degli Automi e Tecniche di Dimostrazione Laurea Magistrale in Ingegneria Informatica Università di Padova Docente : Giorgio Satta Presentazione basata su materiale originariamente sviluppato da : Gösta Grahne, Concordia University Francesca Rossi, Università di Padova
Informatica teorica
Introduzione Uno degli obiettivi principali dell informatica teorica è lo studio matematico della computazione computabilità : cosa posso computare?? trattabilità : cosa posso computare in modo efficiente?? Per studiare la computazione è necessario sviluppare modelli astratti di calcolo : teoria degli automi sviluppare una rappresentazione dei problemi e studiare le loro proprietà : teoria dei linguaggi formali
Introduzione Modelli di calcolo più noti : macchine di Turing, introdotte per lo studio della calcolabilità automi a stati finiti, introdotti come modelli del calcolo neuronale grammatiche formali, introdotte da Noam Chomsky come modelli linguistici
1 Introduzione agli automi a stati finiti : modello di calcolo pervasivo che utilizza una quantità prefissata di memoria 2 Tecniche per le dimostrazioni formali : ipotesi, tesi, deduzione, induzione 3 della teoria degli automi : alfabeti, stringhe e linguaggi
Automa a stati finiti : Insieme finito di stati con regole di transizione che portano da uno stato all altro come modello per : software per la progettazione di circuiti digitali analizzatori lessicali di un compilatore ricerca di parole in un file o sul web software per verificare sistemi a stati finiti, come protocolli di comunicazione
Rappresentazione La più semplice rappresentazione per un automa a stati finiti è il grafo : i nodi rappresentano gli stati gli archi rappresentano transizioni le etichette sugli archi ci dicono cosa causa la transizione
Esempio Automa a stati finiti per un interruttore on/off Push Start off on Push Automa a stati finiti che riconosce la parola chiave then del linguaggio di programmazione Java Start t h e n t th the then
Rappresentazioni strutturali Gli automi a stati finiti sono modelli riconoscitori : prendono in ingresso una sequenza (stringa) e accettano oppure rifiutano Alternativamente posso rappresentare una macchina calcolatrice utilizzando modelli generativi : vengono generate tutte le sequenze compatibili (non c è input)
Rappresentazioni strutturali Grammatiche : Una regola di riscrittura E Ñ E ` E specifica che un espressione aritmetica può essere formata da due espressioni aritmetiche connesse dall operatore addizione Espressioni regolari : L espressione [A-Z][a-z]*[ ][A-Z][A-Z] genera la stringa Ithaca NY, ma non genera la stringa Palo Alto CA
Dimostrazioni deduttive Forma tipica del teorema da dimostrare (H, C proprietà) : Se H, allora C dove H = ipotesi, C = conclusione Ciò significa che H è condizione sufficiente per C C è condizione necessaria per H
Dimostrazioni deduttive In una interpretazione insiemistica, H e C sono associati all insieme degli elementi dell universo U che hanno tale proprietà H ñ C equivale a H Ď C : se H vero, C non può essere falso C H U
Dimostrazioni deduttive Deduzione : Sequenza di enunciati che parte dalle ipotesi e porta alla conclusione Ogni passaggio della deduzione utilizza un principio logico accettato, e lo applica alle ipotesi oppure ad uno degli enunciati precedentemente ottenuti Modus ponens : regola logica per passare da un enuciato al successivo. Se sappiamo che se H allora C è vera, e se sappiamo che H è vera, allora possiamo concludere che C è vera
Esempio Teorema Se x è somma dei quadrati di quattro interi positivi, allora 2 x ě x 2 x è un parametro dell enunciato, ed è quantificato universalmente, il teorema vale per tutti gli x che soddisfano le ipotesi Vedi libro di testo per esempio di deduzione che dimostra il teorema
Dimostrazioni deduttive Teoremi della forma C1 se e solo se C2 richiedono la dimostrazione in due direzioni : se C2 allora C1 se C1 allora C2 che è equivalente a C1 solo se C2
Altre tecniche Ridurre ipotesi a definizioni : Convertire tutti i termini delle ipotesi nelle corrispondenti definizioni Dimostrazione per assurdo : Per dimostrare se H allora C, dimostro H e non C implica il falso
Esempio Teorema Sia S sottoinsieme finito di un insieme infinito U. Sia T il complemento di S rispetto a U. Allora T è infinito Dimostrazione S è finito equivale, per definizione, a : esiste un intero n tale che S n U è infinito equivale, per definizione, a : per nessun intero n vale U n T è il complemento di S equivale, per definizione, a : S Y T U e S X T H
Esempio Considero la negazione della conclusione T è finito (dimostrazione per assurdo) T è finito equivale, per definizione, a : esiste un intero m tale che T m Usando S n ed usando S Y T U e S X T H, segue che U S ` T n ` m, cioè U è finito. Ciò contraddice l ipotesi l
Altre tecniche Controesempio : per dimostrare che un teorema non vale basta dimostrare che in un caso il teorema è falso Esempio : È vero che se x è un numero primo allora x è dispari?? No, infatti 2 è un numero primo ma non è dispari
Quantificatori Per ogni x (@x) : vale per tutti i valori della variabile Esiste x (Dx) : vale per almeno un valore della variabile L ordine in cui compaiono i quantificatori influisce sul significato dell enunciato
Esempio Teorema Se un insieme S è infinito, allora per ogni intero n esiste almeno un sottoinsieme T di S con n elementi @ precede D; per la dimostrazione dobbiamo dunque (nell ordine) considerare un n arbitrario dimostrare l esistenza di un sottoinsieme T di S con n elementi
Uguaglianza tra insiemi Se E ed F sono insiemi, per dimostrare E F dobbiamo dimostrare E Ď F e F Ď E Ciò si riduce a dimostrare due enunciati se e solo se : se x è in E allora x è in F se x è in F allora x è in E
Contronominale L enunciato se H allora C è equivalente all enunciato se C è falso allora H è falso detto contronominale, o anche modus tollens La dimostrazione di equivalenza utilizza la tabella di verità In alcuni casi può essere più agevole dimostrare il contronominale
Dimostrazione per induzione Tecnica essenziale quando si lavora su oggetti definiti ricorsivamente (espressioni, alberi, ecc.) Induzione sugli interi : dobbiamo dimostrare un enunciato Spnq con n intero nel caso base dimostriamo Spiq per un intero particolare (di solito i 0 o i 1) nel passo induttivo per n ě i, dimostriamo l enunciato se Spnq allora vale Spn ` 1q Possiamo concludere che Spnq è vero per ogni n ě i, dove i è il caso base
Esempio Teorema Se x ě 4, allora 2 x ě x 2 Dimostrazione Base x 4 ñ 2 x 2 4 16 e x 2 4 2 16 Induzione Supponiamo che 2 x ě x 2 per x ě 4 Dobbiamo dimostrare che 2 x`1 ě px ` 1q 2 : 2 x`1 2 2 x ě 2 x 2 (per ipotesi induttiva) dimostriamo adesso che 2x 2 ě px ` 1q 2 x 2 ` 2x ` 1 semplificando (divido per x 0): x ě 2 ` 1{x se x ě 4, 1{x ď 1{4 ñ 2 ` 1{x ď 2.25 l
Dimostrazione per induzione Possiamo dimostrare un numero finito di casi base Possiamo estendere il passo induttivo e dimostrare per un certo k ą 0 : se Spn kq, Spn k ` 1q,..., Spn 1q, Spnq allora vale Spn ` 1q
Induzione strutturale Molte strutture possono essere definite ricorsivamente Definizione di espressione aritmetica Base Qualunque variabile o numero è un espressione aritmetica Induzione Se E e F sono espressioni aritmetiche, allora lo sono anche E ` F, E ˆ F, e peq Esempio : Sono espressioni aritmetiche 3 ` px ˆ 2q e p2 ˆ p5 ` 7qq ˆ y
Induzione strutturale Definizione di albero Base Un singolo nodo N è un albero di radice N Induzione Se T 1, T 2,..., T k, k ě 1, sono alberi, la struttura seguente è un albero di radice N N T 1 T 2 T k
Induzione strutturale Per dimostrare teoremi su una struttura X definita ricorsivamente: si dimostra l enunciato sul caso base della definizione di X si dimostra l enunciato sulla struttura X a partire dalla validità dell enunciato sulle strutture di cui X è composta secondo la definizione ricorsiva
Esempio Teorema Ogni espressione aritmetica ha un numero uguale di parentesi aperte e chiuse Dimostrazione Procediamo per induzione sul numero di parentesi Base Una variabile e un numero hanno zero parentesi aperte e zero parentesi chiuse Induzione Assumiamo che E abbia n parentesi aperte e chiuse e F ne abbia m Ho tre modi per costruire induttivamente una espressione aritmetica : E ` F ha n ` m parentesi aperte e n ` m parentesi chiuse E ˆ F ha n ` m parentesi aperte e n ` m parentesi chiuse peq ha n ` 1 parentesi aperte e n ` 1 parentesi chiuse l
Esempio Teorema Ogni albero T ha un numero di nodi n ed un numero di archi e tale che n e ` 1 Dimostrazione Procediamo per induzione sulla struttura di T Base T ha n 1 ed e 0 Induzione Assumiamo che T i abbia n i nodi ed e i archi, con n i e i ` 1 Abbiamo : n 1 ` kÿ i 1 n i, e k ` kÿ i 1 e i
Esempio Segue : n 1 ` řk i 1 n i 1 ` řk i 1 p1 ` e iq ipotesi induttiva 1 ` k ` řk i 1 e i 1 ` e l
Induzione mutua Talvolta non è possibile dimostrare un singolo enunciato per induzione, perchè un enunciato dipende da altri enunciati Si deve dimostrare congiuntamente un gruppo di enunciati S 1 pnq, S 2 pnq,..., S k pnq per induzione su n
Esempio Push Start off on Push Teorema Dato l automa in figura S 1 pnq : Dopo n azioni di push, l automa si trova nello stato off se e solo se n è pari S 2 pnq : Dopo n azioni di push, l automa si trova nello stato on se e solo se n è dispari
Esempio Dimostrazione Procediamo per induzione su n Base (S 1 p0q, se) Dopo 0 push, l automa è nello stato off (S 1 p0q, solo se) 0 pari è sempre vero (S 2 p0q, se) 0 dispari (premessa) è falso, quindi implicazione vera (S 2 p0q, solo se) L automa è nello stato on dopo 0 push (premessa) è falso, quindi implicazione vera
Esempio Induzione Assumiamo S 1 pnq e S 2 pnq veri, e dimostriamo S 1 pn ` 1q e S 2 pn ` 1q (S 1 pn ` 1q, se) Da n ` 1 pari abbiamo n dispari. Applico l ipotesi induttiva S 2 pnq, parte se, ed ottengo che dopo n push, l automa è nello stato on. Dallo stato on abbiamo una transizione push allo stato off. Quindi dopo n ` 1 push, l automa è nello stato off (S 1 pn ` 1q, solo se) L automa è in stato off dopo n ` 1 push. Poiché vi è una sola transizione push entrante in off, l automa era in stato on dopo n push. Applico l ipotesi induttiva S 2 pnq, parte solo se, ed ottengo che n è dispari. Dunque n ` 1 è pari
Esempio (S 2 pn ` 1q, se) Da n ` 1 dispari abbiamo n pari. Applico l ipotesi induttiva S 1 pnq, parte se, ed ottengo che dopo n push, l automa è nello stato off. Dallo stato off abbiamo una transizione push allo stato on. Quindi dopo n ` 1 push, l automa è nello stato on (S 2 pn ` 1q, solo se) L automa è in stato on dopo n ` 1 push. Poiché vi è una sola transizione push entrante in on, l automa era in stato off dopo n push. Applico l ipotesi induttiva S 1 pnq, parte solo se, ed ottengo che n è pari. Dunque n ` 1 è dispari l
Alfabeto & stringhe Alfabeto : insieme finito e non vuoto di simboli atomici Esempio : Σ t0, 1u alfabeto binario Σ ta, b, c,..., zu insieme di tutte le lettere minuscole insieme di tutti i caratteri ASCII stampabili Stringa : Sequenza finita di simboli presi da un alfabeto 0011001 stringa su Σ t0, 1u Stringa vuota : La stringa con zero simboli (presi da un qualsiasi alfabeto) è denotata ɛ
Alfabeto & stringhe Lunghezza di una stringa : Numero di occorrenze (posizioni) per i simboli nella stringa w denota la lunghezza della stringa w 0110 4, ɛ 0 Potenze di un alfabeto : Σ k è l insieme delle stringhe di lunghezza k con simboli da Σ Σ t0, 1u Σ 1 t0, 1u; ambiguità tra Σ e Σ 1 Σ 2 t00, 01, 10, 11u Σ 0 tɛu Domanda : Quante stringhe ci sono in Σ 3??
Alfabeto & stringhe L insieme di tutte le stringhe su Σ è denotato Σ Abbiamo Σ Σ 0 Y Σ 1 Y Σ 2 Y Σ` Σ 1 Y Σ 2 Y Σ 3 Y Σ Σ` Y tɛu
Alfabeto & stringhe Concatenazione : Se x e y sono stringhe, allora xy è la stringa ottenuta mettendo una copia di y immediatamente dopo una copia di x Esempio : Per ogni stringa x : x 01101 y 110 xy 01101110 xɛ ɛx x ɛ è l elemento neutro della concatenazione
Alfabeto & stringhe Convenzioni : a, b, c,..., a 1, a 2,..., a i,... simboli di un alfabeto u, w, x, y, z stringhe per n ě 0, a n aa a (a ripetuto n volte) a 0 ɛ, a 1 a
Linguaggi Un linguaggio è un insieme di stringhe scelte da Σ, dove Σ è un alfabeto. L Ď Σ è un linguaggio Esempio : insieme delle parole della lingua italiana insieme dei programmi C senza errori sintattici insieme delle stringhe che consistono di n zeri seguiti da n uni, con n ě 0 tɛ, 01, 0011, 000111,...u insieme delle stringhe con un numero uguale di zeri e di uni tɛ, 01, 10, 0011, 0101, 1001,...u
Linguaggi Esempio : insieme dei numeri binari il cui valore è primo L p t10, 11, 101, 111, 1011,...u linguaggio vuoto H, non contiene alcuna stringa linguaggio tɛu, contiene la sola stringa vuota Non confondere questi due linguaggi : H tɛu
Linguaggi Rappresentazione estensiva di un linguaggio : L tɛ, 01, 0011, 000111,...u Posso definire un linguaggio in forma intensiva, usando un descrittore di insiemi : L tw enunciato su wu Esempio : tw w consiste di un numero uguale di 0 e 1u tw w è un intero binario che è primou tw w è un programma Java sintatticamente correttou
Linguaggi Spesso uso descrittori di insiemi espressi in forma matematica : L tw w 0 n 1 n, n ě 0u oppure, in forma semplificata, anche : L t0 n 1 n n ě 0u che risulta equivalente a : L tɛ, 01, 0011, 000111,...u Nota : non confondere i due linguaggi t0 n 1 n n ě 0u t0 n 1 n u, n ě 0
Linguaggi Esempio : t0 i 1 j i, j ě 1, i ě ju t0 i 1 j i, j ě 1, i ą j oppure i ă ju Non esiste una sintassi precisa per l uso dei descrittori di insiemi
Problemi di decisione Sia P un predicato che esprime una proprietà matematica Problema di decisione associato a P : assegnato in input un elemento x, decidere se P è vero per x Riformulazione mediante un linguaggio formale : L P tx x ha la proprietà Pu Assegnato in input un elemento x (visto come una stringa), x P L P??
Esempio Assegnato in input un numero binario x, decidere se x è primo Definiamo il linguaggio dei numeri primi L p t10, 11, 101, 111, 1011,...u Assegnata in input la stringa binaria x, x P L p??
Problemi di decisione Molti problemi matematici non sono problemi di decisione, ma richiedono una elaborazione che costruisca un risultato in output Esempio : assegnate le matrici A, B, costruire la matrice C A ˆ B problema decisionale associato : data una tripla xa, B, Cy di matrici, decidere se C A ˆ B
Problemi di decisione La risoluzione computazionale di un problema di elaborazione non può essere più semplice della risoluzione del problema di decisione associato Esempio : algoritmo di decisione che utilizza l algoritmo di elaborazione come subroutine (tecnica di riduzione) input xa, B, Cy uso subroutine su A, B per costruire C 1 A ˆ B se C 1 C rispondo si al problema di decisione, altrimenti rispondo no