ハミング距離が2以上の等しい長さの単語のペアの言語はコンテキストフリーですか?


26

次の言語コンテキストは無料ですか?

L={uxvyu,v,x,y{0,1}+,|u|=|v|,uv,|x|=|y|,xy}

sdcvvcで指摘されているように、この言語の単語は、ハミング距離が2以上の同じ長さの2つの単語の連結として説明することもできます。

私はそれが文脈自由ではないと思いますが、私はそれを証明するのに苦労しています。この言語を通常の言語(たとえば、など)と交差させてから 、ポンピング補題および\または準同型を使用しようとしましたが、特徴付けて記述するには複雑すぎる言語が常に得られますダウン。 0101


文字列ポンピングしようとしましたか?0u1x1u0x
PAL GD

はい、しかし、私はこの文字列を言語から外に出すことに失敗しました(それが不可能だという意味ではなく、私がそうしなかったことだけです)。
ロバート777

1
@PålGD、おそらく1u01x01u01x0
vonbrand

8
この言語は、のように書くことができるハミング距離です。2を1に置き換えると、contextfree(cs.stackexchange.com/questions/307)ですが、そこで使用されるトリックは機能しないことに注意してください。個人的には、コンテキストフリーではないと確信しています。{uv:|u|=|v|,d(u,v)2}d
sdcvvc

1
@sdcvvc:そのとおりです。1つはを分割し、異なるビットの1つがに、もう1つがます。私は訂正します。uuxux
アンドラスサラモン

回答:


7

注[2019-07-30]証明が間違っています...質問は思ったよりも複雑です。

ここで失敗した後、それは別のアイデアです。

を通常の言語と交差させると、CF言語が得られます。LLreg=0101010

おそらく、(正確に4つの1を持つ文字列)を使用すれば、さらに幸運を得ることができます。Lreg=010101010

ましょう非公式、半分が正確に含むように、2つの半体に分割できる場合、 、または両方の半分は、2つ含まれている sしかし、それらの位置は一致しません。L1=LLregwL1{0,1,3,4} 1s1

仮定 CFでありましょうチョムスキー標準形で、その文法であること、およびletL1G

w=uv=0a10b10c10d10eL1

我々は持っている(偶数の長さ)および|u|=|v|d(u,v)2

の4つの1を生成できる方法に注意を向けると、図1の上部に3つのケースが表示されます。図1の中央部分は最初のケースを示しています(ただし、他のケースも同様です) 。w

ここに画像の説明を入力してください
図1(全体図はこちらからダウンロードできます

およびを選択と、1の2つのペアの間のゼロは独立してポンプ可能である必要があります(図の赤いノード):特に、十分に大きい、内部サブツリー(図2のノードX)で重複する非終端ノード、または最初または2番目の1(図2のノードY)へのパスで繰り返されるサブシーケンスを取得します。そこ両者より非終端ノードとすることができる。図2は、簡略少しであることに注意してください S、また、両者の間(しかしとのみ生成最初の右側の0は1)。a=e,c=2ab,dabaXYsY...Zi...YZi

ここに画像の説明を入力してください
図2

したがって、任意のを修正し、最初と2番目の間のゼロのシーケンスで独立してポンピング可能なノードを取得するのに十分な大きさのを選択できます。3番目と4番目の1の間のゼロのシーケンスでは、選択できます。 しかし、は独立してポンプ可能なため、ポンプ可能な部分文字列。つまり、および。取得する文字列は次のとおりです。a=e=k,c=2ab1d=b!+b0 Bの P のB Y B = X 、Y 、Z | y | = p | x | 0 | z | 0 、X 、Y 、I、Z = B + b
0bpbyb=xyz,|y|=p,|x|0,|z|0xyiz=b!+b

w=0k10b!+b102k10b!+b10k

しかし、。したがって、はCFではなく、最後にはCFではありません。wL1L1L

証明が正しい場合(???)、すべての言語に拡張できますLk={uv:|u|=|v|,d(u,v)k},k2


この証拠を実際に検証する前に賞金が期限切れになるのではないかと心配しています。したがって、今後4時間以内に抜本的な情報が発生しない限り、これが今までで最高の試みであることのポイントを得ます。
jmite

@jmite:前の試行と同様に間違った試行である可能性が高いことを心配しないでください(些細なエラーを発見する前に約30分間続きました):-) :
Vor

