Linguaggi Regolari e Linguaggi Liberi

Похожие документы
Linguaggi Regolari e Linguaggi Liberi

Espressioni regolari

Le grammatiche formali

Linguaggi regolari e automi a stati finiti

Linguaggio universale, riduzioni, e teorema di Rice. Linguaggio universale, riduzioni, e teorema di Rice

Grammatiche. Grammatiche libere da contesto Grammatiche regolari Potenza delle grammatiche libere e regolari Struttura di frase: Alberi di derivazione

Pumping lemma per i linguaggi Context-free

GRAMMATICHE DEI LINGUAGGI DI PROGRAMMAZIONE. Cosimo Laneve

Grammatiche Parse trees Lezione del 17/10/2012

Appunti di informatica. Lezione 7 anno accademico Mario Verdicchio

Verificare se una grammatica e LL(1) e costruirne la tabella di parsing. Verificare se una grammatica e LR(0) e costruirne la tabele ACTION e GOTO

Forma Normale di Chomsky

Alcune Tracce dei Precedenti Esami del Dottorato di Siena in Logica Matematica ed Informatica Teorica

Forme Normali. Forma normale di Chomsky. E caratterizzata da regole di due tipi. A! BC dove A, B, C $ V N A! a con a $ V T. Forma normale di Greibach

Cosa è l Informatica?

Informatica Teorica. Sezione Cremona + Como. Appello del 20 Luglio 2004

Definizione di Grammatica

ELEMENTI DI PROGRAMMAZIONE a.a. 2013/14 UNA GERARCHIA DI MACCHINE

IL TEOREMA FONDAMENTALE DELL ARITMETICA: DIMOSTRAZIONE VELOCE.

Esercizi di Fondamenti di Informatica per la sicurezza. Stefano Ferrari

Espressioni regolari. Espressioni regolari

Automi Automi finiti: macchine a stati su sistemi di transizioni finiti Modellare con TS e specificare con automi: si usa lo stesso tipo di

Corso di Linguaggi di Programmazione + Laboratorio Docente: Marco de Gemmis

Aniello Murano Automi e Pushdown

Proprieta dei Linguaggi regolari

Il concetto di calcolatore e di algoritmo

Complementi di Analisi Matematica Ia. Carlo Bardaro

8. Completamento di uno spazio di misura.

Corso di Informatica di Base

Fondamenti dell Informatica: Linguaggi Formali e Calcolabilità

Linguaggi di Programmazione

Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing

ELEMENTI DI PROGRAMMAZIONE a.a. 2012/13 MACCHINE, ALGORITMI, PROGRAMMI

Nozioni introduttive e notazioni

Appunti del corso di Informatica 1 (IN110 Fondamenti) 3 Modelli di calcolo

Reti Sequenziali. Reti Sequenziali. Corso di Architetture degli Elaboratori

LINGUAGGI DI ALTO LIVELLO. Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware

1 Giochi di Ehrenfeucht-Fraissé e Logica del Prim ordine

Insiemi, Numeri, Terminologia. Prof. Simone Sbaraglia

ALGEBRA I: SOLUZIONI QUINTA ESERCITAZIONE 9 maggio 2011

Macchina di Turing ... !!... !!! a b b! b a! Nastro di Input. testina. s t q i. s r. Unità di Controllo q j S / D / F

Appunti di Linguaggi Formali

Unità Didattica 2 I Linguaggi di Programmazione

Analisi lessicale (scanner)

Analizzatore lessicale o scanner. Lo scanner rappresenta un'interfaccia fra il programma sorgente e l'analizzatore sintattico o parser.

Espressioni regolari descrivono i linguaggi regolari. Un FA (NFA o DFA) è un metodo per costruire una macchina che riconosce linguaggi regolari.

Introduzione al Linguaggio C Corso di Informatica Laurea in Fisica

Un insieme si dice ben definito quando si può stabilire in modo inequivocabile se un oggetto appartiene o non appartiene a tale insieme

Fondamenti di Informatica. Algoritmo. Algoritmo funzionale. Prof.ssa Enrica Gentile Informatica e Comunicazione Digitale a.a.

Dispense del corso di Linguaggi di programmazione e laboratorio Linguaggi formali(versione non definitiva con diversi refusi) Francesco Sisini

acuradi Luca Cabibbo e Walter Didimo Esercizi di Informatica teorica - Luca Cabibbo e Walter Didimo 1

Corso di Crittografia Prof. Dario Catalano. Firme Digitali

PROLOG E ANALISI SINTATTICA DEI LINGUAGGI Quando si vuole definire in modo preciso la sintassi di un linguaggio si ricorre a una grammatica G=(V n,v t

Anno 1. Teoria degli insiemi: definizioni principali

Presentazione di gruppi

Luca Costabile Esercizi di Logica Matematica Dispensa Calcolo Proposizionale 1

Algoritmi e Linguaggi

Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing

A lezione sono stati presentati i seguenti passi per risolvere un problema:

DIMOSTRAZIONI DI EQUIVALENZE, SUI CONNETTIVI E SULL'AMBIGUITA' DELLA SINTASSI. Corso di Logica per la Programmazione

Automi a stati finiti

1. Automi a stati finiti: introduzione

LA METAFORA DELL UFFICIO

1 Equazioni parametriche e cartesiane di sottospazi affini di R n

La matematica non è un opinione, lo è oppure...?

1. equivalenze e implicazioni logiche. Esercizio 1.2. Trovare le implicazioni che legano i seguenti enunciati (x, y R):

Cosa dobbiamo già conoscere?

04 - Logica delle dimostrazioni

Linguaggi di programmazione - Principi e paradigmi 2/ed Maurizio Gabbrielli, Simone Martini Copyright The McGraw-Hill Companies srl

Linguaggi, grammatiche, espressioni regolari

Транскрипт:

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

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 2

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 3

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 4

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 5

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 6

Un esempio classico L esempio classico di linguaggio non regolare è il seguente L = { a n b n 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 7

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 8

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 9

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

Potere espressivo delle grammatiche Per mostrare la seconda parte basta usare il linguaggio { a n b n 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 11

Algoritmo: dagli automi alle grammatiche Input: Automa <S, Σ, s 0, 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 <s 0 > come simbolo iniziale S della grammatica 9/11/2004 Programmazione - Luca Tesei 12

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 s 0 F allora inseriamo la produzione <s 0 > ε in P 9/11/2004 Programmazione - Luca Tesei 13

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

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 15

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 16

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 { a n b n n 0 } Ma i linguaggi non liberi sono tutti i possibili linguaggi? La risposta è ancora NO 9/11/2004 Programmazione - Luca Tesei 17

Linguaggi non liberi Esistono dei linguaggi che non possono essere generati da nessuna grammatica libera dal contesto: L = {w c w R w Σ*, w R è w rovesciata} L = {a m b m c m 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 18

Potere Espressivo delle grammatiche Universo dei linguaggi Linguaggi generati da grammatiche libere L = { a n b n n 0 } L = {a m b m c m m 0 } Linguaggi Regolari 9/11/2004 Programmazione - Luca Tesei 19