84
Alfabeti, Stringhe e Linguaggi Def: un insieme è una collezione non ordinata di oggetti o elementi Gli insiemi sono scritti tra { }. Gli elementi sono inseriti tra le parentesi Def: Per ogni insieme S, “w є S” indica che w è un elemento di S Nota: Notazione di insiemi per specificare un’insieme A = { x | x є R, f(x) = 0} R è insieme dei numeri reali, f è una qualche funzione

Alfabeti, Stringhe e Linguaggi

  • Upload
    jaeger

  • View
    45

  • Download
    0

Embed Size (px)

DESCRIPTION

Alfabeti, Stringhe e Linguaggi Def: un insieme è una collezione non ordinata di oggetti o elementi Gli insiemi sono scritti tra { }. Gli elementi sono inseriti tra le parentesi Def: Per ogni insieme S, “w є S” indica che w è un elemento di S - PowerPoint PPT Presentation

Citation preview

Page 1: Alfabeti, Stringhe e Linguaggi

Alfabeti, Stringhe e LinguaggiDef: un insieme è una collezione non ordinata di oggetti o elementi Gli insiemi sono scritti tra { }. Gli elementi sono inseriti tra le parentesi

Def:Per ogni insieme S, “w є S” indica che w è un elemento di S Nota: Notazione di insiemi per specificare un’insiemeA = { x | x є R, f(x) = 0}R è insieme dei numeri reali, f è una qualche funzione

Page 2: Alfabeti, Stringhe e Linguaggi

InsiemiEs: {a, b, c} ha elementi a, b, c. {a, b, c} e {b, c, b, a, a} sono lo stesso insieme.Ordine e ridondanza non contano. {a} ha elemento a.{a} ed a sono coSe diverse.{a} è l’insieme che contiene solo elemento a. L’insieme degli interi èZ = {. . . ,.-2,-.1, 0, 1, 2, . . .}.L’insieme degli interi non negativi èZ+ = {0, 1, 2, 3, . . .}.

Page 3: Alfabeti, Stringhe e Linguaggi

InsiemiEs: L’insieme dei numeri pari è{0, 2, 4, 6, 8, 10, 12, . . .} = { 2n | n = 0, 1, 2, . . . }.

L’insieme dei pari positivi è{2, 4, 6, 8, 10, 12, . . .} = { 2n | n = 1, 2, 3, . . . }. L’insieme dei numeri dispari è{1, 3, 5, 7, 9, 11, 13, . . .} = { 2n+1 | n = 0, 1, 2, . . . }.

Es: Se A = { 2n | n = 0, 1, 2, . . . },allora 4 є A, ma 5 non in A.

Page 4: Alfabeti, Stringhe e Linguaggi

AlfabetiUn alfabeto è un insieme finito di elementi fondamentali (chiamati lettere o simboli)

Es: L’alfabeto delle lettere romane minuscole è={ a, b, c, . . . , z }.

Es:

L’alfabeto delle cifre arabe è

={ 0, 1, 2, . . . , 9 }.

Page 5: Alfabeti, Stringhe e Linguaggi

stringa

Def: Una stringa su un alfabeto è una sequenza

finitadi simboli dell’ alfabeto.

Es:

cat, food, c, babbz sono stringhe sull’ alfabeto

A={a, b, c, . . . , z}.

0131 è una stringa sull’ alfabeto B={0, 1, 2, . . . ,

9}.

Page 6: Alfabeti, Stringhe e Linguaggi

Lunghezza di una stringaDef: per ogni stringa s, la lunghezza di s è il numero di simboli in s.

La lunghezza di s è denotata con lunghezza(s) o |s|.

Es: lunghezza(mom) = |mom| = 3.

Def: la stringa vuota è la stringa contenente nessun simbolo, || = 0.

Page 7: Alfabeti, Stringhe e Linguaggi

Kleene Star

Def: Dato alfabeto , sia l’insieme di tutte le possibilistringhe su .

Es: ={a, b}, allora = { , a, b, aa, ab, ba, bb, aaa, aab, aba, abb, . . . }.

Page 8: Alfabeti, Stringhe e Linguaggi

ConcatenazioneDef: Date due stringhe u e v, la concatenazione diu e v è la stringa uv.

Es: u = abb e v = ab, allora uv = abbab e vu = ababb. u = e v = ab, allora uv = ab. u = bb e v = , allora uv = bb. u = e v = , allora uv = ; cioè

Page 9: Alfabeti, Stringhe e Linguaggi

Def: per stringa w, definiamo wn per n > 0 induttivamente: w0 = ;wn+1 = wnw per ogni n > 0.

