Automi e Linguaggi formali 17/18

NON GARANTISCO LA CORRETTEZZA DEGLI ESERCIZI

Il nome di ogni esercizio è dato dal numero della slide più il numero della pagina in cui si trova e da una lettera se presenti più esercizi nella stessa pagina.

Raccolta esercizi

▶︎
all
running...

Tutorato 01

Link repository ALIENK9 \rightarrow esercizi completi

Esercizio tut01A

DFA che accetta tutte le stringhe che iniziano o finiscono con 01.

Esercizio tut01B

DFA che accetta tutte le stringhe che contengono almeno 2 zeri lunghe 5 caratteri.

Esercizio tut01C

Trasformare da NFA a DFA.

Esercizio tut01D

Vedi esercizio 25 slide 02. LINK

Esercizio tut01E

Trasformare da ε\varepsilon-NFA a DFA.

Chiusura = insieme di tutti gli stati in cui si può arrivare seguendo le ε\varepsilon-transizioni.

ENCLOSE (q0q_0)={q0,q1,q2}\{q_0,q_1,q_2\}

a b c
{q0,q1,q2}\rightarrow \{q_0,q_1,q_2\} {q0,q1,q2}\{q_0,q_1,q_2\} {q1,q2}\{q_1,q_2\} {q2}\{q_2\}
*{q1,q2}\{q_1,q_2\} \emptyset {q1,q2}\{q_1,q_2\} {q2}\{q_2\}
*{q2}\{q_2\} \emptyset \emptyset {q2}\{q_2\}
\emptyset \emptyset \emptyset \emptyset

Esercizio tut01F

DFA che accetta multipli di 3 in binario.

In questo caso bisogna prendere il binario e dividerlo per 3 e poi osservare i resti.
Gli stati rappresentano:

Ci interessa resto 0 per trovare i multipli di 3 quindi q0q_0 è lo stato finale.
Partendo da q0q_0 potrei trovare 0 (rimango in q0q_0) oppure 1 (mi sposto in q1q_1 \rightarrow resto 1). Se sono in q1q_1 significa che prima ho trovato un 1 quindi trovando un altro 1 (ottenedo 11 che da resto 0 \rightarrow torno in q0q_0) oppure 0 (ottenengo 10 che mi da resto 2 \rightarrow vado in q2q_2). Essendo arrivato in q2q_2 ho trovato 10 e da qui posso trovare 0 (ottengo 100 che mi da resto 1 \rightarrow vado in q1q_1) oppure 1 (ottengo 101 che mi da resto 2 \rightarrow rimango in q2q_2).

Esercizio tut01G

Espressioni regolari con:

Tutorato 02

Link repository ALIENK9 \rightarrow esercizi completi

Esercizio 4.1.2C

L = {0p^p: con p potenza di 2} è regolare?

Tutorato 03

Link repository ALIENK9 \rightarrow esercizi completi

01-intro-dfa

Esercizio 0122

Automa che accetta il linguaggio delle stringhe con 01 come sottostringa.

Esercizio 0123A

Insieme di tutte e sole le stringhe con un numero pari di 0 e un numero pari di 1.

Esercizio 0123B

Insieme di tutte le stringhe che finiscono con 00.

Esercizio 0123C

Insieme di tutte le stringhe che contengono esattamente tre zeri (anche non consecutivi).

Esercizio 0123D

Insieme delle stringhe che cominciano o finiscono (o entrambe le cose) con 01.

Esercizio 0124

Modellare il comportamento di un distributore di bibite con un DFA. Il modello deve rispettare le seguenti specifiche:

02-03-nfa

Esercizio 02-0305E

Insieme di tutte le stringhe che finiscono con 01.

Esercizio 02-0307

Riconosce le parole che terminano con 01 “scommettendo” se sta leggendo gli ultimi due simboli oppure no

Esercizio 02-0312A

L’insieme delle parole sull’alfabeto {0, 1, . . . , 9} tali che la cifra finale sia comparsa in precedenza.

Esercizio 02-0312B

L’insieme delle parole sull’alfabeto {0, 1, . . . , 9} tali che la cifra finale non sia comparsa in precedenza.


(Non vale per stringhe con solo 1 cifra ripetuta più di una volta)

Esercizio 02-0312C

L’insieme delle parole di 0 e 1 tali che esistono due 0 separati da un numero di posizioni multiplo di 4 (0 è un multiplo di 4).

Esercizio 02-0313

