Linguaggi Regolari e Linguaggi Liberi

Slides:



Advertisements
Presentazioni simili
I Linguaggi di programmazione
Advertisements

Automi finiti deterministici (DFA) (1)
Automi temporizzati.
Linguaggio C++ Selezione.
Sommario Nelle lezioni precedenti abbiamo introdotto tutti gli elementi che formano un particolare tipo di linguaggio logico, denominato linguaggio predicativo.
Sintassi (prima parte)
LR Parser Giuseppe Morelli. La maggior parte dei parser Bottom-Up è costituita dai cosiddetti parser LR(k) dove: L indica il verso dellanalisi della stringa.
Inizio… Linguaggi Linguaggi di programmazione Linguaggi di programmazione Linguaggi di programmazione Linguaggi di programmazione Linguaggi Formali Linguaggi.
If a cascata, switch, operatori logici
2/11/2004Laboratorio di Programmazione - Luca Tesei1 Progettazione Fase di progettazione di unapplicazione Fase di implementazione.
16/11/2004Laboratorio di Programmazione - Luca Tesei1 Espressioni booleane, confronti.
12/11/2004Laboratorio di Programmazione - Luca Tesei1 Caratteri – Input da Console Il tipo char Input dallo standard input.
26/10/2004Laboratorio di Programmazione - Luca Tesei1 Variabili e Oggetti Lo spazio di memoria di Java Le API di Java.
3/12/2004Laboratorio di Programmazione - Luca Tesei1 Sequenze di lunghezza variabile ArrayList Operazioni Ricerche.
5/11/2004Laboratorio di Programmazione - Luca Tesei1 Esercizi Su Progettazione e Implementazione di classi.
Costruzione delle tabelle di parsing LR canoniche
Costruzione di tabelle di Parsing SLR
29/10/2004Laboratorio di Programmazione - Luca Tesei1 Metodi e variabili istanza Definizione e chiamata di metodi Uso delle variabili istanza Documentazione.
18/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei1 Programmazione e Laboratorio 2004/05 Informazioni Introduttive.
9/11/2004Laboratorio di Programmazione - Luca Tesei1 Tipi numerici di base - Costanti Interi e decimali Definizione di costanti.
Programmazione e Laboratorio di Programmazione – Luca Tesei1 La Programmazione Cosè la programmazione? Concetti preliminari.
29/11/2004Laboratorio di Programmazione - Luca Tesei1 Ancora sulla progettazione/Pacchetti Concetti di coesione/accoppiamento/coerenza Uso dei package.
26/11/2004Laboratorio di Programmazione - Luca Tesei1 Input/Output Redirecting, scomposizione dellinput, uso di file.
2/11/2004Laboratorio di Programmazione - Luca Tesei1 Punto della situazione Da dove veniamo, dove andiamo.
Algoritmi e Programmazione
Precorsi di Informatica Dott. Antonio Cisternino Settembre 2003
Sistemi di Lindenmayer
INSIEMI INSIEME= gruppo di oggetti di tipo qualsiasi detti elementi dell’insieme. Un insieme è definito quando viene dato un criterio non ambiguo che.
1 Linguaggi di Programmazione - elementi Corso di Laurea in Informatica (AA 2005/2006) Gabriella Pasi e Carla Simone
Il ragionamento classico
Algoritmi e Dimostrazioni Stefano Berardi
9/12/2004Laboratorio di Programmazione - Luca Tesei1 Ereditarietà
Iterazione enumerativa (for)
Sistemi basati su conoscenza Conoscenza e ragionamento Prof. M.T. PAZIENZA a.a
TEORIA RAPPRESENTAZIONALE DELLA MISURA
Analisi e Sintesi di circuiti sequenziali
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
EQUAZIONI DI PRIMO GRADO
CORSO DI PROGRAMMAZIONE II Introduzione alla ricorsione
Modelli simulativi per le Scienze Cognitive Paolo Bouquet (Università di Trento) Marco Casarotti (Università di Padova)
Modelli simulativi per le Scienze Cognitive
Modelli simulativi per le Scienze Cognitive
Analisi e Sintesi di circuiti sequenziali. Definizione Una macchina sequenziale é un sistema nel quale, detto I(t) l'insieme degli ingressi in t, O(t)
INSIEMI NUMERABILI L’analisi matematica introduce il concetto di insieme numerabile come insieme i cui elementi possono essere “contati” ossia che possiede.
LINGUAGGI DI PROGRAMMAZIONE
IL GIOCO DELLA LOGICA.
Linguaggio C++ Fondamenti Un primo semplice esempio:
Introduzione ai linguaggi formali e alle stringhe
Un approccio soft per i primi tre anni della primaria
11/11/2004Laboratorio di Programmazione - Luca Tesei1 Operazioni numeriche - Input Espressioni, funzioni matematiche, classi involucro, Acquisizione di.
Università degli studi di Lecce
Informatica 3 V anno.
Misure ed Errori.
Didattica e Fondamenti degli Algoritmi e della Calcolabilità Terza giornata: principali classi di complessità computazionale dei problemi Guido Proietti.
Automi a pila (1) Un automa a pila (PDA) è M = (Q, S, G, d, q0, Z0, F) dove: Q insieme finito di stati S alfabeto finito di input 3. G alfabeto di pila.
Grammatiche Grammatiche libere da contesto Grammatiche regolari
Grammatiche non contestuali (1)
Macchine di Turing (1) Il modello di base ha un controllo finito, un nastro di input diviso in celle e una testa di lettura che esamina una cella alla.
Espressioni regolari (1)
L’ELABORATORE ELETTRONICO uno strumento in grado di eseguire insiemi di azioni (“mosse”) elementari le azioni vengono eseguite su oggetti (dati) per produrre.
Automi temporizzati.
Congettura di Collatz (Lothar Collatz, 1937)
Problemi, algoritmi e programmazione
Analisi matematica Introduzione ai limiti
LA TEORIA DEGLI INSIEMI. Il concetto di insieme è un concetto primitivo La parola insieme (o comunità, gregge, raccolta,...) la usiamo molto spesso: l’insieme.
Linguaggi e Grammatiche Alfabeto : insieme non vuoto di elementi detti simboli A = { a, b, c } Stringa : sequenza di simboli di un alfabeto ab abc abcab.
Linguaggi, stringhe e alfabeti. Linguaggi e grammatiche Un linguaggio è un sistema di comunicazione tra persone che permette di trasmettere informazioni.
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Lezioni di Ricerca Operativa Corso di Laurea in Informatica
INSIEMI E LOGICA PARTE QUARTA.
Transcript della presentazione:

