2つのカウンターオートマトンに関する推測


19

次の推測を証明(または反証)したいと思います。

推測2カウンターオートマトン(2CA)は次の言語を決定できません。

の三元およびバイナリ表現 nが偶数長さまたは奇数の長さの両方を持っています }L={nn}

2CAは、バイナリ表現の長さが偶数か奇数かを簡単に確認できます(2で除算を続け、各除算後に「偶数長」フラグを更新するだけです)。同様に、3進表現の長さが偶数か奇数かを確認できます(3で除算し続け、各除算の後に「偶数長」フラグを更新します)。

ただし、一方を計算するには、入力を破棄する必要があり、他方を計算するためにそれを回復することはできません。したがって、を決定する方法はないようです。L

推測を証明するために使用できるテクニックを知っていますか?
または、を決定する2CAを作成する推測を反証できますか? L

私がいることを証明するためにイバラ続い同じアプローチを試してみました2CAが決めることができない{n2n1}が、それは正しい方法ではないようです。

:簡単にするために、2CAは 最初に入力と次の命令セットを含む1つの変数を持つプログラムと同等です。c

  • INC:変数に1を追加します。
  • DECデクリメントしますc(ゼロより大きい場合のみ)。
  • JZ labcがゼロの場合、ラベルジャンプしlabそうでない場合は続行します。
  • MUL Kcにコスタント掛けKます。
  • K[,lab0,lab1,...,labK1]cKcc=c/KcmodK
  • GOTOlab:無条件ジャンプ。
  • HALT Accept | Reject:停止して受け入れ、または停止して拒否します。

たとえば、のバイナリ表現の長さが偶数かどうかをチェックするプログラムは次のとおりです。n

   loop: JZ even   // test if n = 0
         DIV 2
         JZ odd    // test if n = 0
         DIV 2
         GOTO loop
   even: HALT Accept
    odd: HALT Reject

(同等の2CAを構築できます)


2
私は不可能プルーフが行く方法を知りませんが、{ |の三元表現奇数長さがある}の場合はある、あなたの入力だけで素因数を知っていた時はいつでもあなたの指数を扱うことができるので、解ける(nはこちら)シミュレートされたオートマトンのカウンターとして(必要な数の素数でシミュレートされた)カウンターを必要な数だけ持つため、チューリング完全です。2 n2n2n
Ørjanヨハンセン

2
「コード」をメールで送信し、他の人が見ている場合に備えてウェブサイトにも掲載しました。
Ørjanヨハンセン

1
@joro私が説明した方法には厳密な制限があります。入力の素因数を有限数しか処理できません(残りがすべて0であるかどうかのテストを除く)。問題は、一般的な問題では、すべての素数の指数要因がカウントされます。あなたが実際に計算することができますいずれかをお使いやあなたパリティまでに、しかし、私の知る限りでは、への一般的な入力を比較する方法はありませんまたはので、プロセスでそれを破壊せずにいることを、あなたは、テストすることはできませんその後、もう 1つ。私の今の予感は、2CAでは一般的な問題を解決できないことです。m 2 k 3 mkm2k3m
Ørjanヨハンセン

1
@ØrjanJohansen:私はvznに同意します:必要に応じて、制限付きのより単純な問題の解決策(答えは賞金に値します:-)で答えを投稿できます。また、一般的な問題に対してイバラのアプローチが失敗する理由と、一般的な問題に対して単純なバージョンの解決策が失敗する理由(コメントをjoroにコピーして貼り付ける)を簡単に確認することもできます。
マルツィオ・デ・Biasi

1
THX!この問題に対するすべての関心/活動を見るのは素晴らしい/まれです。この問題に関するいくつかのコメント/質問
-vzn

回答:


11

そのため、問題の単純化されたバージョンを解決するだけであるにもかかわらず、人々はこれを投稿し続けなければならない。じゃあオーケー :)

最後に、IbarraとTrânの論文から学んだことと、その方法が私たちの一般的な問題を破壊する理由いくつか紹介しますが、おそらくいくつかの有用な情報を提供します。

