Qual è il numero di lingue accettate da un DFA di dimensione ?


19

La domanda è semplice e diretta: per una fissa , quante (diverse) lingue sono accettate da un DFA di dimensione (cioè stati)? Lo dichiarerò formalmente:n nnnn

Definire un DFA come , dove tutto è come al solito e è una funzione (possibilmente parziale). Dobbiamo stabilirlo poiché a volte sono considerate valide solo le funzioni totali.δ : Q × Σ Q(Q,Σ,δ,q0,F)δ:Q×ΣQ

Per ogni , definire la relazione (equivalenza) sull'insieme di tutti i DFA come: se e .n A n B | A | = | B | = n L ( A ) = L ( B )n1nAnB|A|=|B|=nL(A)=L(B)

La domanda è, quindi: per una data , qual è l'indice di ? Cioè, qual è la dimensione dell'insieme ?n { L ( A ) A  è un DFA di dimensione  n }nn{L(A)A is a DFA of size n}

Anche quando è una funzione totale, non sembra essere un conteggio facile (almeno per me). Il grafico potrebbe non essere collegato e gli stati nel componente collegato contenente lo stato iniziale potrebbero accettare tutti, quindi, ad esempio, ci sono molti grafici di dimensione accettano . Lo stesso con altre combinazioni banali per la lingua vuota e altre lingue il cui DFA minimo ha meno di stati.δΣ nnΣn

La ricorsione (ingenua) non sembra funzionare neanche. Se prendiamo un DFA di dimensione e aggiungiamo un nuovo stato, quindi, se vogliamo mantenere il determinismo e rendere connesso il nuovo grafico (per cercare di evitare casi banali), dobbiamo rimuovere una transizione per connettere il nuovo stato, ma in tal caso potremmo perdere la lingua originale.k

qualche idea?

Nota. Ho aggiornato di nuovo la domanda, con una dichiarazione formale e senza i precedenti elementi di distrazione.


Giusto per chiarire: vuoi dire "quante lingue diverse si possono definire usando stati?", Dove una lingua è definita usando stati se esiste un DFA con stati che lo accetta. Inoltre, per le espressioni regolari, la regex "a * aaaaaa" ha sicuramente> 1 concatenazioni, ma il DFA ha bisogno di un solo stato (due se hai bisogno di un sink separato), no? n nnnn
Evgenij Thorstensen,

Scuse: per l'esempio regex, dovrebbe essere "a a a a a *", poiché ciò consente qualsiasi numero.
Evgenij Thorstensen,

La definizione di appare molto correlata alla nozione di "profondità del punto", tranne per il fatto che il concetto è normalmente applicato a linguaggi senza stelle (probabilmente per i motivi che @Evgenij Thorstensen ha delineato). c(r)
mum

1
Osservazione fondamentale: è possibile utilizzare stati per definire almeno lingue diverse. 2 nn+12n
Evgenij Thorstensen,

2
Possiamo ottenere un po 'di più, quindi sembra OK. Ma il numero di automi n-state è intorno a (assumendo ). Possiamo ottenere ? n c n 2 n = 2 c n log n + n = 2 Θ ( n log n ) | Σ | = c 2 ω ( n )2Ω(n)ncn2n=2cnlogn+n=2Θ(nlogn)|Σ|=c2ω(n)
Kaveh,

Risposte:


20

Penso che questa domanda sia stata studiata in precedenza. Mike Domaratzki ha scritto un sondaggio sulla ricerca in questo settore: "Enumeration of Formal Languages", Bull. EATCS, vol. 89 (giugno 2006), 113-133: http://www.eatcs.org/images/bulletin/beatcs89.pdf


4
Il documento affronta esattamente la domanda posta, da pagina 120 in poi. È la funzione , e il documento fornisce dei limiti piuttosto stretti (vicino a ciò che Kaveh menziona sopra), anche se non ho inalato tutti i dettagli. gk(n)
Evgenij Thorstensen,

1
gk(n)fk(n)nk

6
g1(n)1n10g2(n)1n6g3(n)1n4
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.