Linguaggi Regolari e Linguaggi Liberi Potenza espressiva degli automi Potenza espressiva delle grammatiche 9/11/2004 Programmazione - Luca Tesei

Programmazione - Luca Tesei Linguaggi Regolari Tutti i linguaggi che possono essere accettati da automi a stati finiti non deterministici sono detti Linguaggi Regolari La definizione include linguaggi su tutti i possibili alfabeti  finiti 9/11/2004 Programmazione - Luca Tesei

Determinismo vs Non determinismo Abbiamo visto che, tramite la costruzione dei sottoinsiemi, un qualsiasi automa non deterministico può essere trasformato in uno deterministico equivalente Inoltre un automa deterministico può essere visto come un particolare automa non deterministico Pertanto in realtà è superfluo dire, nella definizione di linguaggi regolari, che gli automi debbano essere non deterministici La classe di linguaggi accettati da automi deterministici è uguale a quella dei linguaggi accettati da automi non deterministici 9/11/2004 Programmazione - Luca Tesei

Programmazione - Luca Tesei Potere espressivo In questo caso si dice che i due formalismi, gli automi deterministici e non deterministici, hanno lo stesso potere espressivo Oltre a quello degli automi deterministici, anche il formalismo delle espressioni regolari ha lo stesso potere espressivo degli automi non deterministici Una costruzione per costruire un NFA a partire da una qualsiasi espressione regolare si vedrà nel corso di Compilatori 9/11/2004 Programmazione - Luca Tesei

Programmazione - Luca Tesei Linguaggi Regolari La classe dei linguaggi regolari può essere quindi specificata equivalentemente con tre tipi diversi di formalismi: Automi non deterministici (NFA) Automi deterministici (DFA) Espressioni Regolari Questi tre formalismi hanno tutti lo stesso potere espressivo 9/11/2004 Programmazione - Luca Tesei

Potere espressivo superiore Ma tutti i linguaggi sono regolari? La risposta è NO Ci sono dei linguaggi che non possono essere specificati con NFA (o DFA o espressioni regolari) I linguaggi di questo tipo sono detti non regolari 9/11/2004 Programmazione - Luca Tesei

Programmazione - Luca Tesei Un esempio classico L’esempio classico di linguaggio non regolare è il seguente L = { anbn | n  0 } È impossibile scrivere un automa o un’espressione regolare che accetti/denoti questo linguaggio La dimostrazione di questo enunciato è interessante e può essere trovata sulla dispensa alternativa di sintassi 9/11/2004 Programmazione - Luca Tesei

