• 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

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:.. –

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