q


Esercizi su Linguaggi Formali




Esercizio 1


Scrivere l'espressione regolare, sull'alfabeto {0,1}, che denota il linguaggio formato da tutte le stringhe che contengono "101" come sottostringa.

Esercizio 2

Scrivere l'espressione regolare, sull'alfabeto {0,1}, che denota il linguaggio formato da tutte le stringhe che iniziano con "00".


Esercizio 3

Provare a capire, informalmente, perche' il seguente linguaggio non e' descrivibile con un'espressione regolare.
L={an bn | n>0}


Esercizio 4

Dare una definizione di linguaggio regolare.


Esercizio 5

Sia G=({a,b,c},{S,A,B},P,S) dove P contiene le seguenti regole
S -> Ac,
A -> AB | B,
B -> aAb | ab.
Dimostrare che abababc appartiene al linguaggio definito da G.

Esercizio 6
Descrivere informalmente il linguaggio sull'alfabeto {0,1} rappresentato dalla seguente espressione regolare: ((0 + 1)11(01)*) + (01*)
Fornire una grammatica di Chomsky che definisca lo stesso linguaggio.

Esercizio 7
Sia G la grammatica ({a, b}, {S,A,B}, P, S), dove P contiene le seguenti produzioni
S --> a| bB
A --> bA | aB | a 
B --> bB | b | a
Il linguaggio definito da G e' rappresentabile anche come espressione regolare. Scrivere l'espressione regolare che definisce lo stesso linguaggio definito da G.

Esercizio 8
Dimostrare che la classe dei linguaggi definibile con grammatiche aventi produzioni della forma
 A--> bB | a
e' identica alla classe di quelli definibili con grammatiche con produzioni della forma
 A--> <alpha>B | a
in cui <alpha> e' una stringa di simboli terminali

Esercizio 9
Sia G1 = ({a, b}, {S,A}, P1, S), dove P1 sono le produzioni
S --> Ab | b 
A --> aAa | aa 
e sia G2 = ({a, b}, {S,A}, P2, S), dove P2 sono le produzioni
S --> Ab
A --> Aaa | epsilon
(dove con "epsilon" indichiamo la stringa vuota).
Dimostrare che G1 e G2 sono equivalenti.

Esercizio 10
Dimostrare che, data una grammatica G, esistono infinite altre grammatiche che definiscono L(G).

Esercizio 11 Fornire le definizioni di grammatiche di Chomsky di tipo 0, 1, 2 e 3.

Esercizio 12
La grammatica G = ({a, b}, {S,A,A0,B0}, P, S), dove P sono le produzioni
S --> T | epsilon
T --> aAT | bBT | A0a | B0b

Aa --> aA
Ab --> bA
Ba --> aB
Bb --> bB

AA0 --> A0a
BA0 --> A0b
AB0 --> B0a
BB0 --> B0b

A0 --> a 
B0 --> b
genera il linguaggio delle stringhe ripetute, cioe' {ww | w appartiene a (a+b)*}.
Dimostrare che la stringa abaaba appartiene ad L(G).

Esercizio 13
Si consideri la seguente grammatica G = ({a, b}, {S, A, B}, P, S), dove P sono le produzioni
S --> bbS | a | AA
A --> AAS | AASB | AB
B --> aBb | a | abaA | abbB | abbb 
Scrivere le produzioni di G nel formato BNF