しかし、最初に、セットを決定しようとするより単純な問題を見てみましょう

2 n }L={2nの3進表現と進表現の長さは偶数または奇数です2n}

これは持っているか注ではなく、元の問題のように。特に、入力数が2の累乗でない場合、任意のベースでその長さを計算しようとするのではなく、拒否します。 n2nn

これにより、問題が大幅に簡素化されます。元の数値がとして素因数分解されて書き込まれる場合、を除くすべてのについて確認するだけです。それらはすべてです。v i v 2 02v23v35v57v7...viv20

これにより、乗算/除算オートマトンの単一変数の素因数分解の指数でカウンターオートマトンの状態をエンコードする古い方法(ミンスキーによると思います)のラッパーを使用して、この単純化された問題を解決できます。上記のOPで述べたように、これは2カウンターオートマトンとほぼ同等です。k

まず、ラップするにはカウンターオートマトンが必要です。、、およびという名前の3つのカウンターを使用します。v 2 v 3 v 5kv2v3v5

オートマトンは、初期カウンター値に対してiffを受け入れますの3進表現と進表現の長さは偶数でも奇数でもあり、とは両方ともゼロです。受け入れると、最初にすべてのカウンターがゼロになります。 v 3 v 52v2v3v5

そのためのコードを、OPに似たアセンブリ形式で示します(変数を命令に追加したところです)。実行するものがないので、実際にはテストしていませんが、これは形式的であると考えています。3カウンターオートマトンはチューリング完全であり、そのいずれかの計算可能な関数を構築できることがよく知られています。初期値。

// Check that v3 and v5 are both zero.
                JZ v3, check5
                GOTO reject
check5:         JZ v5, init3
                GOTO reject
// Decrement v2 until it is zero, constructing 2^n in the process.  If 2^n
// was even, we will then pass to even2 with 2^n in v3; If 2^n was odd, we
// will pass to odd2 with 2^n in v5.
init3:          INC v3          // Set v3 to 1 = 2^0 to start with.
even1:          // We have decremented v2 an even number of times so far.
                // 2^decremented amount is in v3.
                JZ v2, odd2
                DEC v2
dup3to5:        JZ v3, odd1
                DEC v3
                INC v5
                INC v5
                GOTO dup3to5
odd1:           // We have decremented v2 an odd number of times so far.
                // 2^decremented amount is in v5.
                JZ v2, even2
                DEC v2
dup5to3:        JZ v5, even1
                DEC v5
                INC v3
                INC v3
                GOTO dup5to3
// The second part checks the ternary length of 2^n, which starts out in v3
// or v5 according to whether the *binary* length of 2^n (i.e. n+1) was odd
// or even.
odd2:           // v3 needs to have odd ternary length to accept.
                // It is simplest to consider 0 to have even length in both
                // binary and ternary.  This works out as long as we're
                // consistent.
                JZ v3, reject
trisect3to5:    DEC v3
                DEC v3
                JZ v3, even2
                DEC v3
                INC v5
                GOTO trisect3to5
even2:          // v5 needs to have even ternary length to accept
                JZ v5, accept
trisect5to3:    DEC v5
                DEC v5
                JZ v5, odd2
                DEC v5
                INC v3
                GOTO trisect5to3
accept:         HALT Accept
reject:         HALT Reject

次のステップは、単一変数オートマトンの指数で上記を再エンコードすることです。結果はかなり長いので、一般的な方法を説明しますが、フルバージョン(スポットで少し「最適化」)が私のWebサイトにあります。

                JZ vp, label
                DEC vp
next:           ...

(基本的にpで除算し、除算が偶数でない場合は元に戻すためにクリーンアップを行います):

                DIV p, next, ..., newlabel.fp-1
newlabel.f1:    MUL p
                GOTO newlabel.i1
...
newlabel.fp-1:  MUL p
                INC
newlabel.ip-2:  INC
...
newlabel.i1:    INC
                GOTO label
next:           ...