なぜケースを区別するのですか?文法の分岐は、単語の半分とは関係ありません。しかし、私はそれは重要ではないと思います。証明が機能する場合、このケースの区別は必要ありません。想定された文法を見て、補題自体の代わりにポンピング補題の証明を使用するのは素晴らしいトリックです(これをもっと頻繁に行う必要があります)。私は1つ(実際の)懸念を持っている:あなたはのサブポンプ場合、あなたが得る ; 私はあなたが到達する方法がわかりません。それが証拠に害を及ぼすとは思わないが、よりよく確認する。また、いくつかの表記法(およびタイプミス)をまっすぐにすることもできます。0 b + p i 1 b + b 0b0b+p(i1)b+b!
ラファエル

1
@Raphael:コメントをありがとう。おそらく私は間違っていますが、ターゲットの長さとしてを選択した場合次に、すべてのポンピング長に対して、文字列はに分解でき、ポンピングできます。、確かにあなたの例では、pは確かに分割します、そうあるそのため、ただし元の文字列の長さはであるため、ポンピングされる長さの合計は。オグデンの補題を使用するいくつかの演習で覚えています...今、私はそれらを再確認します。P 0 、B 0 、X 、Y 、Z| xはY 、Z | = B | Y | = P B X 、Y 、I、Z = B + B b i 1 p i 1 = b b | x y i b+b!p0b0xyz,(|xyz|=b,|y|=pb)xyiz=b+b!b!(i1)p(i1)=b!b|xy(i1)z|=b+b!
Vor

@Raphael:...私は証拠のどこが、の補数ことを証明しているザックTomaszewskiによって紙のみ見つけることができませんでした CF(参照で質問をので、おそらくそれは新しいですが、)結果(シンプルですが); そして、有限数の特定の記号と、それらの間の任意の長さの部分文字列を含む文字列を持つ言語について、ポンピング補題スタイルの定理を導き出すことができます。Ldup={ww}
Vor

2

@Hendrik Janに反論された2回の試行の失敗後(ありがとう)、ここに別の試行がありますが、それ以上成功していません。@Vorは、正しい場合に同じ構成が適用される決定論的なCF言語の例を見つけました。これにより、補題の適用における文字列のアンカーのエラーを識別できました。補題自体に問題はないようです。これは明らかに単純すぎる構造です。コメントで詳細を参照してください。y


言語はコンテキストフリーではありません。L={uxvyu,v,x,y{0,1}{ϵ} , u∣=∣v , uv , x∣=∣y , xy }

特性化 を覚えておくと便利です。ここで、dは@sdcvvcによって提案されたハミング距離です。考える必要があるのは、対応するシンボルが異なるように、各ハーフストリングで選択された2つの位置です。L={uv:|u|=|v|,d(u,v)2}

次に、およびが偶数になるような文字列を検討します。2つの1の間のどこかでとカットすることにより、明らかに言語Lになります。この文字列を1の間の最初の部分にポンプでので、になりますが、これは言語にはないはずです。 i < j i + j u x 10 j 10 j10i10ji<ji+jux10j10j

私たちは、最初に使用しようとするオグデンの補題のポンピング補題のようなものです、それだけには適用され、文字列の上にマークされている以上の区別記号マークされたシンボルのためのポンプ長さ(それはまた、ポンピングすることができるので、補題がよりポンピングすることができますマークされていない記号)。ポンピングマーク長は、言語のみに依存します。この試行は失敗しますが、失敗はヒントになります。p pppp

次に、を選択し、 0の最初のシーケンスにシンボルをマークします。2つの1のいずれもポンプ内にないことを知っています。1つをポンプアウトする代わりに1つ(指数0)をポンプアウトできるためです。1をポンプアウトすると言語から抜け出します。ii=pi

ただし、2番目の1の両側を高速でポンピングすることも、右側でさらに高速にすることもできます。これにより、2番目の1がストリングの中央を通過することはありません。また、Ogdenの補題は、ポンピングされるもののサイズの上限を修正しません。したがって、文字列の真ん中を正確に右端の1を取得するようにポンピングを編成することはできません。