Esercizio 14
Costruire l'automa a stati finiti che accetta il linguaggio sull'alfabeto {a,b} denotato dalla seguente espressione regolare:
((ab + a)(aa)*) + (ba)*
  • Soluzione.





    Esercizio 15
    Dare la definizione di automa a stati finiti non deterministico.


    Esercizio 16
    Scrivere l'espressione regolare, sull'alfabeto {0,1}, che denota il linguaggio L formato da tutte le stringhe che contengono la stringa 00 come prefisso oppure la stringa 110 come suffisso.
    Costruire l'automa a stati finiti che riconosce L.
    Definire la grammatica regolare che definisce L


    Esercizio 17
    Si consideri la seguente grammatica G=({1,0}, {S,A,B}, P, S), dove P e' composto dalle produzioni
    S --> A | B 
    A --> 0 | A1
    B --> 011C | 111C
    C --> epsilon | 01C
    Modificare le produzioni di G in modo che venga generato lo stesso linguaggio, ma la grammatica sia lineare destra


    Esercizio 18
    Costruire l'automa a stati finiti che accetta il linguaggio sull'alfabeto {a,b,c} denotato dalla seguente espressione regolare:
    ((ac + b)*) + ((b*a*)ac*a)


    Esercizio 19
    Si consideri il seguente automa a stati finiti deterministico
    M = ({a, b}, {q0, q1, q2, q3, q4, q5}, delta, q0, {q2, q3, q4})
    dove delta e' definita dalla seguente tabella
    delta |   a      b
    --------------------------
    q0    |   q1     q2
    --------------------------
    q1    |   q0     q3
    --------------------------
    q2    |   q4     q5
    --------------------------
    q3    |   q4     q5
    --------------------------
    q4    |   q4     q5
    --------------------------
    q5    |   q5     q5
    --------------------------
    
    Fornire il diagramma degli stati (grafo di transizione) che rappresenta M.


    Esercizio 20
    Nell'ultima parte della dimostrazione del Pumping Lemma sul testo di Ausiello (Teorema 3.4), per far vedere che per ogni n vale
    δ(q0, uvnw) = q i|z|
    si utilizzano ad un certo punto i puntini     = ...

    Dimostrare questa cosa utilizzando invece il principio di induzione.



    Esercizio 21
    Dimostrare che il linguaggio
    {anbn | n ≥0}
    non e' regolare


    Esercizio 22
    Dimostrare che per ogni possibile k il linguaggio
    {anbn | n ≤k}
    e' regolare.


    Esercizio 23
    Il linguaggio
    {akbn | n ≥0, k≤ n}
    e' regolare?
    E il linguaggio seguente?
    {anbk | n ≥0, k≤ n}
    E, preso un k qualsiasi, il seguente linguaggio e' regolare?
    {anbm | n ≥k, m≥ k}

  • Soluzione.

    Esercizio 24
    Fornire le espressioni regolari e gli automi a stati finiti corrispondenti ai linguaggi, tra quelli degli esercizi 22 e 23, che sono regolari.


    Esercizio 25
    Fornire le definizioni di Alfabeto, Stringa e Linguaggio.


    Esercizio 26
    Fornire le definizioni di Linguaggio Regolare e di Linguaggio Context Free.


    Esercizio 27
    Perche' i linguaggio Context Free rivestono particolare importanza per quanto riguarda i linguaggi di programmazione?


    Esercizio 28
    Si consideri la grammatica dell'esercizio 12.
    Fornire un albero di derivazione (albero sintattico) per la stringa abbaabba.


    Esercizio 29
    Cos'e' una grammatica ambigua?


    Esercizio 30
    (a) Fornire la definizione di espressione regolare e di automa a stati finito deterministico.

    (b) Scrivere l'espressione regolare, sull'alfabeto {0,1}, che denota il linguaggio L formato da tutte le stringhe che contengono la stringa 00 come prefisso oppure la stringa 110 come suffisso.
    Costruire l'automa a stati finiti che riconosce L.
    Definire la grammatica regolare che genera L.

    (c) Fissato un numero k qualsiasi, il seguente linguaggio e' regolare?
    {anbm | n ≥k, m≥ k}
    E questo?
    {akbncm | n ≥0, k≤ n, n≤ m}

  • Soluzione.



    Esercizio 31

    Dimostrare che la stringa abaaba appartiene al linguaggio generato dalla grammatica G = ({a, b}, {S,A,B,A0,B0}, P, S), dove P sono le produzioni
    S --> T | ε
    T --> aAT | bBT | A0a | A0b
    
    Aa --> aA              AA0 --> A0a
    Ab --> bA              BA0 --> A0b
    Ba --> aB              AB0 --> B0a
    Bb --> bB              BB0 --> B0b
    
    A0 --> a 
    B0 --> b
    
    
    
    Perche' non e' possibile fornire un albero di derivazione sintattica per la stringa abaaba generata da G?
  • Soluzione.


    Esercizio 32

    Si prenda la grammatica dell'esercizio 12 e si sostituisca la produzione

    T --> B0b

    con la produzione

    T --> A0b

    Qual e' il linguaggio generato da questa nuova grammatica?


    Esercizio 33
    Fornire l'automa a stati finiti deterministico che riconosca il linguaggio (a*bb)+c.
    Fornire inoltre l'automa a stati finiti che riconosca lo stesso linguaggio, ma produca un output {0,1} ad ogni passaggio di stato, in modo tale che nella transizione finale venga prodotto un '1' se e solo se la stringa accettata contiene un numero dispari di 'a' (non e' rilevante l'output prodotto nelle altre transizioni).
  • Soluzione.


    Esercizio 34
    Dimostrare che il complemento di un linguaggio regolare e' regolare.
  • Soluzione.

    Esercizio 35 (NO a.a.17-18)
    Supponiamo di voler avere un linguaggio di programmazione simile alle URM. L'unica cosa che cambia in pratica e' che i numeri naturali che si possono utilizzare come indici di istruzioni sono finiti (mettiamo 100) e che i numeri naturali che si possono inserire dentro un registro siano anch'essi finiti (100 anche in questo caso). Il numero di registri supponiamo pure essere finito (sempre 100).
    Chiamiamo LURM il linguaggio cosi' ottenuto.
    Definire formalmente tale linguaggio con una grammatica in BNF.

    Esercizio 36 (NO a.a.17-18)
    Realizzare la macchina astratta associata al linguaggio LURM (come definito nell'esercizio 35) per compilazione sulla macchina JAVA.
    Fornirne anche una realizzazione interpretativa.

  • Possibile soluzione. - realizzazione interpretativa - (by Grigori Valenti)
  • Possibile soluzione. - (file .zip) - realizzazioni interpretativa e compilativa - (by Fabio D'urso)

    Esercizio 37

    Dimostrare che, dato un alfabeto non vuoto, esiste almeno un linguaggio su tale alfabeto non generabile da una grammatica di Chomsky.
  • Soluzione.

    Esercizio 38

    Definire la grammatica regolare G che genera il linguaggio sull'alfabeto {a,b} composto dalle stringhe caratterizzate dal fatto che il penultimo carattere è b.
    Definire inoltre una grammatica lineare sinistra equivalente a G.
    Definire poi un ASFD che riconosca le stringhe del linguaggio generato da G.

  • Possibile Soluzione.

    Esercizio 39

    Descrivere la macchina di Turing che riconosce il linguaggio formato dalle stringhe sull'alfabeto {a,b,c} tali che tutte le sottosequenze massimali composte di sole `a` sono in numero pari. (Consideriamo pari il numero 0).
    La macchina fornita accetta il linguaggio o lo riconosce solamente?
    Il linguaggio descritto e' (strettamente) di tipo 0,1,2 oppure 3?
  • Soluzione. (by Ecosentino)

    Esercizio 40

    Dire perche' i linguaggi derivabili con grammatiche con produzioni della forma A → α B | β (dove α β sono stringhe di terminali), sono generabili con grammatiche con produzioni della forma A → aB | b (dove a e b sono simboli terminali).
  • Soluzione.

    Esercizio 41

    Dimostrare che il linguaggio {ahbk | h,k≥0 , h>k } non e' regolare.
    Descrivere la Macchina di Turing che riconosca tale linguaggio.

  • Soluzione.

    Esercizio 42

    Dimostrare che, dato un alfabeto vuoto, esiste almeno un linguaggio su tale alfabeto non generabile da una grammatica di Chomsky.
  • Soluzione.

    Esercizio 43

    Preso un alfabeto Σ, definire formalmente l'insieme Σ*.
    Dimostrare come, se si considera Σ={a,b,c}, gli elementi dell'insieme Σ* possano venir messi in corrispondenza biunivoca con i numeri naturali.

    Esercizio 44

    Dimostrare che, preso un alfabeto Σ (per esempio il Σ dell'esercizio precedente), i linguaggi su Σ non possono venir messi in corrispondenza biunivoca con i numeri naturali.

    Esercizio 45 (NO a.a.17-18)

    Usare il metodo di Diagonalizzazione per dimostrare che ci sono funzioni calcolabili che non sono primitive ricorsive.

    Esercizio 46
    Γ = {a,b}
    Q = {q0,q1,q2,qF}
    F = {qF}
    stato iniziale = q0
    e dalla seguente tabella di transizione:
         a         b       blank
    ----------------------------------
    q0 | a,q2,D | b,q1,D |            |
       -------------------------------
    q1 | a,q0,D | b,q2,D |            |
       -------------------------------
    q2 | a,q1,D | b,q2,D | blank,qF,I |
    ----------------------------------
    
    E' possibile capire subito se questa macchina di turing riconosce un linguaggio regolare? Perche'?
  • Soluzione.


    Esercizio 47
    Dimostrare che un linguaggio non-regolare ha un numero infinito di stringhe.
  • Soluzione.


    Esercizio 48

    Dimostrare formalmente che il linguaggio {an b | n≥0} coincide con il linguaggio riconosciuto dall'automa
    some text
    Utilizzare il concetto di funzione di transizione δ e di funzione δ.
    Si consideri che la funzione δ, puo' essere definita anche nel seguente modo:
    δ(q,ε) = q
    δ(q,ax) = δ(δ(q,a),x)
    Per semplicita', si supponga di aver gia' dimostrato che le stringhe riconosciute dall'automa siano tutte della forma anb. Si dimostri quindi solamente che tutte quelle della forma anb sono riconosciute.
  • Soluzione.

    Esercizio 49

    Si dimostri che esistono linguaggi che non possono essere generati da alcuna grammatica.
  • Soluzione.

    Esercizio 50

    Si consideri la seguente grammatica G=({1,0}, {S,A,B}, P, S), dove P e' composto dalle produzioni
    S --> A | B 
    A --> 0 | A1
    B --> 011C | 111C
    C --> ε | 01C
    Modificare le produzioni di G in modo che venga generato lo stesso linguaggio, ma la grammatica sia lineare destra.
  • Soluzione.

    Esercizio 51

    Fornire formalmente la definizione di derivazione diretta in una grammatica, quella di derivazione e quella di linguaggio generato da una grammatica.

    Esercizio 52

    Fornire l'automa a stati finiti che riconosca il seguente linguaggio
    {s∈{0,1}* | s rappresenta un numero dispari in notazione posizionale binaria}.

  • Soluzione.

    Esercizio 53

    Dimostrare che il linguaggio {ahbk | h,k≥0 , h>k } non e' regolare.
  • Soluzione.

    Esercizio 54

    Sia data la rete stradale in figura.
            a       b      c
       A------->o------->o---->B
        \       |        ^\           
         \      |       /  |      
          \d    |     f/   |
           \   e|     /    |
            \   |    /     |
             \  |   /     g|
              \ |  /       |
               v| /        |
                v/    h    v
                o<---------o
    
    Fornire l'espressione regolare che rappresenta il linguaggio di tutti i percorsi da A a B (inclusi i cicli).
  • Soluzione.

    Esercizio 55

    Si consideri la grammatica G = <{a,b,c},{S,A},P,S>, dove P e'
    S  → aSc | A
    Ac → bA | ε
    
    Dimostrare che
    L(G) = {anbmcn-m | n>0, m>0, n≥m}

  • Soluzione.

    Esercizio 56

    Fornire le definizioni di linguaggio decidibile e di linguaggio semidecidibile. Fornire informalmente un algoritmo di semidecisione per linguaggi di tipo 1 (contestuali).
  • Soluzione.

    Esercizio 57

    Descrivere il formalismo delle espressioni regolari come definito dal testo di Ausiello.
    Dire come e' possibile definire in tale formalismo il linguaggio contenente la sola stringa vuota.
  • Soluzione.

    Esercizio 58

    Si consideri il seguente linguaggio L:
    {anbmcn-m | n≥0, m≥0, n≥m}
    Dimostrare formalmente, che L e' il il linguaggio generato dalla grammatica seguente
    S → aSc | A
    Ac → bA 
    A → ε
    

  • Soluzione.

    Esercizio 59

    Fornire la definizione di espressione regolare. Fornire inoltre l'espressione regolare
    che rappresenta il linguaggio di tutte le stringhe lunghe 3 sull'alfabeto {a,b,c,d}.
  • Soluzione.

    Esercizio 60

    Sia G1 una grammatica con il seguente insieme di produzioni:
    S --> aS | b
    e sia G2 una grammatica con il seguente insieme di produzioni:
    S --> b | Ab
    A --> Aa | a

    Dimostrare che G1 e G2 sono equivalenti.
  • Soluzione.

    Esercizio 61

    Dimostrare che il linguaggio
    L = {ahbk | h,k>0, h>k}
    non e' regolare.
  • Soluzione.

    Esercizio 62

    Fornire la definizione formale di Grammatica di Chomsky. Definire formalmente le grammatiche di tipo 0,1,2 e 3.

    Esercizio 63

    Si consideri un insieme numerabile di simboli A e di dimostri che l'insieme delle stringhe di lunghezza finita di simboli di A e' un insieme numerabile. Lo si faccia descrivendo come sia possibile enumerare (cioe' come sia possibile costruire una lista infinita di) tutte e sole le strighe in questione.
  • Soluzione.

    Esercizio 64

    Sia G1 = {{a,b,c},{S,A,B},P,S} dove P = { S → AAdcc, S → bbScc, A → cc }
    Sia G2 = {{a,b},{S,A,B},P,S} dove P = { S → AAd, S → bbScc, aa → cAc }
    Sia G3 = {{a,b,c},{S,A,B},P,S} dove P = { S → AAaa, ccSaa → bbScc, A → cAc }
    Sia G4 = {{a,b,c},{S,A,B},P,S} dove P = { A → AAaa, B → bbScc, A → cBc }
    Dire se quelle sopra definite sono grammatiche di Chomsky. Dire eventualmente a quale classe di grammatiche appartengono.
  • Soluzione.

    Esercizio 65

    Fornire la definizione di grammatica formale. Fornire inoltre le definizioni di grammatica di tipo 0,1,2 e 3.

    Esercizio 66

    Definire una grammatica che generi il linguaggio {an bm cp | n = m ∨ m = p, n,m,p≥0} e dimostrare la sua correttezza.
  • Soluzione.

    Esercizio 67

    Dimostrare che l'insieme dei linguaggi di tipo 3 e' numerabile.
    (Supponiamo di sapere che i caratteri utilizzati nelle espressioni regolari, oltre ai simboli '*','+','(', ecc. siano presi da un insieme A numerabile; supponiamo inoltre di sapere che e' possibile generare tutte le stringhe di lunghezza finita sull'alfabeto A).
  • Soluzione.

    Esercizio 68

    Dare la definizione di espressione regolare. Scrivere inoltre l'espressione regolare che rappresenta il linguaggio di tutte le stringhe sull'alfabeto {a,b,c,d} che terminano con "abb".
  • Soluzione.

    Esercizio 69

    Sia G=({a,b,c},{S,A,B},P,S) dove P contiene le seguenti regole
    S -> Ac,
    A -> AB | B,
    B -> aAb | ab.
    
    Dimostrare che la stringa aaabbbc appartiene al linguaggio generato da G.
  • Soluzione.

    Esercizio 70

    Dimostrare che il linguaggio
    L = {ahbk | h,k>0, h>k}
    non e' regolare.
  • Soluzione. (file .pdf)
  • Soluzione. (file .doc)

    Esercizio 71

    Costruire l'automa a stati finiti deterministico che accetta il linguaggio delle stringhe sull'alfabeto {a,b} con un numero pari di 'a' e un numero pari di 'b'.
    (consideriamo pari il numero 0)
    Fare l'esercizio considerando "dispari" al posto di "pari"
  • Soluzione.

    Esercizio 72

    Sia L il linguaggio di tutte le stringhe sull.alfabeto {a,b} che hanno il carattere .b. in penultima posizione.
    Scrivere un.espressione regolare che denota il linguaggio L;  Definire una grammatica che genera il linguaggio L;  Costruire un automa a stati finiti NON DETERMINISTICO che accetta il linguaggio L;  Costruire un automa a stati finiti DETERMINISTICO che accetta il linguaggio L. 
  • Soluzione.

    Esercizio 73

    Fornire la definizione formale di Macchina di Turing deterministica.
    Si consideri la seguente Macchina di Turing
    M=< Γ, blank, Q, q0, F, δ >
    con Γ = {a, b, c} Q = {q0, q1, qF} F = {qF} e la funzione δ cosi' definita
                a              b              c               blank
    
    q0     q1 | a |D      q0 | b | D     q0 | c | D      qF | blank |I
    
    q1     q0 | a |D
    
    Dire se la stringa .aabcaa. e. accettata o rifiutata da M. Giustificare la risposta.
  • Soluzione.

    Esercizio XX


  • Soluzione.

    Esercizio XX


  • Soluzione.

    Esercizio XX


  • Soluzione.