Introduzione al corso - Dipartimento di Informatica e Sistemistica

Informatica teorica
Lez. n 1 – Introduzione al corso
Introduzione al corso
Prof. Giorgio Ausiello
Università di Roma “La Sapienza”
Informatica teorica
Lez. n 1 – Introduzione al corso
Argomenti della lezione
Î Obiettivi e programma del corso
Î Alfabeti, stringhe, linguaggi
Î Operazioni su linguaggi
Î Espressioni regolari
Prof. Giorgio Ausiello
Università di Roma “La Sapienza”
Informatica teorica
Lez. n 1 – Introduzione al corso
Per studiare le proprietà
fondamentali di algoritmi,
programmi e calcolatori è
necessario rappresentarli mediante
modelli astratti e descrivere
le proprietà stesse in termini
formali e matematici. La disciplina
nel cui ambito si svolgono tali studi
è l’informatica teorica
Prof. Giorgio Ausiello
Università di Roma “La Sapienza”
Informatica teorica
Lez. n 1 – Introduzione al corso
Nel corso di informatica
teorica studieremo
Æ la definizione formale dei
linguaggi e le loro proprietà
sintattiche
Æ alcuni modelli di calcolo
elementari (macchine astratte e
linguaggi di programmazione)
per rappresentare algoritmi
Prof. Giorgio Ausiello
Università di Roma “La Sapienza”
Informatica teorica
Lez. n 1 – Introduzione al corso
Nel corso di informatica
teorica studieremo
Æ i limiti teorici del potere
computazionale dei calcolatori e
il concetto di calcolabilità
Æ i limiti pratici dei calcolatori ed
i problemi computazionalmente
intrattabili
Prof. Giorgio Ausiello
Università di Roma “La Sapienza”
Informatica teorica
Lez. n 1 – Introduzione al corso
Al termine del corso
lo studente dovrebbe saper
Æ caratterizzare la struttura
sintattica di un testo mediante
grammatiche o automi
Æ formalizzare un sistema di calcolo
definendone i concetti essenziali
(stato, computazione ecc.)
Prof. Giorgio Ausiello
Università di Roma “La Sapienza”
Informatica teorica
Lez. n 1 – Introduzione al corso
Al termine del corso
lo studente dovrebbe saper
Æ formulare semplici programmi
utilizzando diversi paradigmi
computazionali: macchine a stati,
macchine a registri, linguaggi
funzionali
Æ riconoscere, almeno in casi
elementari, la complessità
di un problema
Prof. Giorgio Ausiello
Università di Roma “La Sapienza”
Informatica teorica
Lez. n 1 – Introduzione al corso
Programma del corso
Æ Linguaggi formali e automi
Æ Macchine di Turing e calcolabilità
Æ Modelli di calcolo per linguaggi
imperativi e funzionali
Æ Complessità di algoritmi e
problemi
Prof. Giorgio Ausiello
Università di Roma “La Sapienza”
Informatica teorica
Lez. n 1 – Introduzione al corso
Oltre alle videolezioni ed al sito
web di supporto (contenente
esercizi e note su argomenti
particolari), il materiale didattico è
costituito dal testo:
G. Ausiello, F. d’Amore, G. Gambosi,
Linguaggi, Modelli, Complessità,
FrancoAngeli, 2003
Prof. Giorgio Ausiello
Università di Roma “La Sapienza”
Informatica teorica
Lez. n 1 – Introduzione al corso
Alfabeti, Stringhe,
Linguaggi
Prof. Giorgio Ausiello
Università di Roma “La Sapienza”
Informatica teorica
Lez. n 1 – Introduzione al corso
Un alfabeto è un insieme finito non
vuoto di simboli, chiamati caratteri
Esempio
L’insieme {0,1,2,3,4,5,6,7,8,9} è
l’alfabeto decimale
Prof. Giorgio Ausiello
Università di Roma “La Sapienza”
Informatica teorica
Lez. n 1 – Introduzione al corso
alfabeto (minuscolo) della lingua
italiana:
{a,b,c,d,e,f,g,h,i,l,m,n,o,p,q,r,s,t,u,v,z}
alfabeto dei numeri romani:
{I, V, X, L, C, D, M}
alfabeto del linguaggio C:
{a, .. ,z,A, .. ,Z,0, …
...,9,+,-,*,/,<,>,=,->,&,%,\,!, #,[,],...}
Prof. Giorgio Ausiello
Università di Roma “La Sapienza”
Informatica teorica
Lez. n 1 – Introduzione al corso
Dato un alfabeto S, una stringa
(o parola) è una sequenza finita di
caratteri di S
Esempio
MCMXLI è una stringa sull’alfabeto
dei numeri romani
Prof. Giorgio Ausiello
Università di Roma “La Sapienza”
Informatica teorica
Lez. n 1 – Introduzione al corso
Il numero di caratteri di una stringa
x è detto lunghezza della stringa e
si denota con |x|. Una stringa
costituita da zero caratteri è detta
stringa nulla (o vuota). La stringa
vuota si denota con ε
Esempio
|MCMXLI| = 6
|ε| = 0
Prof. Giorgio Ausiello
Università di Roma “La Sapienza”
Informatica teorica
Lez. n 1 – Introduzione al corso
L’insieme di tutte le stringhe su un
alfabeto Σ (inclusa la stringa vuota)
si denota Σ*
+ denotiamo l'insieme
Con Σ+
delle stringhe non vuote.
Pertanto,
Prof. Giorgio Ausiello
+ ∪ {ε}
Σ∗∗ = Σ+
Università di Roma “La Sapienza”
Informatica teorica
Lez. n 1 – Introduzione al corso
Sull’insieme Σ* possiamo definire
l’operazione di concatenazione,
che si denota con ° e che consiste
nel giustapporre due stringhe
Esempio
fatto ° rino = fattorino
Prof. Giorgio Ausiello
Università di Roma “La Sapienza”
Informatica teorica
Lez. n 1 – Introduzione al corso
La concatenazione è associativa.
Ad esempio:
sol ° (fa ° tara)=(sol ° fa) ° tara =
=solfatara
La concatenazione non è
commutativa. Infatti
pe ° ra = pera ≠ ra ° pe =rape
Prof. Giorgio Ausiello
Università di Roma “La Sapienza”
Informatica teorica
Lez. n 1 – Introduzione al corso
Chiaramente data una qualunque
stringa x,
x°ε=ε°x=x
ε è l’elemento neutro della
concatenazione
Prof. Giorgio Ausiello
Università di Roma “La Sapienza”
Informatica teorica
Lez. n 1 – Introduzione al corso
La struttura algebrica <Σ*, °, ε> è
un monoide, cioè un insieme chiuso
rispetto all’operazione associativa
di concatenazione e dotato di
elemento neutro rispetto a tale
operazione (monoide sintattico)
Prof. Giorgio Ausiello
Università di Roma “La Sapienza”
Informatica teorica
Lez. n 1 – Introduzione al corso
Un linguaggio è un sottoinsieme
di Σ*
Esempio
Dato l'alfabeto {I, V, X, L, C, D, M},
l'insieme di tutti i numeri romani
da 1 a 1000 è un linguaggio
Prof. Giorgio Ausiello
Università di Roma “La Sapienza”
Informatica teorica
Lez. n 1 – Introduzione al corso
Altri esempi
Dato l'alfabeto {a, b}, l'insieme
{annbnn | n > 0} è il linguaggio di tutte
le stringhe costituite da una
sequenza di n a (n>0), seguite da
altrettante b
Prof. Giorgio Ausiello
Università di Roma “La Sapienza”
Informatica teorica
Lez. n 1 – Introduzione al corso
Altri esempi
Dato l'alfabeto del linguaggio C,
l'insieme di tutti i programmi
corretti (che vengono compilati
senza segnalazioni di errore) è un
linguaggio
Prof. Giorgio Ausiello
Università di Roma “La Sapienza”
Informatica teorica
Lez. n 1 – Introduzione al corso
In particolare, dato un alfabeto Σ :
Æ Σ stesso è un linguaggio
Æ Σ* è un linguaggio
Æ l'insieme che non contiene
nessuna stringa, denotato Λ o Ø è
un linguaggio (detto linguaggio
vuoto)
Prof. Giorgio Ausiello
Università di Roma “La Sapienza”
Informatica teorica
Lez. n 1 – Introduzione al corso
Operazioni su linguaggi
Sui linguaggi possono essere
effettuate sia le operazioni
insiemistiche (unione, intersezione,
complementazione) sia operazioni
definite sul monoide sintattico
(prodotto, potenza e iterazione)
Prof. Giorgio Ausiello
Università di Roma “La Sapienza”
Informatica teorica
Lez. n 1 – Introduzione al corso
Siano L1 ed L2 linguaggi definiti
sull’alfabeto Σ
unione
L1 ∪ L2 = {x ∈ Σ*| x ∈ L1 ∨ x ∈ L2}
L1 ∪ Λ = L1
Prof. Giorgio Ausiello
Università di Roma “La Sapienza”
Informatica teorica
Lez. n 1 – Introduzione al corso
intersezione
L1 ∧ L2 = {x ∈ Σ*| x ∈ L1 ∧ x ∈
L2}
L1 ∧ Λ = Λ
Prof. Giorgio Ausiello
Università di Roma “La Sapienza”
Informatica teorica
Lez. n 1 – Introduzione al corso
complementazione
L1 = {x ∈ Σ*| x ∉ L1}
Prof. Giorgio Ausiello
Università di Roma “La Sapienza”
Informatica teorica
Lez. n 1 – Introduzione al corso
prodotto o concatenazione
L1 ° L2 = {x ∈ Σ*| esistono x1 ed x2
tali che x1 ∈ L1 ° x2 ∈ L2 e x =
x
2} = {ε} ° L = L
L 1°x
° {ε}
1
Esempio:
L1 = {filo, teo} L2 = {logia, sofia}
L1 ° L2 = {filologia, teologia,
filosofia, teosofia}
Prof. Giorgio Ausiello
Università di Roma “La Sapienza”
Informatica teorica
Lez. n 1 – Introduzione al corso
potenza
h-1
Lhh = L ° Lh-1
L00 = {ε}
h≥1
per convenzione
Esempio:
L ={pe,ra}
L22={pepe, pera, rape, rara}
Prof. Giorgio Ausiello
Università di Roma “La Sapienza”
Informatica teorica
Lez. n 1 – Introduzione al corso
iterazione
(detta anche operazione stella)
∞
L** = ∪ Lhh
{ε} h=0
Esempio:
L+ = L** \
L ={a, bb}
L**={ε, a, bb, aa, abb, bba, bbbb, ... }
Prof. Giorgio Ausiello
Università di Roma “La Sapienza”
Informatica teorica
Lez. n 1 – Introduzione al corso
Espressioni regolari
Metodo formale di descrizione di
linguaggi. Un’espressione regolare
rappresenta un insieme di stringhe
basandosi sulle operazioni con
le quali il linguaggio può essere
costruito
Prof. Giorgio Ausiello
Università di Roma “La Sapienza”
Informatica teorica
Lez. n 1 – Introduzione al corso
Ad esempio, se l’espressione e11
rappresenta il linguaggio L11 e
l’espressione e22 rappresenta
il linguaggio L22, il linguaggio L11 ∪
L22
è rappresentato dall’espressione
regolare e11 + e22
Prof. Giorgio Ausiello
Università di Roma “La Sapienza”
Informatica teorica
Lez. n 1 – Introduzione al corso
Dato un alfabeto Σ, chiamiamo
espressione regolare una stringa
r sull'alfabeto Σ ∪ {Ø, +, ..,*,(,)}
tale che:
r=Ø
r = a (a ∈ Σ)
o, se s e t sono espressioni regolari:
r=(s+t) oppure r=(s..t) oppure r=s*
Prof. Giorgio Ausiello
Università di Roma “La Sapienza”
Informatica teorica
Lez. n 1 – Introduzione al corso
espressione
linguaggio
r=Ø
r = a (a ∈ Σ)
r = (s + t)
L(r) = Λ
L(r) = {a}
r = (s . t)
r = s*
Prof. Giorgio Ausiello
Università di Roma “La Sapienza”
L(r) = L(s) ∪ L(t)
L(r) = L(s) ° L(t)
L(r) = L(s)*
Informatica teorica
Lez. n 1 – Introduzione al corso
Esempio
e = (a+(b.(c.d) *))
L(e) = L(a) ∪ L(b.(c.d)*) =
= L(a) ∪ (L(b) ° L((c.d)*)) =
= L(a) ∪ (L(b) ° (L(c) ° L(d))*) =
= {a, b, bcd, bcdcd, …}
Prof. Giorgio Ausiello
Università di Roma “La Sapienza”
Informatica teorica
Lez. n 1 – Introduzione al corso
Per semplificare la scrittura
delle espressioni regolari
possiamo sfruttare:
Æ eliminazione del simbolo della
concatenazione, scrivendo (st)
anziché (s.t)
Æ uso di precedenza tra operatori:
*>.>+
Æ eliminazione di parentesi inutili
Prof. Giorgio Ausiello
Università di Roma “La Sapienza”
Informatica teorica
Lez. n 1 – Introduzione al corso
Esempi
(a+(b.(c.d)*)) = a + b(cd)*
(a+(b.b*)) = a+b.b*
((a+b)* . a) = (a+b)*a
Prof. Giorgio Ausiello
Università di Roma “La Sapienza”
Informatica teorica
Lez. n 1 – Introduzione al corso
Come vedremo, i linguaggi
rappresentabili con espressioni
regolari sono un’interessante
sottoclasse di tutti i possibili
linguaggi. Tali linguaggi sono
chiamati linguaggi regolari e si
possono caratterizzare anche
mediante grammatiche e macchine
molto semplici
Prof. Giorgio Ausiello
Università di Roma “La Sapienza”