Costruzione di una FA da RE

Possiamo usare la costruzione di Thompson per scoprire un automa finito da un'espressione regolare. Ridurremo l'espressione regolare in espressioni regolari più piccole e le convertiremo in NFA e infine in DFA.

Alcune espressioni RA di base sono le seguenti:

Case 1 - Per un'espressione regolare 'a', possiamo costruire il seguente FA -

Case 2 - Per un'espressione regolare 'ab', possiamo costruire il seguente FA -

Case 3 - Per un'espressione regolare (a + b), possiamo costruire il seguente FA -

Case 4 - Per un'espressione regolare (a + b) *, possiamo costruire il seguente FA -

Metodo

Step 1 Costruisci un NFA con mosse Null dall'espressione regolare data.

Step 2 Rimuovi la transizione nulla dall'NFA e convertila nel suo equivalente DFA.

Problem

Converti il ​​seguente RA nel suo equivalente DFA - 1 (0 + 1) * 0

Solution

Concateneremo tre espressioni "1", "(0 + 1) *" e "0"

Ora rimuoveremo il file εtransizioni. Dopo aver rimosso il fileε transizioni dall'NDFA, otteniamo quanto segue:

È un NDFA corrispondente a RE - 1 (0 + 1) * 0. Se vuoi convertirlo in un DFA, applica semplicemente il metodo di conversione da NDFA a DFA discusso nel Capitolo 1.

Automi finiti con mosse nulle (NFA-ε)

Un automa finito con mosse nulle (FA-ε) transita non solo dopo aver dato input dal set di alfabeto, ma anche senza alcun simbolo di input. Questa transizione senza input è chiamata anull move.

Un NFA-ε è formalmente rappresentato da una 5-tupla (Q, ∑, δ, q 0 , F), composta da

  • Q - un insieme finito di stati

  • - un insieme finito di simboli di input

  • δ- una funzione di transizione δ: Q × (∑ ∪ {ε}) → 2 Q

  • q0- uno stato iniziale q 0 ∈ Q

  • F - un insieme di stati finali di Q (F⊆Q).

Quanto sopra (FA-ε) accetta un set di stringhe - {0, 1, 01}

Rimozione delle mosse nulle dagli automi finiti

Se in un NDFA è presente uno spostamento move tra il vertice X e il vertice Y, possiamo rimuoverlo utilizzando i seguenti passaggi:

  • Trova tutti i bordi in uscita da Y.
  • Copia tutti questi bordi a partire da X senza modificare le etichette dei bordi.
  • Se X è uno stato iniziale, rendi anche Y uno stato iniziale.
  • Se Y è uno stato finale, rendi anche X uno stato finale.

Problem

Converti il ​​seguente NFA-ε in NFA senza spostamento Null.

Solution

Step 1 -

Qui la transizione ε è tra q1 e q2, quindi lascia q1 è X e qf è Y.

Qui gli archi in uscita da q f sta a q f per gli ingressi 0 e 1.

Step 2 -

Ora copieremo tutti questi bordi da q 1 senza cambiare i bordi da q f e otterremo il seguente FA -

Step 3 -

Qui q 1 è uno stato iniziale, quindi rendiamo anche q f uno stato iniziale.

Quindi la FA diventa -

Step 4 -

Qui q f è uno stato finale, quindi rendiamo anche q 1 uno stato finale.

Quindi la FA diventa -