Esiste un modo per verificare se due NFA accettano la stessa lingua?


10

O almeno generare una serie di stringhe accettate da un NFA, in modo da poterlo inserire nell'altro NFA. Se eseguo una ricerca in tutti i percorsi dell'NFA, funzionerà? Anche se ci vorrà molto tempo.


No (almeno per quanto ne sappiamo). L'uguaglianza di NFA è completa per PSPACE. Vedere questa discussione .
Shaull

@Shaull: il PO non ha funzionato in modo efficiente .
frafl

@frafl: hai ragione. Ho ipotizzato che "richiederà molto tempo" che l'OP vuole una soluzione efficiente. Tuttavia, il mio commento menziona che è in PSPACE, quindi è decidibile.
Shaull

Risposte:


10

Il problema decisionale è completo di PSPACE come notato da Shaull.

Tuttavia, risulta che in pratica è spesso possibile decidere l'equivalenza NFA in tempi ragionevolmente rapidi. Mayr e Clemente (sulla base di prove sperimentali) affermano che la complessità del caso medio si ridimensiona in modo quadratico . Le loro tecniche si basano sulla potatura del sistema di transizione etichettato sottostante tramite approssimazioni locali di inclusioni di tracce.

Proprio come SAT è NP completo in un'analisi del caso peggiore, ma spesso risulta sorprendentemente trattabile per istanze del mondo reale, sembra quindi probabile che l'equivalenza NFA possa essere decisa in modo efficiente per molte istanze del mondo reale.

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.