Es: w = cat, alloraw0 = ,w1 = cat,w2 = catcat,w3 = catcatcat,...

Es:Dato simbolo a a3 = aaa a0 =

Page 10: Alfabeti, Stringhe e Linguaggi

SottostringaDef: Data stringa s, una sottostringa di s è una qualsiasi parte di simboli consecutivi della stringa s. cioè, w è una sottostringa di s se esistono stringhe x e y (eventualmente vuote) tali che s = xwy.

Es:Stringa 472 ha sottostringhe , 4, 7, 2, 47, 72, 472. 42 non è sottostringa di 472.

Page 11: Alfabeti, Stringhe e Linguaggi

LinguaggiDef: Un Linguaggio formale (Linguaggio) è un insieme distringhe su un alfabeto.

Es:Linguaggi per computer, quali C o C++ o Java, sono linguaggi permali con alfabetoA = {a, b, . . . , z, A, B, . . . , Z, ,0, 1, 2, . . . , 9,>, <, =, +, -, *, /, (, ), ., ,, &, !, %, |, ’, ",:, ;,ˆ, {, }, @, #, \, ?}.Le regole della sintassi definiscono le regole del linguaggio.L’insieme di nomi validi di variabili in C++ è un Linguaggio formale .

Page 12: Alfabeti, Stringhe e Linguaggi

Esempi di Linguaggi

1. alfabeto A={x}. Linguaggio L = { , x, xx, xxx, xxxx, . . . }= { xn | n = 0, 1, 2, 3 . . . }Nota: x0 = , quindi stringa vuota in L2. alfabeto A={x}. LinguaggioL = { x, xxx, xxxxx, xxxxxxx, . . . }={ x2n+1 | n = 0, 1, 2, 3, . . . }

3. alfabeto A={0, 1, 2, . . . , 9}. LinguaggioL = { qualsiasi stringa che non inizia con “0”}= { , 1, 2, 3, . . . , 9, 10, 11, . . . }

Page 13: Alfabeti, Stringhe e Linguaggi

Esempi di Linguaggi

Es: Sia A={a, b}, definiamo Linguaggio L formatoda tutte le stringhe che iniziano con a seguita da 0 o più b; Cioè L = { a, ab, abb, abbb, . . . }= { abn | n = 0, 1, 2, . . . }.

Def: l’ insieme vuoto è l’ insieme contenente nessun elemento.

Nota: non in

non è uguale a {}

poichè non ha elementi.

Page 14: Alfabeti, Stringhe e Linguaggi

Insiemi: Relazioni ed Operazioni

Def: Se S e T sono insiemi, allora S T (S è sottoinsieme di T) se w S implica w T. Cioè ogni elemento di S è anche un elemento T.

Es: S = { ab, ba }, T = { ab, ba, aaa } allora S T ma T S. S = { ba, ab } e T = { aa, ba } allora S T e T S.

Page 15: Alfabeti, Stringhe e Linguaggi

Insiemi uguali

Def: insiemi S e T, sono uguali (S = T), Se S T e T S.

Es: Sia S = { ab, ba } e T = { ba, ab }. allora S T e T S.quindi S = T.

Sia S = { ab, ba } e T = { ba, ab, aaa },

allora S T, ma T S.

Quindi S T.

Page 16: Alfabeti, Stringhe e Linguaggi

Unione

Def: Dati due insiemi S e T, la loro unione è

S T = {w | w S o w T }

S T contiene tutti gli elementi in S oppure in T (o in entrambi).

Es:S = { ab, bb } e T = { aa, bb, a }, allora S T = { ab, bb, aa, a }.

S = { a, ba } e T = , allora S U T = S.

S = { a, ba } e T = { }, allora S T= { a, ba }.

Page 17: Alfabeti, Stringhe e Linguaggi

IntersezioneDef: Dati due insiemi S e T, la loro Intersezione èS ∩ T = {w | w S e w T },

S ∩ T consiste degli elementi sia di S che di T.

Def: insiemi S e T sono disgiunti se S ∩ T = .

Es: Sia S = { ab, bb } e T = { aa, bb, a }, allora S ∩ T = { bb }. Sia S = { ab, bb } e T = { aa, ba, a }, allora S ∩ T = , quindi S e T sono disgiunti

Page 18: Alfabeti, Stringhe e Linguaggi

Sottrazione

Def: Dati 2 insiemi S e T, S -T = {w | w S, w T }.

Es: Sia S = { a, b, bb, bbb } e T = { a, bb, bab }

allora S -T = { b, bbb }. Sia S = { ab, ba } e T = { ab, ba } allora S -T = .

Page 19: Alfabeti, Stringhe e Linguaggi

Complemento

Def: Dato insieme S, il suo complemento è

C(S)= {w | w S }. C(S) è l’ insieme di tutti gli elementi considerati che non sono in S.

Es: Sia S l’ insieme delle stringhe su alfabeto {a, b} che iniziano con il simbolo b. allora C(S) è insieme stringhe su {a, b} che non iniziano con b,

C(S) NON è l’ insieme stringhe su {a, b} che iniziano con a (es. stringa vuota )

Page 20: Alfabeti, Stringhe e Linguaggi

ConcatenazioneDef: Dati 2 insiemi S e T di stringhe, la concatenazione (o prodotto) di S e T è ST = { uv | u S, v T }.

Nota: ST è l’ insieme di stringhe che possono essere divise in 2 parti: la prima parte è in S e la seconda parte è in T.Es: S = { a, aa } e T = { , a, ba }, allora ST = { a, aa, aba, aaa, aaba }, TS = { a, aa, aaa, baa, baaa }.

aba ST, ma aba TS.

ST TS

Page 21: Alfabeti, Stringhe e Linguaggi

CardinalitàDef: La cardinalità |S| di S è il numero di elementi in S.

Es: Sia S = { ab, bb } e T = { an | n > 1 }, allora |S| = 2 e |T| = ∞. Se S = , allora |S| = 0.

Page 22: Alfabeti, Stringhe e Linguaggi

Insiemi Finiti ed Infiniti

Def: Un insieme S è finito se |S| < ∞. Se S non è finito, allora S è infinito.

Es: Sia S = { ab, bb }, allora S è finito. Sia T = { an | n > 1 }. allora T è infinito.

Fatto: Se S e T sono disgiunti (cioè S ∩ T = vuoto.), allora|S T| = |S|+|T|.

Fatto: Se S e T sono tali che |S ∩ T| < ∞, allora|S T| = |S|+|T| - |S ∩ T|.

Page 23: Alfabeti, Stringhe e Linguaggi

Sequenze e tupleDef: sequenza di oggetti è una lista di questi oggetti in qualche ordine.

ordine e ridondanza sono importanti in una sequenza (non in un insieme).

Def: sequenze finite sono dette tuple. A k-tupla ha k elementi nella sequenza.

Es: (4, 2, 7) è a 3-tupla o tripla (9, 23) è a 2-tupla o coppia.

Page 24: Alfabeti, Stringhe e Linguaggi

Prodotto Cartesiano

Def: Dati due insiemi A e B, il prodotto Cartesiano è l’ insieme di coppie

A × B = { (x, y) | x A, y B }.

Es: Sia A = { a, ba, bb } e B = { , ba }, allora A × B = { (a, ), (a, ba), (ba, ), (ba, ba), (bb, ), (bb, ba) }. per Es, la coppia (a, ba) in A × B. B × A = { (, a), ( ba), (, bb), (ba, a), (ba, ba), (ba, bb) }. Nota (ba, a) B × A, ma (ba, a) non in A × B, Quindi B × A A × B. Nota che la ConcatenazioneA B = { a, aba, ba, baba, bb, bbba } A × B.

Page 25: Alfabeti, Stringhe e Linguaggi

Nota: |A × B| = |A| |B|. Perchè?

Nota: Possiamo anche definire prodotto cartesiano di più di 2 insiemi.Def: prodotto cartesiano di k insiemiA1,A2, . . . , Ak è l’ insieme di k-tuple

A1 × A2 × … ×Ak

= { (x1, x2, . . . , xk) | xi Ai per i = 1, 2, . . . , k }

Page 26: Alfabeti, Stringhe e Linguaggi

Es: SiaA1 = { ab, ba, bbb },A2 = { a, bb },A3 = { ab, b }.

alloraA1 × A2 × A3 = { (ab, a, ab), (ab, a, b), (ab, bb, ab),

(ab, bb, b), (ba, a, ab), (ba, a, b), (ba, bb, ab), (ba, bb, b), (bbb, a, ab), (bbb, a, b), (bbb, bb, ab), (bbb, bb, b) }.

Page 27: Alfabeti, Stringhe e Linguaggi

Insieme potenza

Def: per ogni insieme S, l’ insieme potenza P(S) èP(S) = {A | A in S }.

L’ insieme potenza di S è l’ insieme di tutti possibili sottoinsiemi di S.

Es: Se S = { a, bb }, allora P(S) = { , {a}, {bb}, {a, bb} }.

Fatto: Se|S| < ∞, allora |P(S)| = 2|S|

Cioè , ci sono 2|S| differenti sottoinsiemi di S. Perchè?

Page 28: Alfabeti, Stringhe e Linguaggi

Chiusura

Def: Dato insieme S di stringhe, sia S0 = { }, e Sk = {w1 w2 … wk | wi in S, i = 1, 2, . . . , k }= =S . S . … . S, k volte, per k > 1.Nota: Sk è insieme di stringhe ottenute concatenando k stringhe di S, con possibili ripetizioni. Nota che S1 = S.

Es: Se S = {a, bb}, alloraS0 = {}, S1 = {a, bb}, S2 = {aa, abb, bba, bbbb},S3 = {aaa, aabb, abba, abbbb, bbaa, bbabb, bbbba, bbbbbb}.

Page 29: Alfabeti, Stringhe e Linguaggi

Chiusura Kleene Star

Def: la Chiusura (Kleene star) di un insieme di

stringhe S è S*= S0 S1 S2 S3 … .

Nota: S* è l’ insieme di tutte le stringhe ottenute concatenando zero o più stringhe di S, dove possiamo usare la stessa stringa più volte.

S.*= {w1 w2 … wk | k > 0 e wi in S per tutti i = 1, 2, . . . , k },Dove w1 w2 … wk per k = 0 è la stringa vuota.

Page 30: Alfabeti, Stringhe e Linguaggi

Es: Se S = { ba, a }, alloraS* = { , a, aa, ba, aaa, aba, baa, aaaa, aaba, . . . }.Se w in S., puo’ bb essere una sottostringa di w?

Es: Se A={ a, b }, alloraA* = { , a, b, aa, ab, ba, bb, aaa, aab, aba, . . . },tutte possibili stringhe su alfabeto A.

Es: Se S = , allora S = { }.

Es: Se S = { }, allora S* = { }.

Page 31: Alfabeti, Stringhe e Linguaggi

S**

S** è (S*)*, l'insieme di stringhe formate concatenando stringhe di S*

Fatto: S** = S* per ogni insieme S di stringhe.

Page 32: Alfabeti, Stringhe e Linguaggi

S+

Def: Se S è qualche insieme di stringhe, allora

S+ è l'insieme di tutte le stringhe ottenute

concatenando una o più stringhe di S.

Es: Se S={ x }, allora S+ = { x, xx, xxx, . . . }.

Page 33: Alfabeti, Stringhe e Linguaggi

Inverso di stringheDef: per ogni stringa w, l'inverso di w, scritto reverse(w)o wR, è la stessa stringa di simboli scritta in ordine inverso . Se w = w1 w2 … wn, dove ogni wi è un simbolo, allora

wR = wn wn-1 … w1.

Es: (cat)R = tac e R = .per xxx in L1={xn | n = 1, 2, 3, . . .}, reverse(xxx) = xxx L1

Sia L3 l'insieme di stringhe su {0, 1, 2, . . . , 9} tali che ilprimo simbolo non è 0.Nota che 10 in L3, ma (10)R = 01 non in L3.quindi , L3 è non chiuso per l’inverso.

Page 34: Alfabeti, Stringhe e Linguaggi

Grafi

Def: Un grafo orientato G=(V,E) è composto da un insieme V di nodi (o vertici) ed un insieme E di archi.In grafo G che contiene nodi i e j, la coppia (i, j) in E rappresenta arco da nodo i a nodo j.

Es per il grafo disegnato,

V = {1, 2, 3},E = { (1, 2), (1, 3), (2, 3), (3, 2), (3, 3) },G = ({1, 2, 3}, { (1, 2), (1, 3), (2, 3), (3, 2), (3, 3) } ).

Page 35: Alfabeti, Stringhe e Linguaggi

AUTOMI

Introduciamo ora un modello semplice di calcolatore avente una quantità finita di memoriaE’ noto come macchina a stati finiti o automa finito . Idea di base del funzionamento:•Input= stringa su un alfabeto•Legge i simboli di w da sinistra a destra.•Dopo aver letto l’ultimo simbolo, l’automa indica se accetta o rifiuta la stringa Utili per progettare compilatori.

Page 36: Alfabeti, Stringhe e Linguaggi

Automa finito deterministico (DFA)

Es: DFA con alfabeto A={a, b}:

q1, q2, q3 soni gli stati.

q1 è lo stato start (ha freccia entrante da esterno)

q2 è uno stato accetta (disegnato con doppio cerchio)

Page 37: Alfabeti, Stringhe e Linguaggi

archi dicono come muoversi quando l’automa si trova in uno stato e simbolo di A è letto .

Dopo aver letto l’ultimo simbolo:Se DFA è in uno stato accetta, allora stringa è accettata, altrimenti è rifiutata .

Nell’esempio:abaa è accettata aba è rifiutata è rifiutata

Page 38: Alfabeti, Stringhe e Linguaggi

Def di DFA formaleDef: A automa finito deterministico (DFA) è 5-tuplaM = (Q,A, f, q1, F),dove1. Q è insieme finito di stati.2. A è alfabeto, e il DFA processa stringhe su A.3. f : Q × A -> Q è la funzione di transizione.4. q1 Q è lo stato start.5. F (sottoinsieme di Q) è l'insieme di stati accetta (o stati finali).

Nota: DFA chiamato anche semplicemente automa finito (FA).

Page 39: Alfabeti, Stringhe e Linguaggi

Funzione di transizione di DFA

funzione di transizione f : Q × A -> Q :

per ogni stato e per ogni simbolo di input,

la funzione f dice in quale stato spostarsi.

Cioè, f(r, a) è lo stato che il DFA occupa quando è in

stato r e legge a , per ogni coppia formata da uno stato

r in Q ed un simbolo a in A.

Esiste esattamente un arco uscente da r con label a

quindi la macchina è deterministica.

Page 40: Alfabeti, Stringhe e Linguaggi

Es di DFAM = (Q,A, f, q1, F) con Q = {q1, q2, q3}A={a, b} f è descritta da

q1 è lo stato start F = {q2}.

Page 41: Alfabeti, Stringhe e Linguaggi

Come un DFA Computa

• DFA riceve in input stringhe di simboli di alfabeto A.

• DFA inizia in stato start.

• DFA legge la stringa un simbolo alla volta, partendo

da sinistra

• il simboli letto determina la sequenza di stati visitati.

• Processo termina dopo che l’ultimo simbolo input è

stato letto .

• Dopo letto intera stringa input:

Se DFA termina in stato accetta, allora stringa è

accettata

altrimenti , è rifiutata .

Page 42: Alfabeti, Stringhe e Linguaggi

Definizione formale

Sia M = (Q,A, f, q0, F) un DFA.

Considera stringa w = w1w2 · · ·wn su A., doveogni wi in A.

M accetta w se esiste sequenza di stati r0, r1, . . . , rn in

Q tali che

1. r0 = q0 (primo stato della sequenza è quello iniziale)

2. rn in F (ultimo stato in sequenza è uno stato accetta)

3. f(ri-1, wi) = ri , per ogni i = 1, 2, . . . , n (sequenza di

stati corrisponde a transizioni valide per la stringa w).

Page 43: Alfabeti, Stringhe e Linguaggi

Linguaggio della Machina

Def: Se A è l'insieme di tutte le stringhe che la machina M accetta, allora si dice che •A è il Linguaggio della machina M, e•M riconosce (o accetta) A.

Scriviamo anche L(M) = A.

Def: Un Linguaggio è regolare se è riconosciuto da qualche DFA.

Page 44: Alfabeti, Stringhe e Linguaggi

Es: Si consideri il seguente DFA M1 con alfabeto A={0, 1} :

010110 è accettata , ma 0101 è rifiutata .

L(M1) è il Linguaggio di stringhe su A in cui il numero

totale di 1 è dispari. Esercizio: dare DFA che riconosce il Linguaggio di stringhe su A con numero pari di 1’s

Page 45: Alfabeti, Stringhe e Linguaggi

Es: DFA M2 con alfabeto A={0, 1} :

Nota: L(M2) è Linguaggio su A che ha lunghezza 1, cioè

L(M2) = {w in A | |w| = 1}

Si ricordi che C(L(M2)), il complemento di L(M2), è l'insieme di stringhe su A che non sono in L(M2).

Domanda: DFA che riconosce C(L(M2))?

Page 46: Alfabeti, Stringhe e Linguaggi

Es: Si consideri il seguente DFA M3 con alfabeto A={0, 1}

L(M3) è il Linguaggio su A che non ha lunghezza 1,

Più di uno stato accetta.

Stato start anche stato accetta. In generale, DFA accetta sse lo stato start è anche stato accetta.

Page 47: Alfabeti, Stringhe e Linguaggi

DFA per Complemento

In generale, Dati DFA M per Linguaggio L,

possiamo costruire DFA M’ per C(A) da M

rendendo tutti gli stati accetta in M in stato non-accept in

M’,

rendendo tutti stati non-accetta in M in stati accetta in

M’,

Più formalmente,

Se Linguaggio L su alfabeto A ha un DFA

M = (Q, A, f, q1, F ).

allora, DFA per il complemento di L è

M = (Q, A, f, q1, Q- F ).

Esercizio: Perchè funziona?

Page 48: Alfabeti, Stringhe e Linguaggi

Es: Si consideri il seguente DFA M4 con alfabeto A={a, b} :

L(M4) è il Linguaggio di stringhe su A che terminano con bb, cioèL(M4) = {w in A | w = sbb per qualche stringa s}

Page 49: Alfabeti, Stringhe e Linguaggi

Es: Si consideri il seguente DFA M5 con alfabeto A={a, b}

L(M5) = {w | w = saa o w = sbb per qualche stringa s}.

Page 50: Alfabeti, Stringhe e Linguaggi

Si consideri il seguente DFA M6 con alfabeto A={a,b}

Accetta tutte le possibili stringhe su A, cioèL(M6) = A*

In generale, ogni DFA in cui tutti stati sono stato accetta riconosce il linguaggio A*

Page 51: Alfabeti, Stringhe e Linguaggi

Si consideri il seguente DFA M6 con alfabeto A={a,b}

DFA non accetta stringhe su A, cioèL(M7) = In generale, un DFA può non avere stati accetta

Page 52: Alfabeti, Stringhe e Linguaggi

Es: Si consideri il seguente DFA M8 con alfabeto A={a, b} :

•Ogni a muove verso destra o sinistra.

• Ogni b muove verso l’alto o il basso

•DFA riconosce il Linguaggio di stringhe su A con

numero pari di a e numero pari di b.

Page 53: Alfabeti, Stringhe e Linguaggi

Operazioni regolari

Siano A e B Linguaggi.

Unione: A B = {w | w A o w B }.

Concatenazione: AB = { vw | v A,w B }.

Kleene star: A*= {w1 w2 · · · wk | k > 0 e ogni wi A}.

Page 54: Alfabeti, Stringhe e Linguaggi

• Una collezione S di oggetti è chiusa per un operazione f se applicando f a membri di S, f restituisce un oggetto in S. ad es. N = {0, 1, 2, . . .} è chiuso per addizione ma non per sottrazione

•Abbiamo visto che dati DFA M1 per Linguaggio L,

possiamo costruire DFA M2 per Linguaggio complemento

L’:

Rendi tutti stato accetta in M1 in non-stato accetta in

M2.

Rendi tutti stati non-accetta in M1 in stati accetta in M2.

quindi , l'insieme di Linguaggi regolari è chiuso per complemento.•cioè se L è regolare, allora C(L) è regolare.

Page 55: Alfabeti, Stringhe e Linguaggi

Linguaggi regolari chiusi per l’ unione

Teorema La classe dei linguaggi regolari è chiusa per l’unione. cioè, se L1 e L2 sono linguaggi regolari , allora lo è anche L1 L2.Dim Idea:

L1 ha DFA M1.

L2 ha DFA M2.

w in L1 L2 sse w è accettata da M1 oppure M2.

Serve DFA M3 che accetta una stringa w sse w è

accettata da M1 o M2.

Si costruisca M3 tale da tener traccia di dove l’ input

sarebbe se fosse contemporaneamente in input a M1 e

M2.

accetta stringa sse M1 oppure M2 accetta.

Page 56: Alfabeti, Stringhe e Linguaggi

Siano L1 e L2 definiti su the stesso alfabeto A.DFA M1 riconosce L1, dove M1 = (Q1,A, f1, q1, F1).DFA M2 riconosce L2, dove M2 = (Q2,A, f2, q2, F2).Sia DFA M3 = (Q3,A, f3, q3, F3) :

•Q3 = Q1 × Q2 = { (x, y) | x in Q1, y in Q2 }.• alfabeto di M3 è A.

•M3 ha funzione di transizione f3 : Q3 × A -> Q3 t.c. per

x in Q1, y in Q2, e a in A,

f3( (x, y),a ) = ( f1(x, a), f2(y,a ) ) .

•Lo stato start di M3 è q3 = (q1, q2) in Q3.

•L’ insieme di stati accept di M3 è F3 = { (x, y) in Q1 × Q2 | x in F1 o y in F2 }

Poichè Q3 = Q1 × Q2,numero di stati in M3 è |Q3| = |Q1| · |Q2|.Quindi, |Q3| è finito poichè |Q1| e |Q2| sono finiti.

Page 57: Alfabeti, Stringhe e Linguaggi

Es: Si considerino i seguenti DFA e linguaggi su A={a, b} : DFA M1 riconosce linguaggio A1 = L(M1) DFA M2 riconosce linguaggio A2 = L(M2)

DFA M1 per A1 DFA M2 per A2

Vogliamo DFA per l’unione di A1 e A2.

Page 58: Alfabeti, Stringhe e Linguaggi
Page 59: Alfabeti, Stringhe e Linguaggi

I linguaggi regolari sono chiusi per l’intersezione

Teorema

La classe dei linguaggi regolari è chiusa per l’intersezione.

cioè, se A1 e A2 sono linguaggi regolari, allora lo è A1

A2.

Dim. Idea:

• A1 ha DFA M1.

• A2 ha DFA M2.

• w in A1 A2 sse w è accettato sia daM1 che da M2.

•Si vuole DFA M3 che accetta w sse w è accettata da M1

e M2.

•Costruiamo M3 che contemporaneamente mantiene

traccia dello stato in cui si troverebbero sia M1 che M2.

• Accetta stringa sse sia M1 che M2 accettano

Page 60: Alfabeti, Stringhe e Linguaggi

I linguaggi regolari sono chiusi per Concatenazione

Teorema

Classe dei I linguaggi regolari è chiusa per la

concatenazione.

cioè, se A1 e A2 sono linguaggi regolari, allora lo è A1 A2.

NOTA:

E’ possibile (ma laborioso) costruire un DFA per

A1 A2 dati i DFA per A1 e A2.

Introduciamo invece un nuovo tipo di macchina

Page 61: Alfabeti, Stringhe e Linguaggi

Automi finiti non deterministici

In DFA, lo stato successivo occupato in corrispondenza di un dato input è unicamente determinato

Quindi le macchine sono sono deterministiche. La funzione di transizione in un DFA è definita comef : Q × A -> Q. Restituisce sempre un singolo stato

Page 62: Alfabeti, Stringhe e Linguaggi

Nondeterminismo

Automi finiti non deterministici (NFA) permettono

più

scelte per il prossimo stato per un dato input.

per uno stato q e simbolo a in a, NFA può avere

più edges uscenti da q labellati con lo stesso simbolo

può prendere -edge senza leggere simboli da input.

Es.: NFA N1 con alfabeto A={0, 1}.

Page 63: Alfabeti, Stringhe e Linguaggi

Se NFA è in stato con più scelte, (Es.., in stato q1 e prossimo input è 1) la macchina si divide in più copie di se stessa.Ogni copia continua con computazione indipendentemente dalle altre.NFA può essere in un insieme di stati, invece di un singolo stato.NFA segue ogni possibile computazione in parallelo: se una copia porta a uno stato accept alla fine dell’input, NFA accetta la stringa; se, al temine dell’input, nessun cammino si trova in uno stato accept allora NFA non accetta la stringa.

Page 64: Alfabeti, Stringhe e Linguaggi

Se in stato con -transition, senza leggere input,

NFA si divide in più copie, ognuna segue una

transizione,

ogni copia continua indipendentemente da altre

copie,

NFA segue ogni possibile cammino in parallelo.

NFA continua non deterministicamente come

prima.

Su input 010110 ?

Page 65: Alfabeti, Stringhe e Linguaggi
Page 66: Alfabeti, Stringhe e Linguaggi

NFA N accetta stringhe , a, aa, baa, baba, . . . .

NFA N non accetta stringhe b, ba, bb, . . . .

Page 67: Alfabeti, Stringhe e Linguaggi

Def.di NFA

Def.: Per alfabeto A, sia A ottenuto da A aggiungendo

Def.: A NFA è 5-tupla (Q,A, f, q0, F), con

1. Q insieme di stati

2. A alfabeto

3. f : Q × A->P(Q) funzione di transizione

4. q0 in Q è stato start

5. F insieme di stati accept.

Nota: La differenza tra DFA e NFA è nella funzione di

transizione f:

ammette mosse tipo

Restituisce insieme di stati invece di un solo stato.

Page 68: Alfabeti, Stringhe e Linguaggi
Page 69: Alfabeti, Stringhe e Linguaggi

Computazione di NFA

Sia N = (Q,A, f, q0, F) un NFA e w una stringa su A

allora N accetta w sew = y1 y2 · · · ym, dove ogni yi in A, eesiste sequenza di stati r0, r1, . . . , rm in Q t.c.

1. r0 = q0

2. ri+1 in f(ri, yi+1) per ogni i = 0, 1, 2, . . . , m - 1

3. rm in F

Def.: insieme di stringhe accettate da NFA N èil linguaggio riconosciuto da N ed è denotato con L(N).

Remark: ogni DFA è anche un NFA.

Page 70: Alfabeti, Stringhe e Linguaggi

Equivalence di DFAs e NFAs

Def.: due macchine sono equivalenti se riconoscono lo stesso linguaggio.

Teorema Ogni NFA N ha un equivalente DFA M. cioè, se N è un NFA, allora esiste DFA M t.c. L(M) = L(N).

Page 71: Alfabeti, Stringhe e Linguaggi
Page 72: Alfabeti, Stringhe e Linguaggi
Page 73: Alfabeti, Stringhe e Linguaggi

NFA Regolari

Corollariolinguaggio L è regolare sse esiste NFA che riconosce A.

Dim. Se L è regolare, allora esiste DFA ma ogni DFA è anche un NFA, quindi esiste NFA per A.

Da Teorema precedente, ogni NFA ha equivalente DFA.Quindi se esiste NFA allora esiste DFA per L

Page 74: Alfabeti, Stringhe e Linguaggi

DIMOSTRAZIONE CHIUSURA

CONCATENAZIONE

AB = { vw | v in A, w in B }.

Teorema

La classe dei linguaggi regolari è chiusa per la

concatenazione.

Page 75: Alfabeti, Stringhe e Linguaggi

Dim Idea: NFA N per A1 A2 :

Page 76: Alfabeti, Stringhe e Linguaggi

L1 linguaggio riconosciuto da NFA N1 = (Q1,A, f1, q1, F1). L2 linguaggio riconosciuto daNFA N2 = (Q2,A, f2, q2, F2). NFA N = (Q,A, , q1, F2) per L1L2 :Q = Q1 U Q2

Stato start q1, stesso di N1.Stati finali F2, stessi di N2.Funzione di transizione:

Page 77: Alfabeti, Stringhe e Linguaggi

Si può estendere alla Kleene star:

A* = { x1 x2 · · · xk | k > 0, xi in L}.

Teorema

La classe dei linguaggi regolari è chiusa per l’operazione

Kleene-star.

DIM IDEA. Se N1 riconosce L. Costruiamo N da N1 in cui

ogni stato finale è collegato da -transizione allo stato

iniziale

Page 78: Alfabeti, Stringhe e Linguaggi

Espressioni regolari Espressioni regolari descrivono i linguaggi regolari Sia A={0, 1}. Per brevità nelle espressioni regolari:0 indica {0}, 1 indica {1}

Es: 0 U 1 indica {0} U {1}, cioè {0, 1}.

Es: (0 U 1)0* è {0, 1} . {0}*. (dove {0}*. = {, 0, 00,

000, . . .}.)

quindi, {0, 1} . {0}* è insieme di stringhe che iniziano

con 0 oppure 1 e continuano con degli 0 (anche

nessuno)Es. (0 U 1)* è insieme di tutte stringhe su A={0, 1}.

Page 79: Alfabeti, Stringhe e Linguaggi

Gerarchia di operazioni in espressioni regolari

In aritmetica, moltiplicazione ha precedenza su

addizione.

2+3×4 = 14.

Parentesi cambiano ordine usuale: (2+3) ×4 = 20.

Ordine di precedenza per operazioni regolari

1. Kleene star

2. concatenazione

3. unione

Parentesi cambiano ordine usuale

Page 80: Alfabeti, Stringhe e Linguaggi

Es: 00 U 101* linguaggio formato da stringa 00 e

da

stringhe inizianti con 10 seguita da zero o più 1.

Es: 0(0 U 101)* ?

0101001010 in linguaggio?

Gerarchia di operazioni in espressioni regolari

Ordine di precedenza per operazioni regolari

1. Kleene star

2. concatenazione

3. unione

Page 81: Alfabeti, Stringhe e Linguaggi

Definizione formale di espressione regolareDef: Alfabeto A. R è espressione regolare se R =1. a , per qualche a in A,2. 3. 4. R1 U R2, 5. R1 R2, 6. R1*7. (R1),

con R1 e R2 espressioni regolari.

Def: se R è espressione regolare, allora L(R) è linguaggiogenerato da R.

Page 82: Alfabeti, Stringhe e Linguaggi

Esempi di espressioni regolariEs: A={0, 1},

1. (0 U 1) = {0, 1}

2. 0*10* = {w | w ha un solo 1 }

3. A*1A* = {w | w almeno un 1 }

4. A*001A* = {w | w ha 001 come sottostringa }

5. (AA)* = {w | |w| pari }

6. (AAA)* = {w | |w| multiplo di 3 }

Page 83: Alfabeti, Stringhe e Linguaggi

Es: Sia EVEN-EVEN su A={a, b} insieme stringhe con numero pari di a e numero pari di b Es, aababbaaababab in EVEN-EVEN.

espressione regolare:

Page 84: Alfabeti, Stringhe e Linguaggi

Teorema di Kleene

Teorema Linguaggio A è regolare sse A ammette una

espressione regolare.