Quanti DFA accettano due stringhe specifiche?


28

Correggi un numero intero n e un alfabeto Σ={0,1} . Definire DFA(n) come raccolta di tutti gli automi a stati finiti su n stati con stato iniziale 1. Stiamo prendendo in considerazione tutti i DFA (non solo quelli connessi, minimi o non degenerati); quindi, |DFA(n)|=n2n2n .

Ora considera due stringhe x,yΣ e definisci K(x,y) come il numero di elementi di DFA(n) che accettano sia x che y .

Domanda: Qual è la complessità dell'elaborazione K(x,y) ?

Questa domanda ha implicazioni per l'apprendimento automatico .

Modifica: Ora che c'è una generosità su questa domanda, suppongo che un po 'più di precisione nella formulazione sia in ordine. Per n1 , sia DFA(n) la raccolta di n2n2n automi, come definito sopra. Per x,y{0,1} , definisci Kn(x,y) come il numero di automi in DFA(n) che accettano entrambi e y . Domanda: K n ( x , y ) può essere calcolato in tempo p o l y ( n , | x | , | y | ) ?xyKn(x,y)poly(n,|x|,|y|)


2
Se correggi un DFA senza correggere gli stati finali, allora associa xey allo stesso stato, nel qual caso l'unico vincolo è che lo stato deve essere definitivo o li mappa a due stati diversi, nel qual caso l'unico vincolo è che entrambi devono essere definitivi. Pertanto, riformulerei il problema come "quanti DFA associano xey a stati diversi?".
a3nm,

3
Aryeh, puoi spiegare il conteggio ? Non riesco a ottenere il fattore 2 n . Aggiunto: Oops, ho dimenticato di specificare gli stati finali. Ad ogni modo, per il bene degli altri, ecco come va il conteggio. Per ogni stato, specificare dove andare sugli ingressi 0 e 1 ; che rappresenta n 2 n . Specifica l'insieme degli stati finali; sono 2 n . n2n2n2n01n2n2n
Srivatsan Narayanan,

2
Anzi, non mi interessa quello che succede a corde diverse da e y . Immagino che uno abbia bisogno di un certo numero di punti per iniziare una taglia? xy
Aryeh,

4
Il più piccolo automa che accetta e y ha un unico stato, quindi non credo che sia terribilmente informativo ...xy
Aryeh

3
Ecco un'idea: abbiamo solo bisogno di conoscere il numero di DFA -state che finiscono nello stesso stato in x e y . Lascia che questo numero sia m e M sia il numero totale di DFA, ovvero M = n 2 n 2 n . Quindi la risposta è 1nxymMM=n2n2n, questo dà dei limiti. Per calcolaremun'altra idea è che possiamo dimenticare il segmento iniziale condiviso dixedye anche assumere che WLOGx=0uneb=1b. Contiamo solo il numero di DAG binari constatile altezza al massimomax{a,b}che0ae1bfiniscono nello stesso posto e da quello è facile calcolarem.12m+14(Mm)mxyx=0ab=1blmax{a,b}0a1bm
Kaveh,

Risposte:


1

Quindi la domanda è piuttosto breve ma molto interessante. I supporre che l'ingresso è in unario, e x ed y in binaria (o abbiamo problemi, come la punta dalla risposta di Kai).nxy

Prima di tutto, se sei interessato a conoscere approssimativamente, puoi semplicemente generare alcuni DFA casuali e questo ti darà (whp) una buona approssimazione. (Mi chiedo se questa classe di complessità abbia un nome.)K(x,y)

Quindi conoscere esattamente sembra un problema difficile. Come fuori appuntito le osservazioni a3_nm e Kaveh, la questione è equivalente a determinare il numero di automi per cui x ed y andare allo stesso stato. Indico la probabilità che vadano allo stesso stato di p .K(x,y)xyp

Aggiornamento: alcune delle cose che ho scritto qui non erano vere, ora le ho riparate.

È facile vedere che . Abbiamo uguaglianza, se x è tutto 0 e y è tutto zero tranne l'ultimo bit, che è un 1. Ci sono altri casi? Non lo so. Se ad esempio x è la stringa vuota e y = 00 , allora p = n + 1p1/nxyxy=00 .p=n+1(n1)n

Per semplificare il problema, ho anche iniziato a pensare a cosa succede se ed y sono unario. Se entrambi sono almeno n e la loro differenza è divisibile per n ! , quindi p = 1 . Esiste una formula semplice per la versione unaria?xynn!p=1


Ho chiarito il problema - un algoritmo è desiderato (o che scendono da alcuni noti problema difficile). L'approssimazione del campionamento è usata nel documento in cui è introdotto questo kernel: portal.acm.org/citation.cfm?id=1577108poly(n,|x|,|y|)
Aryeh,

2
As for the unary version: there are only polynomially many n-state unary automata, so I would bet that there is a poly-time algorithm for computing Kn(x,y) for this case.
Aryeh

Indeed, you are absolutely right that the unary version is computable. I still wonder how simple the formula is for a given x and y.
domotorp

La riduzione che hai usato è buggy: xey possono essere accettati dagli stessi automi e terminano in stati completamente diversi, infatti possono condividere solo lo stato iniziale nei loro percorsi, il che è vero per tutte le stringhe.
amnn

@amnn: Sono passati tre anni da quando ho scritto questo, ma il terzo paragrafo della mia risposta non spiega perché mi occupo solo di finire nello stesso stato?
domotorp,

0

Potrei benissimo perdere il punto, ma hai affermato che è fisso, quindi tutti i DFA di quella dimensione potrebbero essere considerati pre-calcolati e archiviati in un formato facilmente simulabile. Calcola K come segue:nK

On input x, y where x,yΣ

  1. store x and y
  2. initialize counter c to 0
  3. for each of your n2n2n DFAs
  4. a. simulate it on both words (this step is O(|xy|))

    b. increment c if both simulation runs are accepting

  5. output c

Altogether, the computation has linear complexity. The answer is quite different for K(n,x,y).


3
Clearly trying all machines will work. Aryeh wants to know if there's, perhaps, a polynomial time algorithm or otherwise some hardness result.
Lev Reyzin

Strictly speaking this is polynomial time in the input, if n is not part of the input, that is what Kai was saying. But the question is clearly different.
domotorp

4
Oh I see. I don't think that's what he means by "fix n." I think the natural interpretation of the problem is one that doesn't trivialize it.
Lev Reyzin

1
Right, thanks for pointing out the loophole, Kai. It's been fixed :)
Aryeh
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.