Introduzione: alfabeti, parole, linguaggi

Transcript

Introduzione: alfabeti, parole, linguaggi
LINGUAGGI E PROPRIETA' ELEMENTARI
Def. Un alfabeto Σ e' un insieme fnito non vuoto di simboli (caratteri).
Es:
Σbool = {0,1}
Σ10 = {0,1,2,3,4,5,6,7,8,9}
Σit
= {a,b,c,d,e,f,g,h,i,l,m,n,o,p,q,r,s,t,u,v,z}
ΣC ={a, .. , z, A, .. , Z, +, -, *, /, <, >, =, ...}
Def. Una parola (stringa) su un alfabeto Σ è una sequenza fnita di simboli.
Def. Parola vuota è la parola che consiste di 0 simboli; si indica con ε (con λ su H.).
Con Σ* denotiamo l'insieme di tutte le parole su Σ.
Con Σ+ denotiamo l'insieme delle parole non vuote. Perciò Σ*= Σ+ ∪ {ε}.
Def. L’operazione ° : Σ* x Σ *--> Σ* che consiste nel giustapporre due parole di Σ* si
chiama concatenazione o prodotto.
L'operazione di concatenazione non è commutativa, è associativa; ε è elemento neutro,
cioè x ° ε = ε ° x = x, ∀ x ∈Σ*.
L'insieme ( Σ*, ° , ε) è un monoide libero.
Se con |x| indichiamo la lunghezza di una parola x, cioè il numero di caratteri che la
compongono; allora |ε| = 0.
Con xh indichiamo la concatenazione della stringa x con se stessa h volte, h ≥ 0. Per
convenzione x0 = ε.
Ordine canonico di Σ* è il seguente: una stringa più corta precede una più lunga; a
parità di lunghezza l’ordine è quello lessicografco determinato da un prefssato
ordinamento dei caratteri di Σ.
Es. Se Σ={a,b} l’ordine canonico di Σ* è il seguente:
ε,a,b,aa,ab,ba,bb,aaa,aab,aba,abb,baa,bab, bba,bbb,aaaa,...
La cardinalità di Σ* è ℵ0.
Def. Un linguaggio sull'alfabeto Σ e' un sottoinsieme di Σ*.
Es:
- Dato Σbool= {0,1}, l'insieme {0n1n | n > 0} è il linguaggio di tutte le stringhe costituite
da una sequenza di n zeri, seguiti da altrettanti uni.
- Dato ΣC ={a,.., z, A, .. , Z, +, -, *, /, <, >, =, ...}, l'insieme di tutti i programmi C che
compilano è un linguaggio.
- Dato Σ10 = {0,1,2,3,4,5,6,7,8,9}, l'insieme di tutti i numeri primi è un linguaggio.
In particolare, per ogni alfabeto Σ :
− Σ stesso è un linguaggio,
− Σ* è un linguaggio,
− l'insieme che non contiene nessuna parola (insieme vuoto), denotato Λ oppure Ø
è un linguaggio (detto linguaggio vuoto).
ΝΟΤΑ ΒΕΝΕ. Λ ≠ {ε}
OPERAZIONI SU LINGUAGGI
Siano L, L1 ed L2 linguaggi su Σ*.
- unione
L1 ∪ L2 = {x ∈ Σ* | x ∈ L1 ∨ x ∈ L2}
L1 ∪ Λ = L1
- intersezione
L1 ∩ L2 = {x ∈Σ* | x ∈ L1 ∧ x ∈ L2}
L1 ∩ Λ = Λ
- complementazione
Lc = {x ∈ Σ* | x ∉ L}
- concatenazione o prodotto
L1 ° L2 = {x ∈Σ* | esistono x1 ed x2 tali che x1 ∈ L1 , x2 ∈ L2 e x = x1°x2}
Si noti che:
L ° {ε} = {ε} ° L = L
L°Λ=Λ°L=Λ
L1= {an | n≥1} L2= {bm | m≥1}
- potenza
L1 ° L2 = {an bm | n, m ≥ 1}
L0 = {ε} per convenzione.
Lh = L ° Lh-1, h ≥ 1
- Chiusura di Kleene del linguaggio L rispetto all’operatore di concatenazione è il
linguaggio :
L* = ∪h≥0 Lh
L’operatore * si chiama operatore stella di Kleene (detto anche iterazione).
NB. ε ∈L* per defnizione, Λ*={ε}.
Ovviamente L*⊆ Σ*.
Quindi:
Σ*
tutte le parole su Σ
L*
tutte le concatenazioni di parole su L oltre a {ε}.
Indichiamo con L+ il linguaggio L*- {ε}, cioè L+ = ∪h≥1 Lh .
Un linguaggio L è un codice se ogni parole in L+ è univocamente decomponibile come
prodotto di parole di L.
Ad esempio L = {a, aba, abaab} non è un codice ( osserva la parola abaaba ) mentre L =
{a, ab} lo è.
Es:
L = {aa}
L+ = {a2n | n ≥ 1}
L* = {a2n | n ≥ 0}
L = {a, b}
L*={tutte la parole sull’alfabeto}
Si ha che:
L1 ° ( L2 ∪ L3) = L1 ° L2 ∪ L1 ° L3
L1 ° ( L2 ∩ L3) ⊆ L1 ° L2 ∩ L1 ° L3
L’inclusione può essere stretta. Prendiamo i linguaggi L2 ={0} e L3={10} su Σbool.
Ovviamente L2 ∩ L3 = Λ ed anche L1°( L2 ∩ L3) = Λ per ogni linguaggio L1 su Σbool .
Cerchiamo L1 in modo che L1 ° L2 ∩ L1 ° L3 ≠ ∅. Se L1= {1, ε}, allora si ha che L1 ° L2
= {10, 0} ed L1 ° L3 = {110, 10}.
Def. Una funzione h: Σ∗1→ Σ∗2 è detta homeomorfsmo da Σ1 a Σ2 se:
h(ε)=ε
h(u°v)= h(u) ° h(v)
∀ v , u ∈Σ∗1
Quindi per specifcare un homeomorfsmo è suffciente farlo sui simboli dell’alfabeto.
Es. di homeomorfsmo da {0, 1, #} a {0, 1}:
h(#) = 10
h(0) = 00
h(1) = 11
Allora h(011#101#) = 0011111011001110.
Come rappresentare un linguaggio.
Se il linguagggio è fnito si possono elencare i suoi elementi.
Se invece è infnito si può rappresentare con opportuni strumenti.
Vediamone lo strumento delle espressioni regolari.