この言語はO(n log n)の3つの記号TMで認識できますか?


10

私は非常に興味深く、未解決の質問である「シングルテープチューリングマシンのアルファベット」(Emanuele Violaによる)で遊んでいて、次の言語を思いつきました。

L={x{0,1}n s.t. |x|=n=2m and count1(x)=km;n,m,k1}

ここでは、文字列xの1の数です。count1(x)1

たとえば、x = 01101111の場合、n = 8、m = 3、k = 2、これxL

L単一テープと3つのシンボルアルファベットとチューリングマシンによって認識することができるO N ログN手順を? {ϵ,0,1}O(nlogn)

4つの記号を使用すると、答えは「はい」になります。

  • 確認する交換0とSをε1とS 2と同時に店でM 1右のS。|x|=2m0ϵ12m 1
  • 次に、Oのmを法とするの数を数えますn log n2mO(nlogn)

例えば:

....01101111....... input x  (|x| = 8 = 2^3)
000.021.1212.0001.. div 2, first sweep (000. can safely be used as a delimiter)
000.022.1222.00011. div 2, second sweep
000.022.2222.000111 div 2, third sweep --> m = 3 (= log(n) )
000..22.2222....111 cleanup (original 1s are preserved as 2)
000..22.2221102.... start modulo m=3 calculation
000..22.2210022.... mod 3 = 2
000..22.2000222.... mod 3 = 0
000..22.0012222.... mod 3 = 1
000..20112.2222.... mod 3 = 2
000..11122.2222.... ACCEPT

|x|=n=2mxcount1(x)1L={10}

xL

1
Θ(nlogn)o(nlogn)O(nlogn)

回答:


10

次の変更を加えて、4つのシンボルの場合と同じ考え方を使用できません。

  • シンボルのペアを常に同時に処理します。
  • (00,01,10,11)(ϵ0,ϵ1,0ϵ,1ϵ)ϵϵ
  • 「mod 2」のステップにも同様のトリックを使用します。

O(1)


あなたが正しい!...今、私はエマヌエーレの質問に対する答えはイエスだと思います...しかし、それはまだ開かれているので、正式に証明するのはそれほど簡単ではないでしょう:-(ありがとう!
Marzio De Biasi
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.