Consideriamo l’alfabeto Σ = {a, b, c, d} e costruiamo un automa non deterministico che riconosce il linguaggio di tutte le parole tali che uno dei simboli dell’alfabeto non compare mai:

Esercizio 02-0323

Determinare il DFA equivalente all’NFA con la seguente tabella di transizione:

0 1
q0\rightarrow q_0 {q0q_0} {q0q_0,q1q_1}
q1q_1 {q1q_1} {q0q_0,q2q_2}
*q2q_2 {q1q_1,q2q_2} {q0q_0,q1q_1,q2q_2}

Qual è il linguaggio accettato dall’automa?

Tutte le stringhe che appartengono all'alfabeto (0,1) e che contengono almeno due 1.

Esercizio 02-0324

Trasformare il seguente NFA in DFA.

Esercizio 02-0325

Determinare il linguaggio riconosciuto dall’automa.
Costruire un DFA equivalente.

Tutte le stringhe che terminano per 001 o 110.

04-epsilon

Esercizio 0402

Convertire il seguente NFA in DFA:

0 1
\rightarrowA {A,C} {B}
*B {C} {B}
C {B} {D}
D {\emptyset} {\emptyset}

Esercizio 0404

Costruiamo un NFA che accetta numeri decimali:

Esercizio 0418

  1. Costruiamo un ε-NFA che riconosce le parole costituite da:

    • zero o più a
    • seguite da zero o più b
    • seguite da zero o più c

  2. Calcolare ECLOSE di ogni stato dell’automa

    • ECLOSE(q0) = {q0, q1, q2}
    • ECLOSE(q1) = {q1, q2}
    • ECLOSE(q2) = {q2}
  3. Convertire l’ε-NFA in DFA

Vedi esercizio E tutorato 01 Link

05-regexp

Esercizio 0512

Scriviamo l’espressione regolare per L = {w ∈ {0, 1}^* : 0 e 1 alternati in w}.

(01)^* + (10)^* + 1(01)^* + 0(10)^*

Oppure

(ε\varepsilon + 1)(01)^*(ε\varepsilon + 0)

Esercizio 0514A

Costruire una ER sull’alfabeto {a, b, c} tale che tutte le stringhe w che contengono un numero pari di a;

(b+c)^* (a(b+c)^*a(b+c)^*)^*

Esercizio 0514B

Costruire una ER sull’alfabeto {a, b, c} tale che tutte le stringhe w che contengono 4k + 1 occorrenze di b, per ogni k ≥ 0.

(a+c)^*b(b(a+c)^*b(a+c)^*b(a+c)^*b(a+c)^*)^*

Esercizio 0514C

Costruire una ER sull’alfabeto {a, b, c} tale che tutte le stringhe la cui lunghezza è un multiplo di 3.

((a+b+c)(a+b+c)(a+b+c))^*

Esercizio 0515A

Costruire una ER sull’alfabeto {0, 1} tale che tutte le stringhe w che contengono la sottostringa 101.

(0+1)^*101(0+1)^*

Esercizio 0515B

Costruire una ER sull’alfabeto {0, 1} tale che tutte le stringhe w che non contengono la sottostringa 101.

0^*(1+000^*)^*0^*

Esercizio 0515C

Costruire una ER sull’alfabeto {0, 1} per il linguaggio di tutti i numeri binari multipli di 3.

0^*((1(01^*0)^*1)^*0^*)^*

Esercizio 0520

Trasformare (0 + 1)^*1(0 + 1) in ε\varepsilon-NFA

06-esercizi-er

Esercizio 0607A

Trasformiamo (0+1)^*1(0+1) in ε\varepsilon-NFA

Esercizio 0607B

Scrivere un’espressione regolare per rappresentare il linguaggio sull’alfabeto {a, b, c} che contiene tutte le stringhe che:

La prima condizione si potrebbe interpretare in 2 modi diversi.

  1. a(a+b)^*+c
  2. a(a*+b*)+c

Esercizio 0607C

Trasformare l’espressione regolare dell’esercizio 2 in ε\varepsilon-NFA.

Primo caso:

Secondo caso:

Esercizio 0608A

Scrivere una espressione regolare per tutte stringhe binarie che cominciano e finiscono per 1.

1(0+1)^*1+1

Esercizio 0608B

Scrivere una espressione regolare per le stringhe binarie che contengono almeno tre 1 consecutivi.

(0+1)^* 111 (0+1)^*

