La costante ambiguità può ridurre la complessità dello stato di una lingua normale?


16

Diciamo che NFA è costantemente ambiguo se esiste k N tale che qualsiasi parola w Σ è accettata da 0 o (esattamente) k percorsi.MkNwΣ0k

Se l'automa è costantemente ambiguo per k = 1 , allora M è chiamato FA non ambiguo (UFA).Mk=1M

Sia un linguaggio regolare.L

Qualche automa costantemente ambiguo per L può essere più piccolo del più piccolo UFA che accetta L ? Quanto più piccolo potrebbe essere?McLL

L'automa Finitely ambiguous può essere esponenzialmente più piccolo del CFA più piccolo per la stessa lingua?

È noto che esistono automi Finitamente ambigui (esiste , tale che ogni parola è accettata da un massimo di k percorsi) che sono esponenzialmente più piccoli del più piccolo UFA per la stessa lingua, ma non ho visto qualcosa sulla costante ambiguità.k k

Inoltre, ecco una domanda correlata che ho pubblicato qui alcuni mesi fa.

MODIFICARE:

La risposta di Domotorp mostra che è polinomialmente riducibile a U F A , ma non affronta la questione se possiamo ottenere quella riduzione dello spazio polinomiale di C F A s.CFAUFACFA

Quindi la nuova domanda diventa: quanto più piccola (linearmente / quadraticamente / ecc.) Può essere confrontata con una rispetto alla minima U F A ? per la stessa lingua?CFAUFA


sono permesse le transizioni ? ϵ
Denis

Forse questo può essere utile: in Kupke, Sulla costante di separazione dall'ambiguità polinomiale degli automi finiti viene presentata la seguente gerarchia: Non ho controllato il documento correlato perché è dietro paywall. dfa2nunfa2ncafa2n???2npafa2nnfa
Marzio De Biasi,

Grazie @MarzioDeBiasi, ma sfortunatamente questo non aiuta (ero anche fiducioso quando ho visto la presentazione). Usano una notazione diversa da quella che uso (e ho visto in diversi documenti). La loro "costante ambiguità" è ciò che ho chiamato ambiguità finita, quindi il rapporto tra loro Cafa e UFA mi era già noto. Poiché la mia applicazione conta le soluzioni per i problemi degli NPC, la mia lingua è sempre finita e, come tale, ogni parola è accettata dai percorsi , che hanno chiamato "costante". O(1)
RB

Mi chiedo se la mia definizione aiuta a ridurre la complessità dello stato, poiché ho CFA che è esponenzialmente più piccolo del più piccolo UFA che conosco da costruire, e mi chiedevo se è possibile che non ci sia un piccolo UFA per la lingua.
RB

1
@Denis, sì, ma ti aiuterebbe a ridurre la complessità dello stato? Suppongo che potresti ridurre il numero di bordi solo con tali mosse.
RB

Risposte:


4

Sostengo che se per qualche lingua esiste un CFA con stati e 0 o c che accetta percorsi per ogni parola, allora esiste un UFA con stati C s s c . L'idea di base è che gli stati della UFA sono le c-tuple (ordinate) degli stati della CFA e accetta se e solo se tutti gli stati c accettano. Ovviamente dobbiamo anche assicurarci che questi fossero effettivamente calcoli diversi e che non contiamo tutto c ! permutazioni, quindi per questi abbiamo bisogno di qualche extras0cCsscc! bit di archiviazione.Cs

Una descrizione un po 'più dettagliata dell'idea di base: Se è uno stato di UFA, allora ha una transizione da esso (leggendo una lettera a ) allo stato ( s 1 , ... , s c ) se e solo se il CFA ha una transizione (leggendo la lettera a ) da s i a s i per ogni i . Uno stato ( s 1 , , s c )(s1,,sc)a(s1,,sc)asisii(s1,,sc) sta accettando se e solo se accettando per ogni io . Naturalmente lo stato iniziale di UFA è ( s 0 , , s 0 ) dove s 0 è lo stato iniziale del CFA.sii(s0,,s0)s0

Il problema con quanto sopra è che le simulato corse del CFA potrebbero essere gli stessi. Quindi aggiungiamo alcune informazioni extra, codificate, diciamo, in un grafico su vertici c che ha un bordo tra il vertice i e il vertice j se durante la corsa finora almeno una volta abbiamo avuto quel c ic j .ccijcicj

Ora abbiamo ancora un problema, che abbiamo contato tutto volte a causa delle possibili permutazioni. Possiamo porre rimedio a ciò richiedendo che se gli stati I -esimo e j -sono stati gli stessi fino ad ora e nel passaggio successivo differirebbero, nel passaggio successivo l' i -esimo stato dovrebbe avere un indice maggiore.c!iji


Grazie per la risposta @domotorp. Sfortunatamente, non posso dire di averlo capito. Puoi fornire maggiori dettagli (ad es. Come verrebbe codificata la prova di primalità?). Grazie !
RB

Mi sono comunque reso conto che esiste anche un UFA per quella lingua, quindi dimenticalo. E la parte rimanente della mia risposta?
domotorp,

Mk=ccwc

Ecco qua, spero ora sia chiaro.
domotorp,
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.