SlideShare a Scribd company logo
1 of 24
Conversione diretta ed inversa tra automi a stati
non definiti (NFA) ed espressioni regolari
FACOLTÀ DI INGEGNERIA
Tesi di Laurea in
INGEGNERIA INFORMATICA

Relatore: Prof. Eric Medvet
Correlatore: Dott. Andrea De Lorenzo
Candidato: Paolo Oltramonti
Oggetto della tesi
Sviluppare un algoritmo che effettua la conversione diretta ed
inversa tra automi a stati finiti non deterministici (NFA) ed
espressioni regolari

NFA

ESPRESSIONE
REGOLARE

ESPRESSIONE
REGOLARE

NFA
Scenario
Scenario
Il progetto si colloca nell’ambito di una ricerca di alto livello su:
Generazione automatica di pattern a partire da esempi

b[A-Z0-9._%+-]+
Scenario
Si sono esplorate due strade

1. Le NFA

2. Le espressioni regolari

b[A-Z0-9._%+-]+

che si sono rivelate entrambe interessanti
Cos’è una NFA
Una NFA è un automa a stati finiti

Un automa è un modello che permette di descrivere con precisione
e in maniera formale il comportamento di un sistema
Cos’è una NFA
Distinguiamo due importanti tipi di automi a stati finiti

automi a stati finiti
non deterministici (NFA)

automi a stati finiti
deterministici (DFA)
Cos’è un espressione regolare
Un’espressione regolare è un formalismo che permette di
descrivere un insieme di stringhe
Un’espressione regolare è un linguaggio regolare

Un’espressione regolare definisce una funzione che prende in
ingresso una stringa, e restituisce in uscita un valore booleano,
a seconda che la stringa aderisca o meno al pattern
Cos’hanno in comune NFA e Regex
 Sono dei pattern
 Riconoscono un linguaggio regolare

 Un linguaggio regolare può essere rappresentato
con entrambe le rappresentazioni
Quali sono le differenze
Le espressioni regolari hanno il vantaggio di essere utilizzate
negli editor di testo

Quindi hanno una maggiore utilità rispetto alle NFA
Quali sono le differenze
I tempi di esecuzione:
 NFA dipendono linearmente dalla lunghezza dell’input
 Espressioni regolari dipendono anche dalla complessità
Problema
Perché convertire
Per beneficiare dei vantaggi di entrambi gli approcci è
necessario sviluppare una metodologia per convertire da
espressioni regolari ad NFA e viceversa

ab*b|aa*a
Soluzione
Approccio al problema
Per effettuare le conversioni si sono identificati ed implementati
degli algoritmi noti

 Algoritmo di creazione dei sottoinsiemi per la
conversione da NFA ad espressione regolare
 Algoritmo di Thompson per la conversione da
espressione regolare ad NFA
Vincoli di progetto e tecnologie
1. Linguaggio di programmazione Javascript
2. Codifica NFA preesistente in oggetti JSON:

L’algoritmo si deve integrare con un software preesistente
Realizzazione: NFA => Regex
Algoritmo di creazione dei sottoinsiemi

NFA => DFA

DFA => GNFA

GNFA => Regex
NFA => Regex
Esempio di conversione da NFA ad espressione regolare
NFA

GNFA

DFA

Regex

ab|cd
Realizzazione: Regex => NFA
Algoritmo di Thompson

Regex =>
sottoespressioni

Sottoespressioni
=> blocchi NFA

Blocchi NFA =>
NFA
Regex => NFA
Esempio di conversione da espressione regolare a NFA

Regex

Sottoexp

r1=ab
ab|cd

r2=cd

r3=r1|r2

Blocchi NFA

NFA
Test
L’implementazione è stato testata su:

• 50 espressioni regolari
• 50 NFA

Tutte le conversioni dirette ed inverse sono state
testate con successo
Conclusioni
Conclusioni
Algoritmi implementati
 Algoritmo di creazione dei sottoinsiemi

 Algoritmo di Thompson

