Introduzione ai linguaggi formali e alle stringhe

Slides:



Advertisements
Presentazioni simili
Automi finiti deterministici (DFA) (1)
Advertisements

Automi temporizzati.
MATEMATICA PER L’ECONOMIA
Alfabeti, Stringhe e Linguaggi
1 A B C D … a b c d … Il concetto di insieme 1
Il linguaggio della Matematica: Insiemi e operazioni
I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI
Inizio… Linguaggi Linguaggi di programmazione Linguaggi di programmazione Linguaggi di programmazione Linguaggi di programmazione Linguaggi Formali Linguaggi.
Linguaggi Regolari e Linguaggi Liberi
Precorsi di Informatica Dott. Antonio Cisternino Settembre 2003
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
SOTTOINSIEMI, INCLUSIONE
Identità È un’uguaglianza valida per qualsiasi valore attribuito alla x 2x + x = 3x se x =5 2*5 +5 =3* = 15 se x=8 2*8 + 8 =3*8 16.
Programmazione Procedurale in Linguaggio C++
L’algebra come linguaggio simbolico
Caratteri e stringhe di caratteri
Sistemi basati su conoscenza Comunicazione basata sul linguaggio naturale Prof. M.T. PAZIENZA a.a
Sistemi basati su conoscenza Conoscenza e ragionamento Prof. M.T. PAZIENZA a.a
Esercizio 4 Data una stringa P di lunghezza m e definita sullalfabeto, scrivere un programma PERL per calcolare la seguente funzione: PREFIX_FUNCTION:
I NUMERI REALI (N, Z, Q, I, R) come ampliamenti successivi
Funzioni, Rappresentazioni e Coscienza
A cura Prof. Salvatore MENNITI
Teoria degli INSIEMI A cura Prof. Salvatore MENNITI.
Tabelle hash.
Modelli simulativi per le Scienze Cognitive
Alfabeti, Stringhe e Linguaggi Def: un insieme è una collezione non ordinata di oggetti o elementi Gli insiemi sono scritti tra { }. Gli elementi sono.
Semantica di Tarski.
Corso di Matematica Discreta cont. 2
Vettori e Funzioni 3 Maggio Esercizio 1 Si scriva un programma in linguaggio C che, dopo aver acquisito il contenuto di un vettore di interi da.
INSIEMI NUMERABILI L’analisi matematica introduce il concetto di insieme numerabile come insieme i cui elementi possono essere “contati” ossia che possiede.
PROBLEMI RISOLUBILI E COMPUTABILITÀ
LINGUAGGI DI PROGRAMMAZIONE
Biologia Computazionale - Algoritmi
GLI INSIEMI Presentazione a cura della Prof.ssa anNUNZIAta DI BIASE
RAPPRESENTAZIONE DELL'INFORMAZIONE
CAP. 2 ANALISI LESSICALE 2.1 Il ruolo dell'analizzatore lessicale
Dispensa a cura del prof. Vincenzo Lo Presti
Lo sviluppo del software e i linguaggi di programmazione
Programmazione di calcolatori
Programmazione di Calcolatori
TEORIA DEGLI INSIEMI INIZIO.
CONCETTI DI BASE 1.0 FONDAMENTI 1.1 HARDWARE 1.2 SOFTWARE 1.3 RETI
Grammatiche, Linguaggio e Automi R. Basili TAL - a.a
AB =x/xA  xB Unione tra insiemi o
Rappresentazione dell’informazione nel calcolatore.
Il modello relazionale. Modello logico dei dati basato su concetti relazione e tabella Relazione: da teoria degli insiemi Tabella: rappresentazione grafica.
Fondamenti di Informatica1 Memorizzazione su calcolatore L'unità atomica è il bit (BInary DigiT) L'insieme di 8 bit è detta byte Altre forme di memorizzazione:
Linguaggi di programmazione: panoramica Linguaggi di programmazione ad alto livello: – –Programmazione procedurale – –Programmazione object oriented –
Grammatiche Grammatiche libere da contesto Grammatiche regolari
Query languages per Basi di Dati Relazionali  Algebra Relazionale:  basato sulla teoria degli insiemi  procedurale  usato per l’implementazione di.
UNIVERSITA’ DI MILANO-BICOCCA LAUREA MAGISTRALE IN BIOINFORMATICA Corso di BIOINFORMATICA: TECNICHE DI BASE Prof. Giancarlo Mauri Lezione 3 Mappe genetiche.
public class volume { public static void main (String[] args) { final double bott_vol =2.0; final double latt_vol = 0.355; int bott_num = 4; int latt_num.
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.
La codifica dei numeri.
Automi temporizzati.
Congettura di Collatz (Lothar Collatz, 1937)
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Programmazione dei Calcolatori Elettronici
Insiemi DE VITIS GABRIELE.
FUNZIONE: DEFINIZIONE Una FUNZIONE è una LEGGE che ad ogni elemento di un dato insieme A, detto DOMINIO, associa uno ed un solo elemento di un insieme.
“ Pseudocodice ” Un programma per computer lavorerà su in insieme di “ variabili ” contenenti i dati del problema, soluzioni intermedie, soluzioni finali.
FUNZIONE: DEFINIZIONE
TEORIA ELEMENTARE DEGLI INSIEMI
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.
GLI INSIEMI per la classe 1ai Prof: Paolo Govoni
IL NUMERO …qualche idea…..
Transcript della presentazione:

Introduzione ai linguaggi formali e alle stringhe

Insiemi finiti e infiniti Gli insiemi possono essere finiti o infiniti Infinito numerabile : può essere messo in uno-a –uno con i numeri naturali (ad esempio , numeri razionali , numeri interi ) Infinito non numerabile: non può essere messo in uno-a- uno corrispondenza con i numeri naturali (un esempio di infinito non numerabile: i numeri reali )

Tipi di dati e stringhe Nella vita reale , usiamo diversi tipi di dati : numeri interi , reali , vettori , numeri complessi, grafici , programmi Tutti i possibili dati possono essere codificati come stringhe Così possiamo restringerci ad un solo tipo di dati : le stringhe

Stringhe Un alfabeto è un insieme finito di simboli distinti {0 , 1} , {0 , 1,2, . . . , 9} , {a, b , c} Indichiamo un alfabeto generico con S Una stringa è una sequenza di lunghezza finita di elementi di S esempio , se S = {a , b} allora aba , aaaa , .... , ababababab sono alcune stringhe sull'alfabeto S

Stringhe La lunghezza di una stringa S è il numero di simboli nella stringa che indichiamo con |S| ad esempio se S= aba, allora |S| = 3 Il simbolo e indica la stringa vuota cdi lunghezza 0 La concatenazione di stringhe Se S = a1a2a3 … an e T= b1b2b... bm allora ST = a1a2a3 … an b1b2b... bm La concatenazione è associativa con e come elemento di identità (infatti S e = eS = S ) an indica una stringa di n a concatenate Esempio se S= {0 , 1} , allora 05 = 00000 inoltre per definizione abbiamo : a0 = e e an+1 = ana

Stringhe L' inversione di una stringa S è indicata con SR Se S = a1 a2 … an allora SR = an an-1 … a1 Una sottostringa di una stringa S è una stringa y t.c. S= xyz con |x|,|y|,|z| ≥ 0 e |x|+|y|+|z|= |S| Se S= xy con |x|, |y| ≥ 0 e |x| + |y| =|S|, allora x è prefisso di S e y è un suffisso di S Dato S= abaab , e, a, aba , e abaab sono alcuni prefissi e, abaab , aab , e baab sono alcuni suffissi Se x è una stringa , scriviamo xn per la stringa ottenuta concatenando n copie di x . (aab)3 = aabaabaab

Stringhe L' insieme di tutte le possibili stringhe sull’alfabeto S è denotato con S* Definiamo S0 = {e} e Sn = Sn-1 S (con qualche abuso della notazione la concatenazione è applicata insiemi di stringhe) Così Sn rappresenta le stringhe di n caratteri Sn = { S | S = xy e x  Sn -1 e y  S }

Cosa è un linguaggio? Un insieme di regole per esprimere idee, fatti, concetti Definire un linguaggio richiede di specificare un insieme di simboli e delle regole per manipolare questi simboli Un linguaggio formale è l’insieme delle stringhe di simboli che si possono generare applicando le regole

Linguaggio L può essere finito o infinito S* S Un linguaggio L su un alfabeto S è un qualsiasi sottoinsieme di S* L può essere finito o infinito S* S L FINITO INFINITO

Esempi di linguaggi L = S* - La madre di tutte i linguaggi (comprende tutte le stringhe)! L = {a, ab, aab} - Un linguaggio finito (Descrizione per enumerazione) L = {anbn : n ≥_ 0} = {e , ab , aabb , aaabbb ….} L = { S | S = SR} - Tutte le stringhe palindromi (che sono uguali alla loro inversione) L = { S| S = xx} - Tutte le stringhe formate da duplicare qualche stringa una volta L = {S | S è un programma Python sintatticamente corretto} Sn

Sintassi dei linguaggi di programmazione Per i linguaggi di programmazione S = ASCII dove ASCII è l’insieme dei caratteri alfanumerici cioè tutti i caratteri presenti sulla tastiera dei computer (standard internazionale) Quindi ogni linguaggio di programmazione L abbiamo che LASCII* Un programma è una frase di L quindi un programma è una sequenza di caratteri alfanumerici

Sintassi e Semantica dei linguaggi Un linguaggio formale è l’insieme delle stringhe che si possono scrivere utilizzando le regole del linguaggio Analisi sintattica: verificare se una stringa di simboli verifica le regole es. “Oggi piove”, è sintatticamente corretta; “noi vado a casa”, non è sintatticamente corretta Analisi semantica: verificare se una stringa sintatticamente corretta ha un significato es. “oggi piove” è semanticamente corretta,”io peso meno di 50 chili e più di 80 chili” è sintatticamente corretta ma non ha una semantica corretta.

Operazioni su linguaggi Poiché i linguaggi sono insiemi, tutte le operazioni insiemistiche abituali come intersezione e unione, ecc. sono definite Complementazione è definita rispetto all’universo S : Lc = S - L Esempi: Se L , L1 e L2 sono linguaggi : L1 È L2 e L1 Ç L2 (unione e intersezione) L1 . L2 = {xy | x L1 e y 2 L2} - concatenazione di linguaggi Rappresentiamo L . L come L2 e Li+1 = L . Li Iterazione L* ={Li | i ≥0 }

Descrizione di linguaggi Linguaggi Interessanti sono infiniti Abbiamo bisogno di descrizioni finite di insiemi infiniti esempio L = {anbn : n ≤ 0}, decrive il linguaggio infinito di a seguite da un pari numero di b Dobbiamo essere in grado di utilizzare queste descrizioni in procedure meccanizzabile (programmi)

Problemi di decisione Un problema di decisione è una funzione il cui valore è SI / NO Abbiamo bisogno di specificare l'insieme A di possibili ingressi (di solito A è infinito ) il sottoinsieme B di A delle istanze SI (solitamente B è anche infinito ) Il sottoinsieme B dovrebbe avere una descrizione finita Esempi, A: numeri interi x è pari? X è un numero primo?

Problemi su linguaggi I oroblemi diinteresse sui linguaggi sono problemi di decisione Esempi Data una stringa x, x rappresenta un programma Python corretto? Data una stringa x di caratteri alfabetici è una parola palindroma? Data una stringa formata da caratteri “a” e “b” il numero di “a” e “b” sono uguali?