INSIEMI NUMERABILI L’analisi matematica introduce il concetto di insieme numerabile come insieme i cui elementi possono essere “contati” ossia che possiede una funzione biettiva f: N ® S che mette in corrispondenza i numeri naturali con gli elementi dell’insieme.
INSIEMI NUMERABILI Insiemi che possiedono una funzione biettiva f: N ® S che mette in corrispondenza i numeri naturali con gli elementi dell’insieme. 1 3 2 4
INSIEMI RICORSIVAMENTE ENUMERABILI La nozione di computabilità porta a intro-durre un concetto più forte: quello di insieme ricorsivamente enumerabile (o semidecidibile)
INSIEMI RICORSIVAMENTE ENUMERABILI Un insieme S è ricorsivamente enumera-bile (o semidecidibile) se esiste un procedimento effettivo per costruirlo ossia se esiste una Macchina di Turing T capace di computare la funzione di corrispondenza f: N ® S.
INSIEMI RICORSIVAMENTE ENUMERABILI Quindi, la funzione f: N ® S non deve soltanto esistere... 1 2 3 4
INSIEMI RICORSIVAMENTE ENUMERABILI Quindi, la funzione f: N ® S non deve soltanto esistere... ...deve essere computabile! 1 2 3 4
INTERPRETAZIONE Dire che la funzione f: N ® S è computabile significa dire che l’insieme S può essere effettivamente costruito (per enumerazione) appunto calcolando elemento per elemento la funzione f.
INSIEMI RICORSIVAMENTE ENUMERABILI ATTENZIONE Il fatto che l’insieme S possa essere costruito NON SIGNIFICA AFFATTO che si possa decidere se un elemento appartiene all’insie-me stesso. Quello è tutto un altro problema!!!
INSIEMI RICORSIVI (o DECIDIBILI) Il problema di decidere dell’appartenenza di un elemento a un insieme porta a introdurre un ultimo concetto: quello di insieme ricorsivo (o decidibile)
INSIEMI RICORSIVI (o DECIDIBILI) Un insieme S è ricorsivo (o decidibile) se la sua funzione caratteristica è computabile ossia... f (x) = 1, se x S 0, se x S
INSIEMI RICORSIVI (o DECIDIBILI) ossia... se esiste una Macchina di Turing capace di rispondere sì o no, senza entrare in un ciclo infinito, alla domanda se un qualsiasi elemento appartiene all’insieme.
INSIEMI RICORSIVI (o DECIDIBILI) TEOREMA 1 Se un insieme è ricorsivo (decidibile) è anche ricorsivamente enumerabile (semidecidibile) ma non viceversa
INSIEMI RICORSIVI (o DECIDIBILI) TEOREMA 2 Un insieme S è ricorsivo (decidibile) se e solo se sia S sia il suo complemento N-S sono ricorsivamente enumerabili (semidecidibili)
VA BENE, PERÒ…. ... perché ci interessa tanto??
INSIEMI & LINGUAGGI I linguaggi di programmazione sono costruiti a partire da un certo alfabeto e ogni linguaggio è caratterizzato dall’insieme delle sue frasi lecite.
INSIEMI & LINGUAGGI I linguaggi di programmazione sono costruiti a partire da un certo alfabeto e ogni linguaggio è caratterizzato dall’insieme delle sue frasi lecite. Non ci basta che l’insieme delle frasi sia ricorsivamente enumerabile, cioè possa essere generato ... (ossia, che si possano generare le frasi “previste”)
INSIEMI & LINGUAGGI I linguaggi di programmazione sono costruiti a partire da un certo alfabeto e ogni linguaggio è caratterizzato dall’insieme delle sue frasi lecite. … è indispensabile anche poter decidere se una frase è giusta o sbagliata senza entrare in ciclo infinito e ciò richiede che l’insieme delle frasi del linguaggio sia ricorsivo (decidibile).
INSIEMI & LINGUAGGI Se così non fosse… il compilatore (o interprete) che deve tradurre le istruzioni del linguaggio in linguaggio macchina potrebbe non rispondere (entrando in un ciclo infinito) nel caso incontrasse una frase errata mentre noi vogliamo che si fermi e segnali l’errore!
LINGUAGGI E PROPRIETÀ Un linguaggio è un insieme di frasi Una frase è una sequenza di simboli appartenenti a un certo alfabeto Un linguaggio deve essere effettivamente generabile Un linguaggio di programmazione deve essere decidibile
ALCUNE DEFINIZIONI Alfabeto V (o vocabolario o lessico) È l’insieme dei simboli con cui si costruiscono le frasi Universo linguistico V* di un alfabeto V È l’insieme di tutte le frasi (sequenze finite di lunghezza arbitraria) di elementi di V. Linguaggio L su un alfabeto V È un sottoinsieme di V*.
LINGUAGGI & GRAMMATICHE Problema: Come specificare il sottoinsieme di V* che definisce il linguaggio? Risposta: Specificando il modo formale e preciso la sintassi delle frasi del linguaggio tramite una grammatica formale
GRAMMATICA FORMALE Una quadrupla VT,VN,P,S dove: VT è un insieme finito di simboli terminali VN è un insieme finito di simboli non terminali P è un insieme finito di produzioni, ossia di regole di riscrittura S è un particolare simbolo non-terminale detto simbolo iniziale o scopo della grammatica.
GRAMMATICA B.N.F. Una Grammatica B.N.F. è una grammatica in cui le produzioni hanno la forma X ::= A dove: X Î VN è un simbolo non terminale, e: A è una stringa, ossia una sequenza di simboli ciascuno appartenente all’alfabeto V = VN È VT.
FORMA B.N.F. COMPATTA Nel caso di più regole con la stessa parte sinistra: X ::= A1 .... X ::= AN Per comodità si stabilisce allora di poterle compattare in un’unica regola: X ::= A1 | A2 | .. | AN dove il simbolo | indica l’alternativa.
GRAMMATICA & LINGUAGGIO Una Grammatica B.N.F. definisce quindi un linguaggio sull’alfabeto terminale VT mediante un meccanismo di derivazione (o riscrittura) .
GRAMMATICA & LINGUAGGIO Data una grammatica G, si dice perciò Linguaggio LG generato da G l’insieme delle frasi di V derivabili dal simbolo iniziale S applicando le produzioni P
GRAMMATICHE, LINGUAGGI & AUTOMI RICONOSCITORI Grammatiche di diversa struttura comportano linguaggi con diverse proprietà e implicano automi di diversa “potenza computazionale” per riconoscere tali linguaggi.
CLASSIFICAZIONE DI CHOMSKY Le grammatiche sono classificate in 4 tipi in base alla struttura delle produzioni Tipo 0: nessuna restrizione sulle produzioni
CLASSIFICAZIONE DI CHOMSKY Le grammatiche sono classificate in 4 tipi in base alla struttura delle produzioni Tipo 1 (gramm. dipendenti dal contesto): produzioni vincolate alla forma: x A y ::= x a y con x,y,a Î (VTVN)*, AÎVN, a e
CLASSIFICAZIONE DI CHOMSKY Le grammatiche vengono classificate in 4 tipi in base alla struttura delle produzioni Tipo 2 (gramm. libere da contesto): produzioni vincolate alla forma A ::= a con AÎVN, aÎ(VTVN)*-{e}
CLASSIFICAZIONE DI CHOMSKY Le grammatiche vengono classificate in 4 tipi in base alla struttura delle produzioni Tipo 3 (grammatiche regolari): produzioni vincolate alla forma ricorsiva A ::= a | aB (ricorsiva a destra) A ::= a | Ba (ricorsiva a sinistra) con A,BÎVN, e aÎVT.
CLASSIFICAZIONE DI CHOMSKY In sintesi Tipo 0 (generiche) Tipo 1 (dipendenti da contesto) Tipo 2 (libere da contesto) Tipo 3 (regolari) Semplicità Automa riconoscitore Generalità
GRAMMATICHE & MACCHINE PER RICONOSCERE LINGUAGGI I linguaggi generati da grammatiche di tipo 1 (e quindi anche di tipo 2 e tipo 3) sono riconoscibili, ossia esiste un algoritmo per decidere se una frase appartiene o meno al linguaggio. Un tale procedimento non esiste invece, in generale, per grammatiche di tipo 0. Ma… CHI li riconosce?
GRAMMATICHE & MACCHINE PER RICONOSCERE LINGUAGGI Tipo 3 ® Automa a Stati Finiti (ASF) Tipo 2 ® Macchina a stack (ASF + stack) Tipo 1 ® Macchina di Turing con nastro limitato Tipo 0 ® SE è riconoscibile (può non esserlo), occorre una Macchina di Turing
AUTOMA A STATI FINITI Un macchina astratta molto più semplice di una Macchina di Turing niente nastro niente funzione di direzione, dfn() quindi, niente memoria illimitata! per questo si chiama “a stati finiti” gli stati sono la sua unica forma di memoria che riassume la storia passata spesso descritto con un grafo degli stati
AUTOMA A STATI FINITI Formalmente definito dalla quintupla: A, S, F, mfn, sfn dove A = insieme finito dei simboli di ingresso e uscita S = insieme finito degli stati F = insieme finito degli stati finali (F S) mfn: A S ® A (funzione di macchina) sfn: A S ® S (funzione di stato)
AUTOMA A STATI FINITI: ESEMPIO Riconoscimento di un identificatore P = { <id> ::= <lettera> { <lettera> | <cifra>} <lettera> ::= A | B | C | D | ... | Z <cifra> ::= 0|1|2|3|4|5|6|7|8|9 } Un identificatore corretto deve portare l’automa in uno stato finale di accettazione Un identificatore errato deve portare l’automa in uno stato finale di errore
AUTOMA A STATI FINITI: ESEMPIO lettera stato iniziale lettera o cifra S0 S1 stato finale di accettaz. cifra o altro simbolo altro simbolo S2 stato finale di errore qualunque simbolo
SINTASSI & SEMANTICA Sintassi: dà le regole per scrivere frasi corrette Semantica: attribuisce significato alle frasi corrette Attenzione: Non tutte le frasi sintatticamente corrette hanno anche significato
SINTASSI & SEMANTICA Ad esempio, la grammatica: P = { } <frase> ::= <soggetto> <verbo> <compl-ogg> <soggetto> ::= <articolo><nome> <articolo> ::= il <nome> ::= gatto | topo | sasso <verbo> ::= mangia | beve <compl-ogg> ::= <articolo> <nome> } consente anche di generare la frase “il sasso beve il topo” sintatticam. corretta... …ma senza senso!