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.
Link repository ALIENK9 esercizi completi
DFA che accetta tutte le stringhe che iniziano o finiscono con 01.
DFA che accetta tutte le stringhe che contengono almeno 2 zeri lunghe 5 caratteri.
Trasformare da NFA a DFA.
Vedi esercizio 25 slide 02. LINK
Trasformare da -NFA a DFA.
Chiusura = insieme di tutti gli stati in cui si può arrivare seguendo le -transizioni.
ENCLOSE ()=
a | b | c | |
---|---|---|---|
* | |||
* | |||
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 è lo stato finale.
Partendo da potrei trovare 0 (rimango in ) oppure 1 (mi sposto in resto 1). Se sono in significa che prima ho trovato un 1 quindi trovando un altro 1 (ottenedo 11 che da resto 0 torno in ) oppure 0 (ottenengo 10 che mi da resto 2 vado in ). Essendo arrivato in ho trovato 10 e da qui posso trovare 0 (ottengo 100 che mi da resto 1 vado in ) oppure 1 (ottengo 101 che mi da resto 2 rimango in ).
Espressioni regolari con:
2 oppure 3 b
con ={a,b}
a*ba*ba*(ba*+)
numero di zeri multiplo di 5 con ={0,1}
(1*01*01*01*01*01*)*1*
lunghezza stringa multiplo di 3 con ={a,b,c}*
((a+b+c)(a+b+c)(a+b+c))*
Link repository ALIENK9 esercizi completi
L = {0: con p potenza di 2} è regolare?
Link repository ALIENK9 esercizi completi
Automa che accetta il linguaggio delle stringhe con 01 come sottostringa.
Insieme di tutte e sole le stringhe con un numero pari di 0 e un numero pari di 1.
Insieme di tutte le stringhe che finiscono con 00.
Insieme di tutte le stringhe che contengono esattamente tre zeri (anche non consecutivi).
Insieme delle stringhe che cominciano o finiscono (o entrambe le cose) con 01.
Modellare il comportamento di un distributore di bibite con un DFA. Il modello deve rispettare le seguenti specifiche:
Insieme di tutte le stringhe che finiscono con 01.
Riconosce le parole che terminano con 01 “scommettendo” se sta leggendo gli ultimi due simboli oppure no
L’insieme delle parole sull’alfabeto {0, 1, . . . , 9} tali che la cifra finale sia comparsa in precedenza.
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)
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).
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:
Determinare il DFA equivalente all’NFA con la seguente tabella di transizione:
0 | 1 | |
---|---|---|
{} | {,} | |
{} | {,} | |
* | {,} | {,,} |
Qual è il linguaggio accettato dall’automa?
Tutte le stringhe che appartengono all'alfabeto (0,1) e che contengono almeno due 1.
Trasformare il seguente NFA in DFA.
Determinare il linguaggio riconosciuto dall’automa.
Costruire un DFA equivalente.
Tutte le stringhe che terminano per 001 o 110.
Convertire il seguente NFA in DFA:
0 | 1 | |
---|---|---|
A | {A,C} | {B} |
*B | {C} | {B} |
C | {B} | {D} |
D | {} | {} |
Costruiamo un NFA che accetta numeri decimali:
+
o −
(opzionale).
Costruiamo un ε-NFA che riconosce le parole costituite da:
Calcolare ECLOSE di ogni stato dell’automa
Convertire l’ε-NFA in DFA
Vedi esercizio E tutorato 01 Link
Scriviamo l’espressione regolare per L = {w ∈ {0, 1} : 0 e 1 alternati in w}.
(01) + (10) + 1(01) + 0(10)
Oppure
( + 1)(01)( + 0)
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))
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))
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))
Costruire una ER sull’alfabeto {0, 1} tale che tutte le stringhe w che contengono la sottostringa 101.
(0+1)101(0+1)
Costruire una ER sull’alfabeto {0, 1} tale che tutte le stringhe w che non contengono la sottostringa 101.
0(1+000)0
Costruire una ER sull’alfabeto {0, 1} per il linguaggio di tutti i numeri binari multipli di 3.
0((1(010)1)0)
Trasformare (0 + 1)1(0 + 1) in -NFA
Trasformiamo (0+1)1(0+1) in -NFA
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.
Trasformare l’espressione regolare dell’esercizio 2 in -NFA.
Primo caso:
Secondo caso:
Scrivere una espressione regolare per tutte stringhe binarie che cominciano e finiscono per 1.
1(0+1)1+1
Scrivere una espressione regolare per le stringhe binarie che contengono almeno tre 1 consecutivi.
(0+1) 111 (0+1)
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)
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)
Ovviamente non controlla gli anni bisestili e nemmeno che ci siano 30 o 31 giorni in un determinato mese.
Costruiamo l’espressione regolare equivalente al seguente NFA:
Eliminando gli stati e :
Eliminando gli stati e :
Sommando le 2 espressioni precedenti si ottiene la ER cercata:
((0+1)1(0+1)(0+1))+(0+1(1(0+1))
Costruiamo l’espressione regolare equivalente al seguente NFA:
Costruiamo l’espressione regolare equivalente al seguente NFA:
(1+0(101+0)(1(101+0))0)
Sia il linguaggio delle stringhe sull’alfabeto {a, b} con un numero di b maggiore del numero di a. è regolare?
No, non è regolare:
supponiamo per assurdo che lo sia
sia la lunghezza data dal Pumping Lemma
consideriamo la parola
prendiamo un qualsiasi split tale che e :
per il Pumping Lemma, anche ∈ , ma contiene più a che b ⇒ assurdo.
Il linguaggio = { : w ∈ {a, b}} è regolare?
No, non è regolare:
supponiamo per assurdo che lo sia
sia la lunghezza data dal Pumping Lemma
consideriamo la parola
prendiamo un qualsiasi split tale che e :
per il Pumping Lemma, anche , ma non la posso spezzare in ⇒ assurdo.
Il linguaggio = { è dispari oppure k è pari} è regolare?
Sì, è regolare:
Sia il linguaggio delle stringhe sull’alfabeto {a, b} dove il numero di a è uguale al numero di b. è regolare?
No, non è regolare:
supponiamo per assurdo che lo sia
sia la lunghezza data dal Pumping Lemma
consideriamo la parola
prendiamo un qualsiasi split tale che e :
poiché , le stringhe x e y sono fatte di sole a
per il Pumping Lemma, anche ∈ , ma contiene più a che b ⇒ assurdo.
Vedi esercizio 12 slide 08. LINK
Vedi esercizio 13 slide 08. LINK
Il linguaggio = { : p è primo} è regolare?
No, non è regolare:
supponiamo per assurdo che lo sia
sia la lunghezza data dal Pumping Lemma
consideriamo la parola con primo e
prendiamo un qualsiasi split tale che e :
sia allora
per il Pumping Lemma, anche ∈
allora sì può scomporre in due fattori
poiché , allora e
anche perché abbiamo scelto e perché
i due fattori sono entrambi maggiori di 1 e quindi non è un numero primo
, assurdo.
Il linguaggio = {} è regolare?
Sì, è regolare:
Il linguaggio = {} è regolare?
No, non è regolare:
supponiamo per assurdo che lo sia
sia la lunghezza data dal Pumping Lemma
consideriamo la parola
prendiamo un qualsiasi split tale che e :
poiché , le stringhe x e y sono fatte di soli 0
per il Pumping Lemma, anche ∈ , ma il numero di 0
a sinistra e destra degli 1
non è uguale ⇒ assurdo.
Il linguaggio = { w ∈ {a, b}: il numero di a è due volte il numero di b} è regolare?
No, non è regolare:
supponiamo per assurdo che lo sia
sia la lunghezza data dal Pumping Lemma
consideriamo la parola
prendiamo un qualsiasi split tale che e :
poiché , le stringhe x e y sono fatte di sole a
per il Pumping Lemma, anche ∈ , ma il numero di a
è più del doppio del numero delle b
⇒ assurdo.
//TODO
Costruire l’automa che riconosce l’intersezione dei linguaggi dei seguenti due automi:
Soluzione senza stati finali () o ()
Costruire un DFA sull’alfabeto {0, 1} che rappresenti tutte le stringhe w che contengono la sottostringa 101.
Costruire un DFA sull’alfabeto {0, 1} che rappresenti tutte le stringhe w che non contengono la sottostringa 101.
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
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=a......a prefisso proprio di w sono tutte le parole a...a con k < n
//todo