Esito implementazione
 L’implementazione è stata testata con successo
Grazie

More Related Content

What's hot (7)

Algoritmo probabilistico di tipo montecarlo per il list decoding
Algoritmo probabilistico di tipo montecarlo per il list decodingAlgoritmo probabilistico di tipo montecarlo per il list decoding
Algoritmo probabilistico di tipo montecarlo per il list decoding
 
Java Lezione 1
Java Lezione 1Java Lezione 1
Java Lezione 1
 
Soluzione esame b del 13 giugno 2012
Soluzione esame b del 13 giugno 2012Soluzione esame b del 13 giugno 2012
Soluzione esame b del 13 giugno 2012
 
La metodologia Top - Down - applicazione al C++
La metodologia Top - Down - applicazione al C++La metodologia Top - Down - applicazione al C++
La metodologia Top - Down - applicazione al C++
 
Progetto e realizzazione di uno strumento per la modifica sistematica di codi...
Progetto e realizzazione di uno strumento per la modifica sistematica di codi...Progetto e realizzazione di uno strumento per la modifica sistematica di codi...
Progetto e realizzazione di uno strumento per la modifica sistematica di codi...
 
Progetto e realizzazione di uno strumento per la modifica sistematica di codi...
Progetto e realizzazione di uno strumento per la modifica sistematica di codi...Progetto e realizzazione di uno strumento per la modifica sistematica di codi...
Progetto e realizzazione di uno strumento per la modifica sistematica di codi...
 
Caratteristiche del linguaggio c
Caratteristiche del linguaggio cCaratteristiche del linguaggio c
Caratteristiche del linguaggio c
 

Similar to Conversione diretta ed inversa tra automi a stati non definiti (nfa) ed espressioni regolari

Simulatore Grafico Per Reti Ottiche A Pacchetto
Simulatore Grafico Per Reti Ottiche A PacchettoSimulatore Grafico Per Reti Ottiche A Pacchetto
Simulatore Grafico Per Reti Ottiche A Pacchetto
Fedele Mantuano
 
Progetto e realizzazione di un'interfaccia web interattiva per un sistema di ...
Progetto e realizzazione di un'interfaccia web interattiva per un sistema di ...Progetto e realizzazione di un'interfaccia web interattiva per un sistema di ...
Progetto e realizzazione di un'interfaccia web interattiva per un sistema di ...
Pieredoardo Gabutti
 
Compressione di insiemi di espressioni regolari tramite programmazione geneti...
Compressione di insiemi di espressioni regolari tramite programmazione geneti...Compressione di insiemi di espressioni regolari tramite programmazione geneti...
Compressione di insiemi di espressioni regolari tramite programmazione geneti...
Simone Cumar
 
Detailed Model Capture
Detailed Model CaptureDetailed Model Capture
Detailed Model Capture
fcospito
 
Detailed Model Capture
Detailed Model CaptureDetailed Model Capture
Detailed Model Capture
fcospito
 
Definizione e sviluppo di un algoritmo genetico multiobiettivo per problemi d...
Definizione e sviluppo di un algoritmo genetico multiobiettivo per problemi d...Definizione e sviluppo di un algoritmo genetico multiobiettivo per problemi d...
Definizione e sviluppo di un algoritmo genetico multiobiettivo per problemi d...
Stefano Costanzo
 

Similar to Conversione diretta ed inversa tra automi a stati non definiti (nfa) ed espressioni regolari (20)

Continuous Integration e High Quality Code
Continuous Integration e High Quality CodeContinuous Integration e High Quality Code
Continuous Integration e High Quality Code
 
Continous Delivery & HQ Code
Continous Delivery & HQ CodeContinous Delivery & HQ Code
Continous Delivery & HQ Code
 