ここでは、これらの問題を処理できる修正版の補題、ここではナッシュの補題を使用します。

最初に定義が必要です(おそらく文献に別の名前がありますが、どちらがいいかわかりません-助けてください)。文字列は、シンボルを消去することによりから取得される場合に限り、文字列消去であると言われます。注意します。V V V のuをVuvvvuv

ナッシュの補題は: 場合文脈自由言語である、2つの数値が存在するおよびように、その文字列のためのの少なくとも長さのにおける、および「マーキング」のあらゆる方法以上の位置、のように書くことができる文字列で、、、、、その結果、p > 0 q > 0 w p L p w w w = u x y z v u x y z vLp>0q>0wpLpwww=uxyzvuxyzv

  1. xzには少なくとも1つのマークされた位置があります。
  2. pxyzには最大でマークされた位置があり、p
  3. 3つの文字列、、があります。 、Y 、Zx^y^z^
    1. 、YY、ZZx^x、、、y^yz^z
    2. 1 | Y | Q1≤∣x^z^∣≤q、、および1≤∣y^∣≤q
    3. L I 0 J 0uxjx^iy^z^izjvは、すべてのおよびすべてのにあり。Li0j0

証明:Ogdenの補題の証明に似ていますが、文字列および対応するサブツリーは、同じが2回あるパスを含まないように枝刈りされます(これら2つのサブツリーのルートを除く)。これは、生成される文字列およびのサイズを定数必然的に制限します。ツリーの枝刈りされていないバージョンに対応するの文字列および、主に使用され、補助定理が適用されるときのアカウンティングを簡素化します。、X 、Z 、X 、Z のY、Q 、X jはZ J J 0 、J = 1yxzx^z^y^qxjzjj0j=1

左端の記号0をマークすることにより、上記の証明の試みを修正しますが、記号0 が続き、2つの1の間の文字列の左部分を確実にポンピングします。1の間に合計 0を作成します(実際にはで十分です。なぜなら、右端の1はに存在できず、単に削除できるからです)。2 Q I = P + 2 Q I = P + Q のzp2qi=p+2qi=p+qz^

残っているのは、を選択して、正しい数の0を正確にポンピングして、2つのシーケンスが等しくなるようにすることです。しかし、これまでのところ、に対する唯一の制約はより大きいことです。また、各ポンピングでポンピングされる0の数が1からqの間であることもわかっています。したがって、最初の整数の積とします。を選択します。j i h q j = i + hjjihqj=i+h

したがって、ポンピング増分(それが何であれ)はにあるため、除算します。してみましょう商なります。正確に回ポンピングすると、言語にないストリングを取得します。したがって、Lはコンテキストに依存しません。[ 1 q ] h k k 10 j 10 jd[1,q]hkk10j10j


木のように美しいひもは決して見ないと思います。
解析がない場合、
文字列は無意味ですが、茶番です


ただし、後半のパスではスタックが逆に読み取られることに注意してください。これは、2つの位置が両方の半分で同じ位置にあることを意味しているように見えますが、逆ですか?
ヘンドリック

あなたは正しいです...私は馬鹿になりました...今、私は私の頭の後ろで私を悩ませていたものを知っています。
babou

私は議論を認識しました(自分で試したときにうまく機能しなかったため)。
ヘンドリック

この間違った答えを残すべきですか?問題を疑わしく似たものにするので、何らかの形で助けになると思います。問題は、サイトのルールが議論のために間違った結果を奨励することを意図していないということです(私は他の誰よりも下票を楽しむことを意味しません)。aibjckaibjck
babou

@HendrikJanまたバカになったの?(ところで、それを議論してくれてありがとう)
babou

-1

この質問によってはコンテキストフリーで、次の文法によって生成されると 思いますLSAXBYBYAXA00A00A11A01A1B10B00B11B01B1X00X00X11X01X1Y10Y00Y11Y01Y1


4
これは間違っています。AXの長さがBYと同じであることをガードすることはできません。たとえば、文法はS-> AXBY-> A011-> 0A1011-> 001011を生成しますが、これは元の言語ではありません。また、シンボルAとXは、BとYと同じ言語を生成します。それらはマージできます。
sdcvvc
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.