Programmazione - Luca Tesei Limiti degli automi Intuitivamente il motivo è che gli automi non possono “contare”, cioè non possono implementare un contatore che possa assumere un qualsiasi valore intero (la n) in modo da accettare stringhe in cui ci sia una corrispondenza fra il numero di certi elementi e il numero di altri elementi 9/11/2004 Programmazione - Luca Tesei

Potere espressivo delle grammatiche È facile scrivere una grammatica libera dal contesto per il linguaggio visto: S  aSb |  In effetti si ha che le grammatiche libere dal contesto hanno un potere espressivo maggiore degli automi/espressioni regolari Ciò significa più precisamente che: Ogni linguaggio regolare può essere generato con una grammatica Esiste almeno un linguaggio non regolare che è accettato da una grammatica 9/11/2004 Programmazione - Luca Tesei

Potere Espressivo delle grammatiche Universo dei linguaggi L = { anbn | n  0 } Linguaggi generati da grammatiche libere Linguaggi Regolari 9/11/2004 Programmazione - Luca Tesei

Potere espressivo delle grammatiche Per mostrare la seconda parte basta usare il linguaggio { anbn | n  0 } Per la prima parte definiamo un algoritmo che, dato un qualsiasi automa (deterministico o no), costruisce una grammatica equivalente 9/11/2004 Programmazione - Luca Tesei

Algoritmo: dagli automi alle grammatiche Input: Automa <S, , s0, move, F> Output: Grammatica <V, , S, P> equivalente Costruzione dei simboli non terminali di V e dello stato iniziale: Per ogni stato s di S costruiamo un simbolo non terminale <s> in V Poniamo <s0> come simbolo iniziale S della grammatica 9/11/2004 Programmazione - Luca Tesei

Algoritmo: dagli automi alle grammatiche Costruzione delle produzioni P: Per ogni s  S e per ogni a : Se c’è nell’automa una transizione etichettata con a che dallo stato s va nello stato s’ allora inseriamo la produzione <s>  a <s’> in P Se c’è nell’automa una transizione etichettata con a che dallo stato s va nello stato s’ e s’  F allora inseriamo una produzione <s>  a in P Se s0  F allora inseriamo la produzione <s0>   in P 9/11/2004 Programmazione - Luca Tesei

Programmazione - Luca Tesei Esempio {a, b, c} a b 1 2 c {a, b, c} 3 9/11/2004 Programmazione - Luca Tesei

Programmazione - Luca Tesei Esempio Seguendo le indicazioni dell’algoritmo otteniamo la seguente grammatica: <0>  a <0> | b <0> | c <0> | a <1> <1>  b <2> <2>  c <3> | c <3>  a <3> | b <3> | c <3> | a | b | c 9/11/2004 Programmazione - Luca Tesei

Programmazione - Luca Tesei Grammatiche regolari Le grammatiche in cui le produzioni sono tutte della forma A  aB oppure A  a oppure A   Sono chiamate Grammatiche Regolari e hanno lo stesso potere espressivo degli automi/espressioni regolari L’algoritmo visto genera grammatiche regolari 9/11/2004 Programmazione - Luca Tesei

Programmazione - Luca Tesei Linguaggi liberi Tutti i linguaggi che possono essere specificati attraverso una grammatica libera dal contesto sono detti Linguaggi Liberi I linguaggi liberi, sappiamo dal potere espressivo, includono i linguaggi regolari più altri linguaggi non regolari come { anbn | n  0 } Ma i linguaggi non liberi sono tutti i possibili linguaggi? La risposta è ancora NO 9/11/2004 Programmazione - Luca Tesei

Programmazione - Luca Tesei Linguaggi non liberi Esistono dei linguaggi che non possono essere generati da nessuna grammatica libera dal contesto: L = {w c wR | w  *, wR è w rovesciata} L = {am bm cm | m 0} ... Esistono infiniti linguaggi non liberi. Esistono infiniti linguaggi non regolari, ma liberi. Esistono gerarchie di formalismi più potenti delle grammatiche libere dal contesto 9/11/2004 Programmazione - Luca Tesei

Potere Espressivo delle grammatiche Universo dei linguaggi L = { anbn | n  0 } Linguaggi generati da grammatiche libere Linguaggi Regolari L = {ambmcm | m  0 } 9/11/2004 Programmazione - Luca Tesei