1 / 84

Alfabeti, Stringhe e Linguaggi

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

jaeger
Download Presentation

Alfabeti, Stringhe e Linguaggi

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. Insiemi Es: {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, . . .}.

  3. Insiemi Es: 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.

  4. Alfabeti Un alfabeto è un insieme finito di elementi fondamentali (chiamati lettere o simboli) Es: L’alfabeto delle lettere romane minuscole è S={ a, b, c, . . . , z }. Es: L’alfabeto delle cifre arabe è S={ 0, 1, 2, . . . , 9 }.

  5. 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}.

  6. Lunghezza di una stringa Def: 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 e è la stringa contenente nessun simbolo, |e| = 0.

  7. Kleene Star Def: Dato alfabeto S, sia S* l’insieme di tutte le possibili stringhe su S. Es: S={a, b}, allora S* = { e, a, b, aa, ab, ba, bb, aaa, aab, aba, abb, . . . }.

  8. Concatenazione Def: Date due stringhe u e v, la concatenazione di u e v è la stringa uv. Es: u = abb e v = ab, allora uv = abbab e vu = ababb. u = e e v = ab, allora uv = ab. u = bb e v = e, allora uv = bb. u = e e v = e, allora uv = e; cioè ee=e

  9. Def: per stringa w, definiamo wn per n > 0 induttivamente: w0 = e; wn+1 = wnw per ogni n > 0. Es: w = cat, allora w0 = e, w1 = cat, w2 = catcat, w3 = catcatcat, ... Es:Dato simbolo a a3 = aaa a0 = e

  10. Sottostringa Def: 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 e, 4, 7, 2, 47, 72, 472. 42 non è sottostringa di 472.

  11. Linguaggi Def: Un Linguaggio formale (Linguaggio) è un insieme di stringhe su un alfabeto. Es: Linguaggi per computer, quali C o C++ o Java, sono linguaggi permali con alfabeto A = {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 .

  12. Esempi di Linguaggi 1. alfabeto A={x}. Linguaggio L = { e, x, xx, xxx, xxxx, . . . }= { xn | n = 0, 1, 2, 3 . . . } Nota: x0 = e, quindi stringa vuota in L 2. alfabeto A={x}. Linguaggio L = { x, xxx, xxxxx, xxxxxxx, . . . }={ x2n+1 | n = 0, 1, 2, 3, . . . } 3. alfabeto A={0, 1, 2, . . . , 9}. Linguaggio L = { qualsiasi stringa che non inizia con “0”} = { e, 1, 2, 3, . . . , 9, 10, 11, . . . }

  13. Esempi di Linguaggi • Es: Sia A={a, b}, definiamo Linguaggio L formato • da 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 vuotof è l’ insieme contenente nessun elemento. • Nota: • e non in f • non è uguale a {e} poichè f non ha elementi.

  14. 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.

  15. 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.

  16. Unione Def: Dati due insiemi S e T, la loro unione è S U T = {w | w S o w T } S U T contiene tutti gli elementi in S oppure in T (o in entrambi). Es: S = { ab, bb } e T = { aa, bb, a }, allora S U T = { ab, bb, aa, a }. S = { a, ba } e T = f, allora S U T = S. S = { a, ba } e T = { e }, allora S U T= { e, a, ba }.

  17. Intersezione Def: 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 = f. 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 = f, quindi S e T sono disgiunti

  18. 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 = f.

  19. 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 e)

  20. Concatenazione Def: 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 = { e, a, ba }, allora ST = { a, aa, aba, aaa, aaba }, TS = { a, aa, aaa, baa, baaa }. aba ST, ma aba TS. ST TS

  21. 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 = f , allora |S| = 0.

  22. InsiemiFiniti 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 U T| = |S|+|T|. Fatto: Se S e T sono tali che |S ∩ T| < ∞, allora |S U T| = |S|+|T| - |S ∩ T|.

  23. Sequenze e tuple Def: 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.

  24. 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 = { e, ba }, allora A × B = { (a, e), (a, ba), (ba, e), (ba, ba), (bb, e), (bb, ba) }. per Es, la coppia (a, ba) in A × B. B × A = { (e, a), (e, ba), (e, 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 Concatenazione A B = { a, aba, ba, baba, bb, bbba } A × B.

  25. Nota: |A × B| = |A| |B|. Perchè? Nota: Possiamo anche definire prodotto cartesiano di più di 2 insiemi. Def: prodotto cartesiano di k insiemi A1,A2, . . . , Ak è l’ insieme di k-tuple A1 × A2 × … ×Ak = { (x1, x2, . . . , xk) | xi Ai per i = 1, 2, . . . , k }

  26. Es: Sia A1 = { ab, ba, bbb }, A2 = { a, bb }, A3 = { ab, b }. allora A1 × 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) }.

  27. 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) = { f, {a}, {bb}, {a, bb} }. Fatto: Se|S| < ∞, allora |P(S)| = 2|S| Cioè , ci sono 2|S| differenti sottoinsiemi di S. Perchè?

  28. Chiusura Def:Dato insieme S di stringhe, sia S0 = { e }, 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}, allora S0 = {e}, S1 = {a, bb}, S2 = {aa, abb, bba, bbbb}, S3 = {aaa, aabb, abba, abbbb, bbaa, bbabb, bbbba, bbbbbb}.

  29. ChiusuraKleene Star Def:la Chiusura(Kleene star) di un insieme di stringhe S è S*= S0U S1U S2U S3U … . 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.

  30. Es: Se S = { ba, a }, allora S* = { e, a, aa, ba, aaa, aba, baa, aaaa, aaba, . . . }. Se w in S., puo’ bb essere una sottostringa di w? Es:Se A={ a, b }, allora A* = { e, a, b, aa, ab, ba, bb, aaa, aab, aba, . . . }, tutte possibili stringhe su alfabeto A. Es:Se S = f, allora S* = { e }. Es:Se S = { e }, allora S* = { e }.

  31. S** S** è (S*)*, l'insieme di stringhe formate concatenando stringhe di S* Fatto: S** = S* per ogni insieme S di stringhe.

  32. 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, . . . }.

  33. Inverso di stringhe Def: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 eR = e. 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 il primo simbolo non è 0. Nota che 10 in L3, ma (10)R = 01 non in L3. quindi , L3 è non chiuso per l’inverso.

  34. 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) } ).

  35. AUTOMI • Introduciamo ora un modello semplice di calcolatore avente una quantità finita di memoria • E’ 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.

  36. 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)

  37. 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 e è rifiutata

  38. Def di DFA formale Def: A automa finito deterministico (DFA) è 5-tupla M = (Q,A, f, q1, F), dove 1. 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).

  39. 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.

  40. Es di DFA M = (Q,A, f, q1, F) con Q = {q1, q2, q3} A={a, b} f è descritta da q1 è lo stato start F = {q2}.

  41. 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 .

  42. 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 • r0 = q0 (primo stato della sequenza è quello iniziale) • rn in F (ultimo stato in sequenza è uno stato accetta) • f(ri-1, wi) = ri , per ogni i = 1, 2, . . . , n (sequenza di stati corrisponde a transizioni valide per la stringa w).

  43. 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.

  44. 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

  45. 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))?

  46. 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 e sse lo stato start è anche stato accetta.

  47. 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?

  48. 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}

  49. Es: Si consideri il seguente DFA M5 con alfabeto A={a, b} L(M5) = {w | w = saa o w = sbb per qualche stringa s}.

  50. 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*

More Related