Progetto MigrOS: progettazione e sviluppo degli strumenti di transcodifica de...
Progetto MigrOS: progettazione e sviluppo degli strumenti di transcodifica de...Progetto MigrOS: progettazione e sviluppo degli strumenti di transcodifica de...
Progetto MigrOS: progettazione e sviluppo degli strumenti di transcodifica de...
 
Le Espressioni Regolari e gli Automi
Le Espressioni Regolari e gli AutomiLe Espressioni Regolari e gli Automi
Le Espressioni Regolari e gli Automi
 
Regular Model Checking - Verifica di Sistemi Parametrici
Regular Model Checking - Verifica di Sistemi ParametriciRegular Model Checking - Verifica di Sistemi Parametrici
Regular Model Checking - Verifica di Sistemi Parametrici
 
Coding class da scratch a python
Coding class  da scratch a pythonCoding class  da scratch a python
Coding class da scratch a python
 
Simulatore Grafico Per Reti Ottiche A Pacchetto
Simulatore Grafico Per Reti Ottiche A PacchettoSimulatore Grafico Per Reti Ottiche A Pacchetto
Simulatore Grafico Per Reti Ottiche A Pacchetto
 
WSO2 MASTER CLASS ITALIA #9 - Come creare API di successo
WSO2 MASTER CLASS ITALIA #9 - Come creare API di successoWSO2 MASTER CLASS ITALIA #9 - Come creare API di successo
WSO2 MASTER CLASS ITALIA #9 - Come creare API di successo
 
BanovazDiego-Slides Prelaurea
BanovazDiego-Slides PrelaureaBanovazDiego-Slides Prelaurea
BanovazDiego-Slides Prelaurea
 
Progetto e realizzazione di un'interfaccia web interattiva per un sistema di ...
Progetto e realizzazione di un'interfaccia web interattiva per un sistema di ...Progetto e realizzazione di un'interfaccia web interattiva per un sistema di ...
Progetto e realizzazione di un'interfaccia web interattiva per un sistema di ...
 
Compressione di insiemi di espressioni regolari tramite programmazione geneti...
Compressione di insiemi di espressioni regolari tramite programmazione geneti...Compressione di insiemi di espressioni regolari tramite programmazione geneti...
Compressione di insiemi di espressioni regolari tramite programmazione geneti...
 
Detailed Model Capture
Detailed Model CaptureDetailed Model Capture
Detailed Model Capture
 
Detailed Model Capture
Detailed Model CaptureDetailed Model Capture
Detailed Model Capture
 
Semi-Active Replication Protocol
Semi-Active Replication ProtocolSemi-Active Replication Protocol
Semi-Active Replication Protocol
 
Connector Algebra Build on top of Apache Camel - EIP
Connector Algebra Build on top of Apache Camel - EIPConnector Algebra Build on top of Apache Camel - EIP
Connector Algebra Build on top of Apache Camel - EIP
 
Iec61499
Iec61499Iec61499
Iec61499
 
Analisi delle differenze strutturali nelle espressioni regolari costruite da ...
Analisi delle differenze strutturali nelle espressioni regolari costruite da ...Analisi delle differenze strutturali nelle espressioni regolari costruite da ...
Analisi delle differenze strutturali nelle espressioni regolari costruite da ...
 
Guida Alle Reti
Guida Alle RetiGuida Alle Reti
Guida Alle Reti
 
Definizione e sviluppo di un algoritmo genetico multiobiettivo per problemi d...
Definizione e sviluppo di un algoritmo genetico multiobiettivo per problemi d...Definizione e sviluppo di un algoritmo genetico multiobiettivo per problemi d...
Definizione e sviluppo di un algoritmo genetico multiobiettivo per problemi d...
 
Scambio di variabili con puntatori
Scambio di variabili con puntatoriScambio di variabili con puntatori
Scambio di variabili con puntatori
 