Esercizio 0608C

Scrivere una espressione regolare per le stringhe binarie che contengono almeno tre 1 (anche non consecutivi).

(0+1)^* 1 (0+1)^* 1 (0+1)^* 1 (0+1)^*

oppure

(0+1)^* 1 0^* 1 0^* 1 (0+1)^*

Esercizio 0608D

Scrivere una espressione regolare per stringhe di testo che descriva le date in formato GG/MM/AAAA.

0(1+...+9)+(1+2)(0+..+9)+3(0+1)/0(1+...+9)+1(0+...+2)/(0+...+9)4^4

Ovviamente non controlla gli anni bisestili e nemmeno che ci siano 30 o 31 giorni in un determinato mese.

07-dfa2re

Esercizio 0707A

Costruiamo l’espressione regolare equivalente al seguente NFA:

Eliminando gli stati q1q_1 e q2q_2:

Eliminando gli stati q1q_1 e q3q_3:

Sommando le 2 espressioni precedenti si ottiene la ER cercata:
((0+1)^*1(0+1)(0+1))+(0+1(^*1(0+1))

Esercizio 0707B

Costruiamo l’espressione regolare equivalente al seguente NFA:

Esercizio 0708

Costruiamo l’espressione regolare equivalente al seguente NFA:

(1+0(10^*1+0)(1(10^*1+0))^*0)^*

08-pumpinglemma

Esercizio 0811

Sia LabL_{ab} il linguaggio delle stringhe sull’alfabeto {a, b} con un numero di b maggiore del numero di a. LabL_{ab} è regolare?

No, LabL_{ab} non è regolare:

Esercizio 0812

Il linguaggio LrevL_{rev} = {wwRww^R : w ∈ {a, b}^*} è regolare?

No, LrevL_{rev} non è regolare:

Esercizio 0813

Il linguaggio LnkL_{nk} = {anbk:na^nb^k : n è dispari oppure k è pari} è regolare?

Sì, LnkL_{nk} è regolare:

09-esercizi-pl

Esercizio 0904

Sia LabL_{ab} il linguaggio delle stringhe sull’alfabeto {a, b} dove il numero di a è uguale al numero di b. LabL_{ab} è regolare?

No, LabL_{ab} non è regolare:

Esercizio 0905

Vedi esercizio 12 slide 08. LINK

Esercizio 0906

Vedi esercizio 13 slide 08. LINK

Esercizio 0906

Il linguaggio LpL_p = {1p1^p : p è primo} è regolare?

No, LpL_p non è regolare:

Esercizio 0909A

Il linguaggio L3n+2L_{3n+2} = {13n+2:n01^{3n+2} : n ≥ 0} è regolare?

Sì, L3n+2L_{3n+2} è regolare:

Esercizio 0909B

Il linguaggio LmnL_{mn} = {0n1m0n:m+n>00^n1^m0^n : m + n > 0} è regolare?

No, LmnL_{mn} non è regolare:

Esercizio 0909C

Il linguaggio L2aL_{2a} = { w ∈ {a, b}^*: il numero di a è due volte il numero di b} è regolare?

No, L2aL_{2a} non è regolare:

10-chiusure

//TODO

11-fm-esercizi

Esercizio 1112

Costruire l’automa che riconosce l’intersezione dei linguaggi dei seguenti due automi:


Soluzione senza stati finali (q0p3q_0p_3) o (q1p3q_1p_3)

Esercizio 1113A

Costruire un DFA sull’alfabeto {0, 1} che rappresenti tutte le stringhe w che contengono la sottostringa 101.

Esercizio 1113B

Costruire un DFA sull’alfabeto {0, 1} che rappresenti tutte le stringhe w che non contengono la sottostringa 101.

Esercizio 1114A

Sia L un linguaggio sull’alfabeto Σ e a ∈ Σ. Definiamo il quoziente di L e a come il linguaggio:
L/a = {w ∈ Σ^* : wa ∈ L}
Dimostrare che se L è regolare allora anche L/a è regolare.

//todo

Esercizio 1114B

Sia L un linguaggio regolare. Dimostrare che anche i seguenti linguaggi sono regolari:

Min sono le parole più corte che appartengono ad L
Max sono le parole più lunghe che appartengono ad L
Prefesso proprio di w: segmento iniziale di w
w=a1_1......an_n prefisso proprio di w sono tutte le parole a1_1...ak_k con k < n

//todo

Credits