Algoritmo per determinare se due regex sono equivalenti


11

Date due espressioni arbitrarie regolari, esiste un algoritmo "efficiente" per determinare se corrispondono allo stesso insieme di stringhe?

Più in generale, possiamo calcolare la dimensione dell'intersezione dei due set di partite?

In quali algoritmi ci sono per farlo e in quale classe di complessità vivono?

Se non accettiamo la stella di Kleene, ciò altera affatto l'immagine?


Cosa intendi con "dimensione dell'intersezione"? Nei casi più interessanti, sarà infinitamente grande; sei interessato a taglie wrt ? Σn
Raffaello

@Raphael La mia comprensione è che l'eliminazione della stella di Kleene costringe le dimensioni del set ad essere finite.
MathematicalOrchid,

Dipende. Quali altri operatori sono ammessi? Se permetti la complementazione, quello che dici non è vero. Inoltre, chiedi anche la situazione con la star di Kleene, quindi devi chiarire comunque.
Raffaello

Risposte:


12

Hendrik Jan fornisce una buona risposta per la classe di complessità, ma non un algoritmo stesso.

L'algoritmo più semplice per fare ciò che conosco è convertire l'espressione regolare in un DFA. Esistono tecniche note per convertire un'espressione regolare in un NFA e un NFA in un DFA.

Una volta che hai due DFA, il test per l'equivalenza è efficiente e decidibile, poiché la forma minima di un DFA è unica fino all'isomorfismo.

Tuttavia, la costruzione di questi DFA dagli NFA potrebbe richiedere molto tempo e produrre DFAS estremamente grandi, esponenzialmente grandi nel caso peggiore.


10

L'equivalenza delle espressioni regolari è nota per essere completa in PSPACE, il che è piuttosto negativo. L'articolo "Complessità dei problemi decisionali per le espressioni regolari semplici" elenca diverse sottoclassi di espressioni regolari con le rispettive complessità. ( link )


1
è anche completo di EXPSPACE se si consente all'operatore quadrato (cioè scrivendo invece di e e ). Diventa NEXPTIME-completo senza la stella Kleene. e2ee
Denis,

@dkuper Grazie per la spiegazione aggiuntiva. Sentiti libero di modificare la risposta per aggiungere questo o riferimenti adatti. (O anche iniziare la tua risposta.)
Hendrik Jan

Esiste un riferimento per le espressioni regolari generali da completare con PSPACE?
Ryan,

Il tuo link è morto. Puoi fornirne una nuova o almeno alcune delle informazioni pertinenti dal documento?
D. Ben Knoble,

@ D.BenKnoble Link funziona bene per me.
Hendrik Jan
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.