与えられた2つの文字列を受け入れるDFAはいくつですか?


28

整数とアルファベット修正します。定義上のすべての有限状態オートマトンの集合体であることを我々が検討している状態1を開始するとの状態のすべてのDFA(単に接続されていない、最小限の、または非縮退もの)。したがって、。Σ = { 0 1 } D F A N NnΣ={0,1}DFA(n)n|DFA(n)|=n2n2n

ここで、2つの文字列を検討しをと両方を受け入れる要素の数として定義します。 K X Y D F A N x,yΣK(x,y)DFA(n) yxy

質問:計算の複雑さは何ですか?K(x,y)

この質問は、機械学習に影響を及ぼします。

編集:この質問に恩恵があるので、私は定式化でもう少し正確であると思います。以下のために、聞かせての集合体である上で定義されたとおり、オートマトン。以下のため、定義でオートマトンの数であることが受け入れるの両方と。質問:は時間で計算できますか?D F A N N 2 、N 2 、N X Y { 0 1 } * K NX Y D F A N n1DFA(n)n2n2nx,y{0,1}Kn(x,y)DFA(n) y K nx y p o l y n | x || y |xyKn(x,y)poly(n,|x|,|y|)


2
最終状態を修正せずにDFAを修正する場合、xとyを同じ状態にマッピングします。その場合、唯一の制約は状態が最終でなければならないこと、またはそれらを2つの異なる状態にマッピングします。唯一の制約は、両方とも最終でなければならないということです。したがって、私はあなたの問題を「いくつのDFAがxとyを異なる状態にマッピングするか」と言い換えます。
a3nm

3
Aryeh、カウントを説明できますか?係数を取得できません。追加:おっと、最終状態を指定するのを忘れました。とにかく、他の人のために、ここにカウントが行く方法があります。状態ごとに、入力および入力先を指定します。これはを占めます。最終状態のセットを指定します。それはです。n2n2n2n01n2n2n
Srivatsan Narayanan

2
実際、と以外の文字列がどうなるかは気にしません。バウンティを開始するには、ある程度のポイントが必要だと思いますか?xy
アーライ

4
とを受け入れる最小のオートマトンは単一の状態を持っているので、それがひどく有益であるとは思わないyxy
...-Aryeh

3
ここにアイデアがあります:xyで同じ状態になる状態のDFAの数を知る必要があるだけです。この数をmMをDFAの総数、つまり M = n 2 n 2 nとします。その後、答えは1ですnxymMM=n2n2n、これは境界を与えます。mを計算する別のアイデアは、xyの共有初期セグメントを忘れて、wlogx=0ab=1bであると仮定することです。l個の状態と高さmax{ab}のバイナリDAGの数をカウントするだけで、0a1bは同じ場所にあり、それからmを計算するのは簡単です。12m+14(Mm)mxyx=0ab=1blmax{a,b}0a1bm
カヴェー

回答:


1

したがって、質問は非常に簡単ですが、非常に興味深いものです。入力は単項では、バイナリではxy(またはKaiの答えで指摘されているように問題があります)であると思います。nxy

まず、おおよそを知ることに興味がある場合は、いくつかのランダムDFAを生成するだけで、これにより(whp)良い近似が得られます。(この複雑さのクラスには名前があるのだろうか。)K(x,y)

それから知ることはまさに難しい問題のように思えます。a3_nmとKavehのコメントで指摘されているように、この質問は、xyが同じ状態になるオートマトンの数を決定することと同等です。それらが同じ状態になる確率をpで示します。K(x,y)xyp

更新:ここで書いたもののいくつかは真実ではありませんでしたが、今では修正しました。

それを参照することは容易であるxがすべて0で、yがその最後のビットである1を除いてすべてゼロである場合、同等です。他のケースはありますか?知りません。たとえば、xが空の文字列で、y = 00の場合、p = n + 1p1/nxyxy=00p=n+1(n1)n

問題を単純化するために、私はyが単項の場合に何が起こるか考え始めました。両方が少なくともnで、それらの差がnで割り切れる場合、次にp = 1です。単項バージョンの簡単な式はありますか?xynn!p=1


私は問題を明確にしましたアルゴリズムが望ましい(または既知の困難な問題からの削減)。サンプリング近似は、このカーネルが紹介されている論文で採用されています:portal.acm.org/citation.cfm?idpoly(n,|x|,|y|)
Aryeh

2
単項バージョンについて:多項式的に単項オートマトンが多いため、この場合のK nx y を計算するためのポリタイムアルゴリズムがあると思います。nKn(x,y)
アーライ

確かに、単項バージョンが計算可能であることは絶対に正しいです。与えられたxとyに対する式がどれほど単純であるかはまだ疑問です。
-domotorp

使用した削減はバグです。xとyは同じオートマトンに受け入れられ、完全に異なる状態で終了する場合があります。実際、パスの開始状態のみを共有する場合があります。これはすべての文字列に当てはまります。
-amnn

@amnn:私がこれを書いてから3年が経ちましたが、私の答えの3番目のパラグラフでは、なぜ同じ状態で終わることにしか対処できないのかを説明していませんか?
domotorp

0

私はその点を見逃しているかもしれませんが、は固定されているため、そのサイズのすべてのDFAは事前に計算されたと見なされ、簡単にシミュレーション可能な形式で保存されます。次のようにKを計算します。nK

入力上のY 、X Y Σ *xyx,yΣ

  1. yを保存するxy
  2. カウンター0に初期化しますc0
  3. DFAのそれぞれについてn2n2n
  4. a。両方の単語でシミュレートします(このステップはO(|xy|)

    b。両方のシミュレーション実行が受け入れられている場合、インクリメントしますc

  5. 出力c

全体として、計算には線形の複雑さがあります。の答えはまったく違う。K(n,x,y)


3
明らかにすべてのマシンを試してみてください。Aryehは、おそらく多項式時間アルゴリズムか、それとも何らかの硬さの結果があるかどうかを知りたいと思っています。
レフReyzin

厳密に言えば、これは入力の多項式時間です。nが入力の一部でない場合、それはカイが言っていたことです。しかし、質問は明らかに異なります。
-domotorp

4
ああなるほど。私はそれが彼が「fix 」によって意味するものだとは思わない。問題の自然な解釈は、問題を平凡にしないものだと思います。n
レフReyzin

1
そう、抜け穴を指摘してくれてありがとう、カイ。修正されました:)
Aryeh
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.