{ww '| HamDist(w、w ')> 1}コンテキストフリー?


13

最近の質問を読んだ後「の補数です{www∣...}?文脈自由」; 私は反証することができなかった同様の問題を思い出しました:

あるL={ww′∣w,w′∈{0,1}∗∧|w|=|w′|∧HamDist(w,w′)>1}文脈自由?

ここでは、2つの文字列が少なくとも2つの位置で異なる必要があります(ハミング距離は1より大きい必要があります)。

我々は必要な場合には、文脈自由であるHamDist(w,w′)≥1(すなわち、2つの文字列が単に異なっていなければなりません)。

言語はコンテキストフリーではないのではないかと思う:通常の0∗10∗10∗10∗と交差する 場合、PDAは文字列の半分に達した後、逆の順序で2つの位置を「記憶」する必要がある場合があります。

アップデート:私たち交差する場合はL、正規とR={0∗10∗10∗10∗}我々は彼の答えにdomotorpで示したよう文脈自由言語を取得します。やや複雑L∩R′と R′={0∗10∗10∗10∗10∗10∗}(もう一つの1 "キープ・トラック"の)静止することを示唆しているL文脈自由であるべきではありません。


それがフォームのない正確ワードであるように、実際には容易であり、W wは(と交差 R ')。L∩R′wwR′
— -domotorp

@domotorp:そうです!奇数の固定変更されました(固定奇数kに対して、回答が{ (0 ∗ 1 0 ∗ )k }にも適応できる場合を除く )1{(0∗10∗)k}k
— Marzio De Biasi

最後のコメント:コンテキストフリー言語はあらゆる種類の循環シフトに対して閉じられているため、先頭のゼロから始めるのは役に立ちません。それらをスタックにプッシュし、最後のスタックを特別な記号でマークし、スタックがそこから開始するふりをして残りのアルゴリズムを実行し、最後にそれを空にすることができます。(これは遷移を使用しますが、そのようなPDAがなしのPDAと同等であることも簡単です。)ϵ
— domotorp

{0,1,2}のアルファベットを考えて、1と2が2つだけの文字列を考える方が簡単かもしれません。1s間の距離と2s間の距離が両方ともnである場合、それはあなたの言語ではありません。
— -Kaveh

回答:


4

R={0∗10∗10∗10∗∣偶数の長さの単語}との交点は、PDA が 2つの位置を何らかの方法で記憶できるため、コンテキストに依存しません。とにかく、最初にこの言語Lが何であるかを見てみましょう。その補数は R∖L={0a10b10c10d∣b=n/2∨c=n/2∨a+d=n/2}です。したがって、 L={0a10b10c10d∣b≠n/2∧c≠n/2∧a+d≠n/2}。これを L={0a10b10c10d∣b>n/2∨c>n/2∨a+d>n/2∨b,c,a+d<n/2}。

最初の3ケースは簡単に確認でき、4番目のケースも簡単に確認できます。

b>n/2:最初の1までスタックへの書き込みを開始し、空でないまでスタックからポップを開始します。空になったら、2番目の1に到達するまでスタックに入れ始めます。その後、スタックをポップします。

c>n/2:同じ。

a+d>n/2:最初の1までスタックへの書き込みを開始し、空でないまでスタックからポップを開始します。空になった後、3番目の1に到達するまで再びスタックの配置を開始します。その後、スタックをポップします。

b,c,a+d<n/2:最初の1までスタックに入れ始め、それから空でないまでスタックからポップを開始します。それが空だ後、私たちが到達するまで再びスタックに置く作業を開始 +をN / 2(非決定論的に1秒と第三の間のどこかを推測)。その後、スタックをポップします。a+n/2


domotorpに感謝します。あなたの考えを読んでいます。私が考えるある{ 0 1件の0 B 1 0 C ' 0 、C " 1つの0 D | (N / 2 = A + B + C ' = C " + D + 1 )∧ [左の(二1S半分)その逆(右半分に2つの1)を結合します。それでは、どのように得るか、B = N / 2 ∨ CをR∖L{0a10b10c′0c″10d∣ (n/2=a+b+c′=c″+d+1)∧[(a=c″)∨(c′=d)}?b=n/2∨c=n/2∨a+d=n/2
— マルツィオデビアシ

HamDistが最大であるということである 1。これは、3つの1のうち2つが一致する場合、つまり、1つが前半で同じ位置にあり、もう1つが後半にある場合に発生します。これら2つの1が1番目と2番目の1である場合、 b = n / 2を取得し、2番目と3番目の1である場合、 c = n / 2を取得し、1番目と3番目の1である場合、 bを取得します + c = n / 2、または同等に、 a + d = n / 2R⊂L1b=n/2c=n/2b+c=n/2a+d=n/2(私はいくつかの一定の少し浮気しています)。±1
— domotorp

これは完全な質問に答えますか?
— ミカエルカディルハック

@domotorp:わかりました、ありがとう!別の疑い:から(OKである)は、書き込みLを∩ R = { 。。。B > N / 2 ∨ C > N / 2 ∨ B 、C < N / 2 }しかし、それは、と等価である:L ∩ RL∩R={...b≠n/2∧c≠n/2...}L∩R={...b>n/2∨c>n/2∨b,c<n/2}?( a + d条件は省略されました)L∩R={...(b<n/2∨b>n/2)∧(c<n/2∨c>n/2)}a+d
— Marzio De Biasi

@マイケル:いいえ 
— -domotorp
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.