INC vpになりMUL pます。個別でJZあり、DEC最初に結合形式に変更できます。 GOTO labelHALT Reject変更されていません。

HALT Accept我々は数に素因数がないことを確認する必要がありますことを私たちのケースでは、我々はまだやるために1つの最終チェックしてい除き、変わらないだろう他の当社の特定の3-カウンタオートマトンゼロので、2,3および5カウンターそれ以外の受け入れるときに使用します。これは簡単です。最終変数が1であることをテストするだけで、コードにジャンプすることで実行できます。

                DEC     // BTW it cannot be zero before this.
                JZ accept
                HALT Reject
accept:         HALT Accept

私のウェブサイトのコードには、数値がゼロではないという最初のチェックもあります。これは、v3、v5のゼロチェックで冗長であることがわかりました。

私が述べたように、上記の方法を簡素化問題のために動作しますが、それは本当にありません何のために、一般的なもののために働くのチャンスを:一般的な問題での正確な値は、すべてのためプライムの指数カウントをその一般的なサイズを決定するために、どの長さは、それをさまざまな拠点にあります。この意味は:

  • カウンターに使用できる「無料の」素数はありません。
  • 私たちがいてもいたカウンターのための無料の素数を持って、私たちは本当にすべての指数値が無限に多くの他の素数から必要な情報を抽出する方法はありません事を。

それでは、特定の問題 2CAで解決できないことを証明する方法と、それがわずらわしく破壊される方法について、イバラとトラン自由にダウンロード可能なバージョンによる上記のリンクされた論文からの一般的な方法の要点の説明で終わりましょう場合。

最初に、すべての2CAを「通常の形式」に変更します。2つのカウンターは、「増加」と「減少」の間で「位相」を切り替えてゼロに達するまで切り替えます。この正規化されたオートマトンの状態数は、推定において重要な役割を果たします。s

次に、彼らはこのオートマトンを分析して、動作がリンクされている数値の特定の算術シーケンスを構築できると結論付けます。正確に言えば(これのいくつかは定理として述べられていないが、2つの主な例の両方の証明に暗示されている):

  1. 数xはオートマトンで受理された場合、サイズなし相の初めにゼロ以外のカウンタの今まで行くの、その後、整数が存在するように、すべての数字、が受け入れられます。 I S D > 0 、X + N D N 0vixi sD>0x+nDn0
  2. セットに少なくとも受け入れられた数値が含まれ、各数値に対してようなフェーズがある場合、および整数を見つけることができますなどXs2+1xXivixsp,rXK1,K2

    • すべての整数について、といずれかがオートマトンによって受け入れられるか、両方とも拒否されます。n0p+nK1r+nK2

(考え:

  • 彼らは必要ためにが、私は、これは実際には不要だと思います。実際にはそうです。x>sxX
  • 拒否が非終了ではなく明示的な停止によるものである限り、これのほとんどは拒否された番号にも当てはまります。

自分の例については、彼らはまた、頻繁に使用しているという事実何の素因数がありません。不可能を証明するために、彼らはそのような算術的なシーケンスが存在できないことを示すことによって矛盾を導き出します。D,K1,K2>s

私たちの問題では、これから矛盾を取得することは、2番目のケースで壊れます。我々が持っている場合、それほど大きく十分でないとの間の数及びどちらかで割り切れるない又は、その後もの間には2のべき乗または3は存在しないであろうとなので、両方とも受け入れられるか、両方とも拒否されます。 k p r 2 k 3 k p + 6 k n q + 6 k nK1=K2=6kkpr2k3kp+6knq+6kn

ポイント1は、2と3の累乗の大部分がますます離れていくため、不可能であることを示すことができます。そして、場合は不可能な2番目のケースを示すことができると信じています(@MarzioDeBiasiに引数をメールで送信しました)。したがって、おそらく誰かがこの情報を使用してオートマトンの形式をさらに制限し、最終的にそれから矛盾を導き出すことができます。K1K2


1
非常に良い明確な答えです!
マルツィオデビアシ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.