• Non ci sono risultati.

1Esempiodicostruzione Dalleespressioniregolariagli ϵ -NFA—Esempioecomplessità AzzoliniRiccardo2020-11-12

N/A
N/A
Protected

Academic year: 2021

Condividi "1Esempiodicostruzione Dalleespressioniregolariagli ϵ -NFA—Esempioecomplessità AzzoliniRiccardo2020-11-12"

Copied!
5
0
0

Testo completo

(1)

Azzolini Riccardo 2020-11-12

Dalle espressioni regolari agli ϵ-NFA — Esempio e complessità

1 Esempio di costruzione

Si vuole costruire l’ϵ-NFA corrispondente all’espressione regolare R = (a + b)abb. La struttura di quest’espressione può essere rappresentata come un albero, in cui le foglie sono le costanti (i casi basi della definizione di espressione regolare) e i nodi interni sono gli operatori (i casi induttivi della definizione):

·

·

·

()

+

a b

a b

b R11

R9

R7

R5

R4

R3

R1 R2

R6

R8

R10

Siccome l’algoritmo di costruzione dell’ϵ-NFA opera in modo induttivo (costruendo pri- ma gli automi per le sottoespressioni, e poi “combinandoli” nell’automa per l’intera espressione), esso corrisponde a una visita in postordine di quest’albero:

• prima si visita ricorsivamente il sottoalbero sinistro;

• poi si visita ricorsivamente il sottoalbero destro;

(2)

• infine si visita la radice.

Nella raffigurazione dell’albero riportata sopra, Ri indica l’i-esima sottoespressione che si incontra in questo ordine di visita. Dunque, bisogna costruire prima l’automa per R1, poi quello per R2, e così via, fino ad arrivare a R11= R. In seguito, verranno illustrati tutti i passi di costruzione, evidenziando ogni volta in rosso i nuovi stati e le nuove transizioni.

1. Per l’espressione R1 = a si definisce il seguente automa AR1, secondo uno dei casi base dell’algoritmo di costruzione:

s1 a s2

2. Analogamente, per R2= b si costruisce il seguente AR2:

s3 b s4

Agli stati aggiunti in questo passo sono stati dati dei nomi nuovi, diversi da quelli usati in AR1, per evitare “conflitti” di nomi quando AR1 e AR2 verranno poi messi insieme. Lo stesso criterio verrà usato per scegliere i nomi degli stati aggiunti anche in tutti i passi successivi.

3. Per R3 = a + b, si costruisce AR3 in base a uno dei casi induttivi dell’algoritmo:

s5

s1 s2

s3 s4

s6

ϵ

a

ϵ

ϵ

a

ϵ

4. L’espressione R4 = (a + b) è semplicemente R3 racchiusa tra parentesi, cioè genera lo stesso linguaggio di R3, quindi anche l’automa rimane uguale, AR4 = AR3:

s5

s1 s2

s3 s4

s6 ϵ

a

ϵ

ϵ

a

ϵ

5. Per R5 = (a + b), AR5 è:

(3)

s7 s5

s1 s2

s3 s4

s6 s8

ϵ

ϵ

a

ϵ

ϵ

ϵ

a

ϵ ϵ

ϵ

6. R6 = a è uguale a R1 = a, ma all’interno dell’espressione R queste due a sono istanze diverse, che hanno ruoli diversi. Allora, non si può riutilizzare AR1, per- ché così gli stati avrebbero gli stessi nomi: nel proseguimento della costruzione, gli automi corrispondenti alle due istanze di a finirebbero per “sovrapporsi”, “collas- sare” in un unico automa, mentre si vuole che rimangano separati. Bisogna invece costruire un automa AR6, i cui stati abbiano nomi nuovi:

s9 a s10 7. Per R7 = (a + b)a si definisce il seguente AR7:

s7 s5

s1 s2

s3 s4

s6 s8

s9

s10

ϵ

ϵ

a

ϵ

ϵ

ϵ

a ϵ

a

ϵ ϵ

ϵ

8. Anche per R8 = b bisogna costruire un nuovo automa AR8, invece di riutilizzare AR2:

s11 b s12

9. Per R9 = (a + b)ab, AR è:

(4)

s7 s5

s1 s2

s3 s4

s6 s8

s9 s10

s11 s12

ϵ

ϵ

a

ϵ

ϵ

ϵ

a b ϵ

ϵ

a

ϵ ϵ

ϵ

10. Per R10 = b, si deve costruire di nuovo un automa AR10 che sia indipendente da AR2 e AR8:

s13 b s14

11. Infine, l’automa AR11 per l’intera espressione regolare R11= R = (a + b)abb è:

s7 s5

s1 s2

s3 s4

s6 s8

s9 s10

s11 s12

s13 s14

ϵ

ϵ

a

ϵ

ϵ

ϵ

a b ϵ

b ϵ

ϵ

a

ϵ ϵ

ϵ

2 Complessità dell’algoritmo

Data un’espressione regolare R, si definisce la sua lunghezza|R| come il numero di simboli (∅, ϵ, a ∈ Σ e operatori, comprese le concatenazioni implicite) da cui essa è formata.

(5)

La costruzione dell’automa AR corrispondente all’espressione R avviene in|R| passi. A ogni passo vengono aggiunti al più due nuovi stati, quindi il numero complessivo di stati di ARè n≤ 2·|R|. Analogamente, le transizioni aggiunte a ogni passo sono al massimo 4 (nei casi R1+ R2 e R), quindi il numero finale di transizioni presenti in ARè m≤ 4·|R|.

Segue che la dimensione dell’automa risultante è O(|R|).

Usando le opportune strutture dati per la rappresentazione dell’automa, si ha poi che ogni passo di costruzione richiede un tempo proporzionale al numero di stati e transizioni nuovi aggiunti, quindi anche il tempo di costruzione di AR è O(|R|).

Riferimenti

Documenti correlati

Mentre una gran parte delle precipitazioni cade nei mari, una parte cade sulle terre emerse dove, a causa della gravità, fluisce come ruscellamento superficiale.. Parte

Gli Italiani sono un popolo che ama gli animali ed è convinto che avere un animale in casa rende più serena la vita quotidiana!. Per diffondere la cultura dell’animale domestico

Il fatto che si tratti di un linguaggio non regolare indica che tale problema non è decidibile da un automa a stati finiti (qui lo si è dimostrato per una rappresentazione unaria

Alcuni dei piedini digitali di Arduino possono fungere anche da output analogici di tipo PWM, con una risoluzione di default di 8 bit (alcune schede supportano risoluzioni maggiori)

Il meccanismo di selezione degli slave a livello hardware, tramite le linee SS, rende sem- plice e veloce la comunicazione, e permette un’elevata flessibilità (ad esempio, se uno

Se la velocità di comunicazione è importante (come ad esempio nel caso di un ADC o DAC ad alta frequenza di campionamento), allora l’interfaccia più adeguata è SPI, che può

Nel caso di un automa di Mealy per ogni stato corrente possibile e per ogni combinazione degli ingressi viene indicato sia lo stato prossimo raggiunto dall’automa che

Ma anche nomi più complessi di simboli, se servono a rendere più comprensibile lo scenario rappresentato:.. –