Conversione diretta ed inversa tra automi a stati non definiti (nfa) ed espressioni regolari

  • 1. Conversione diretta ed inversa tra automi a stati non definiti (NFA) ed espressioni regolari FACOLTÀ DI INGEGNERIA Tesi di Laurea in INGEGNERIA INFORMATICA Relatore: Prof. Eric Medvet Correlatore: Dott. Andrea De Lorenzo Candidato: Paolo Oltramonti
  • 2. Oggetto della tesi Sviluppare un algoritmo che effettua la conversione diretta ed inversa tra automi a stati finiti non deterministici (NFA) ed espressioni regolari NFA ESPRESSIONE REGOLARE ESPRESSIONE REGOLARE NFA
  • 4. Scenario Il progetto si colloca nell’ambito di una ricerca di alto livello su: Generazione automatica di pattern a partire da esempi b[A-Z0-9._%+-]+
  • 5. Scenario Si sono esplorate due strade 1. Le NFA 2. Le espressioni regolari b[A-Z0-9._%+-]+ che si sono rivelate entrambe interessanti
  • 6. Cos’è una NFA Una NFA è un automa a stati finiti Un automa è un modello che permette di descrivere con precisione e in maniera formale il comportamento di un sistema
  • 7. Cos’è una NFA Distinguiamo due importanti tipi di automi a stati finiti automi a stati finiti non deterministici (NFA) automi a stati finiti deterministici (DFA)
  • 8. Cos’è un espressione regolare Un’espressione regolare è un formalismo che permette di descrivere un insieme di stringhe Un’espressione regolare è un linguaggio regolare Un’espressione regolare definisce una funzione che prende in ingresso una stringa, e restituisce in uscita un valore booleano, a seconda che la stringa aderisca o meno al pattern
  • 9. Cos’hanno in comune NFA e Regex  Sono dei pattern  Riconoscono un linguaggio regolare  Un linguaggio regolare può essere rappresentato con entrambe le rappresentazioni
  • 10. Quali sono le differenze Le espressioni regolari hanno il vantaggio di essere utilizzate negli editor di testo Quindi hanno una maggiore utilità rispetto alle NFA
  • 11. Quali sono le differenze I tempi di esecuzione:  NFA dipendono linearmente dalla lunghezza dell’input  Espressioni regolari dipendono anche dalla complessità
  • 13. Perché convertire Per beneficiare dei vantaggi di entrambi gli approcci è necessario sviluppare una metodologia per convertire da espressioni regolari ad NFA e viceversa ab*b|aa*a
  • 15. Approccio al problema Per effettuare le conversioni si sono identificati ed implementati degli algoritmi noti  Algoritmo di creazione dei sottoinsiemi per la conversione da NFA ad espressione regolare  Algoritmo di Thompson per la conversione da espressione regolare ad NFA
  • 16. Vincoli di progetto e tecnologie 1. Linguaggio di programmazione Javascript 2. Codifica NFA preesistente in oggetti JSON: L’algoritmo si deve integrare con un software preesistente
  • 17. Realizzazione: NFA => Regex Algoritmo di creazione dei sottoinsiemi NFA => DFA DFA => GNFA GNFA => Regex
  • 18. NFA => Regex Esempio di conversione da NFA ad espressione regolare NFA GNFA DFA Regex ab|cd
  • 19. Realizzazione: Regex => NFA Algoritmo di Thompson Regex => sottoespressioni Sottoespressioni => blocchi NFA Blocchi NFA => NFA
  • 20. Regex => NFA Esempio di conversione da espressione regolare a NFA Regex Sottoexp r1=ab ab|cd r2=cd r3=r1|r2 Blocchi NFA NFA
  • 21. Test L’implementazione è stato testata su: • 50 espressioni regolari • 50 NFA Tutte le conversioni dirette ed inverse sono state testate con successo
  • 23. Conclusioni Algoritmi implementati  Algoritmo di creazione dei sottoinsiemi  Algoritmo di Thompson Esito implementazione  L’implementazione è stata testata con successo