レイマンの用語でのポンピング補題とは何ですか?


82

私はこの質問を見て、ポンピングの補題が何であるかについて興味がありました(ウィキペディアはあまり役に立ちませんでした)。

言語が特定のクラスに入るには、基本的には理論的な証明である必要があることを理解していますが、それを超えると、実際にはわかりません。

非数学者/計算機科学の博士号が理解できる方法で、かなり詳細なレベルでそれを説明しようとする人はいますか?


2
私は、数学/ TCSへの近道はないと固く信じています。「素人の用語」では理解できません。とは言うものの、もちろんこれについてはコンピュータサイエンスで幅広く取り上げてきました。参照ここではここここ
ラファエル

1
1年生は定理とその証明を理解し、それを適用することが日常的に期待されているので、「[...]博士号以外の人が理解できる」何かの要求は形式言語の教科書を調べることで簡単に満たされることに注意してください。
ラファエル

ポンピング補題は証明ではありません。名前が示すように、それは補題です。
nbro 2015年

回答:


157

ポンピング補題は、言語が規則的ではないことを示す簡単な証明です。つまり、有限状態マシンを構築することはできません。正規の例は言語(a^n)(b^n)です。これは、任意の数のasの後に同じ数のbsが続く単純な言語です。だから文字列

ab
aabb
aaabbb
aaaabbbb

などは言語ですが、

aab
bab
aaabbbbbb

などではありません。

これらの例のFSMを構築するのは簡単です。

FSM

これはn = 4までずっと機能します。問題は、私たちの言語がnに制約を課しておらず、有限状態マシンは有限でなければならないということです。このマシンにいくつの状態を追加しても、誰かが私に入力を与えることができます。ここで、nは状態の数に1を加えたものに等しく、私のマシンは失敗します。したがって、この言語を読み取るために構築されたマシンが存在する可能性がある場合、状態の数を有限に保つために、どこかにループが存在する必要があります。これらのループを追加すると:

FSM 2

私たちの言語のすべての文字列が受け入れられますが、問題があります。最初の4a秒後、マシンaは同じ状態のままであるため、入力された秒数のカウントを失います。つまり、4aを超えると、bsを追加せずに、文字列に必要な数のsを追加しても、同じ戻り値を取得できます。これは、文字列が次のことを意味します。

aaaa(a*)bbbb

(a*)任意の数のasを表すと、明らかにすべてが言語であるわけではありませんが、すべてがマシンによって受け入れられます。この文脈では、ストリングの一部を(a*)ポンピングできると言えます。有限状態マシンが有限であり、nが制限されていないという事実は、言語のすべての文字列を受け入れるすべてのマシンがこのプロパティを持たなければならないことを保証します。マシンはある時点でループする必要があり、ループする時点で言語をポンピングできます。したがって、この言語用に有限状態マシンを構築することはできず、言語は規則的ではありません。

ことを忘れないでください正規表現と有限状態機械が等価である、そして置き換えるaと、b開口部と、お互いの中に埋め込むことができますHTMLタグを閉じ、そしてなぜあなたは見ることができ、パースHTMLに正規表現を使用することはできません


2
2番目の図も、baaaabbbbを生成する可能性があるという点で正しくありません。
ジェームズ

3
@Jamesは本当です。別の受け入れ状態を追加するだけでかなり修正できますが、簡単にするために、そのままにしておきます。
グラフィックヌーブ2010年

1
良い答えですが、ポンピング補題を使用して、言語が文脈自由であることを証明するために使用できることは言及されていません。規則性を否定するだけではありません
MobileMon

1
これは、それa^n b^nが非規則的であることを決定的に示すものでも、ポンピング補題についての直感の多くを提案するものでもありません。
ラファエル

1
@GraphicsNoobポンプの補題がありませ証明名前が示すように、それは、補題です。補題が証明された命題です。補題は、それほど重要ではない小さな定理と考えることができます。これは通常、他の命題やステートメントを証明または示すために使用されます。「正規言語の反復補題は証拠である」と言い始める回答には、現在114の賛成票があるとは思わないので、質問と回答には説明または説明を付けて賛成票を投じる必要があります。
nbro 2015

15

これは、特定の言語が特定のクラスに属することができないことを証明することを目的としたデバイスです。

バランスの取れた括弧の言語を考えてみましょう(記号 '('および ')'を意味し、通常の意味でバランスの取れたすべての文字列を含み、そうでない文字列は含まれません)。ポンピング補題を使用して、これが規則的でないことを示すことができます。

(言語は可能な文字列のセットです。パーサーは、文字列がその言語にあるかどうかを確認するために使用できる一種のメカニズムであるため、言語内の文字列と外部の文字列の違いを判別できる必要があります。言語。言語を認識できる通常の(またはその他の)パーサーが存在する場合、その言語は「通常」(または「コンテキストフリー」または「コンテキストセンシティブ」など)であり、言語内の文字列とそうでない文字列を区別します。言語。)

LFSRコンサルティングは良い説明を提供しました。正規言語のパーサーは、ボックスと矢印の有限のコレクションとして描画できます。矢印は文字を表し、ボックスはそれらを接続します(「状態」として機能します)。(それよりも複雑な場合は、正規言語ではありません。)ボックスの数よりも長い文字列を取得できる場合は、1つのボックスを複数回通過したことを意味します。つまり、ループがあり、ループを何度でも通過できます。

したがって、正規言語の場合、任意の長さの文字列を作成できる場合は、それをxyzに分割できます。ここで、xはループの開始に到達するために必要な文字、yは実際のループ、zは任意の文字列です。ループの後で文字列を有効にする必要があります。重要なことは、xとyの全長が制限されていることです。結局のところ、長さがボックスの数よりも大きい場合、これを実行している間に明らかに別のボックスを通過したため、ループが発生します。

したがって、バランスの取れた言語では、左括弧をいくつでも書くことから始めることができます。特に、特定のパーサーについて、ボックスよりも多くの左パーレンを書き込むことができるため、パーサーは左パーレンの数を知ることができません。したがって、xはある程度の左親であり、これは修正されています。yもいくつかの左親であり、これは無期限に増加する可能性があります。zはいくつかの正しい親であると言えます。

これは、43個の左パレンと43個の右パレンの文字列がパーサーによって認識される可能性があることを意味しますが、パーサーは、44個の左パレンと43個の右パレンの文字列からそれを判断できません。これは、私たちの言語ではありません。パーサーは言語を解析できません。

可能な通常のパーサーには固定数のボックスがあるため、常にそれよりも多くの左パーレンを書き込むことができ、ポンピング補題によって、パーサーが認識できない方法で左パーサーを追加できます。したがって、バランスの取れた括弧言語は正規表現では解析できず、したがって正規表現ではありません。


正規表現でバランスの取れた文字列をキャプチャしたい人のための優れた答えと読み物。
ジャスティンジョンソン

9

素人の言葉で理解するのは難しいことですが、基本的に正規表現には空でない部分文字列が含まれている必要があります。この部分文字列は、新しい単語全体がその言語で有効なまま、何度でも繰り返すことができます。

では実際、ポンプの補題は、正しい言語を証明するのに十分ではなく、(フリーのコンテキスト正規または)ポンプの補題を示すことによって、言語のクラスに収まらない言語を背理法を行うと、表示する方法としてはありませんんそれのために動作しません。


「正しい言語を証明するには不十分」とはどういう意味ですか?「正しい」とは、あなたが定期的なことを意味していると思います。確かに、正規言語はポンピング特性を示しますが、言語がポンピング特性を示す場合、それは必ずしも正規であるとは限りません。一方、言語がポンピング特性を示さない場合、それは規則的ではないと確信しています。基本的に、ポンピング特性は必要ですが、言語が正規であることを示すには十分でありません
nbro 2015年

4

基本的に、言語(XMLなど)の定義があります。これは、特定の文字列(「単語」)がその言語のメンバーであるかどうかを判断する方法です。

ポンピング補題は、言語から「単語」を選択し、それにいくつかの変更を適用できる方法を確立します。この定理は、言語が正規言語である場合、これらの変更により、同じ言語からの「単語」が生成されるはずであると述べています。あなたが思いついた単語がその言語にない場合、その言語はそもそも規則的ではなかったでしょう。


3

単純なポンピング補題は、とりわけ有限オートマトンによって記述される文字列のセットである正規言語の補題です。有限自動化の主な特徴は、状態によって記述される有限量のメモリしかないことです。

ここで、有限オートマトンによって認識され、自動化のメモリを「超える」のに十分な長さの文字列があるとします。つまり、状態を繰り返す必要があります。次に、部分文字列の先頭のオートマトンの状態が部分文字列の最後の状態と同じである部分文字列があります。部分文字列を読み取っても状態は変わらないため、オートマトンを賢くすることなく、任意の回数削除または複製することができます。したがって、これらの変更された文字列も受け入れる必要があります。

また、文脈自由言語には、文字列の2つの場所で括弧が一致していると直感的に見なされる可能性のあるものを削除/挿入できる、やや複雑なポンピング補題があります。


2番目の段落は良いですが、最初の段落は少し悪いです:「単純なポンピング補題は正規言語のものです」。正規言語用のものは何をするのですか?なぜポンピング補題が必要なのですか?ポンピング補題と正規言語であることの間の関係は何ですか?IMO、これらすべての質問に答える必要があります。
nbro 2015

@starblue:言語が$ {a} $の場合、最小ポンピング長は$ 2 $である理由を教えてください。言語が$ {a ^ n:n∈ℕ} $の場合、最小ポンピング長は$ 1 $です。詳細はこちら:(math.stackexchange.com/questions/1508471/minimum-pumping-length/…)。
ジャスティン2016

0

定義上、正規言語は有限状態オートマトンによって認識される言語です。それを迷路と考えてください。状態は部屋であり、遷移は部屋間の一方通行の廊下であり、最初の部屋と出口(最後の)部屋があります。「有限状態オートマトン」という名前が示すように、部屋の数には限りがあります。廊下を旅するたびに、その壁に書かれた手紙を書き留めます。最初の部屋から最後の部屋まで、文字がラベル付けされた廊下を正しい順序で通過するパスを見つけることができれば、単語を認識することができます。

ポンピングの補題は、以前に行った部屋に戻らずに迷路をさまようことができる最大の長さ(ポンピングの長さ)があることを示しています。アイデアは、特定のポイントを過ぎて歩くことができる個別の部屋が非常に多いため、迷路を出るか、トラックを横断する必要があるということです。ラビリンスでこのポンピングの長さよりも長いパスを歩くことができた場合は、迂回しています:削除できる(少なくとも1つの)サイクルをパスに挿入しています(ラビリンスの交差点を小さい単語を認識する)または無期限に繰り返される(ポンピングされる)(超長い単語を認識できるようにする)。

文脈自由言語にも同様の補題があります。これらの言語は、プッシュダウンオートマトンによって受け入れられる単語として表すことができます。プッシュダウンオートマトンは、スタックを利用して実行する遷移を決定できる有限状態オートマトンです。それにもかかわらず、状態の数はまだ有限であるため、プロパティの正式な表現を介しても、上記で説明した直感は少し複雑になる可能性があります。


@このような答えを探しています。最初と最後の部屋は同じでしょうか?私はこのコメントに固執しています:言語が$ {a} $の場合、最小ポンピング長は$ 2 $です。言語が$ {a ^ n:n∈N} $の場合、最小ポンピング長は$ 1 $です。助けていただけませんか。詳細はこちら:(math.stackexchange.com/questions/1508471/minimum-pumping-length /…)。
ジャスティン2016

0

素人の言葉で言えば、あなたはそれをほぼ正しいと思います。これは、言語がそうではないことを証明するための証明手法(実際には2つ)です。特定のクラスに。

たとえば、無限の数の文字列を含む正規言語(regexp、automataなど)について考えてみます。ある時点で、starblueが言ったように、文字列がオートマトンに対して長すぎるため、メモリが不足します。これは、オートマトンがあなたが持っている文字列のコピーの数を知ることができない文字列のチャンクがなければならないことを意味します(あなたはループに入っています)。したがって、文字列の途中にその部分文字列のコピーがいくつあっても、その言語を使用できます。

このプロパティを持っていない言語を持っている場合、すなわち、と十分に長い文字列があることをこの手段NOは、あなたが任意の回数を繰り返し、まだ言語であることをサブストリングは、その後、言語は、通常ではありません。


少なくとも最後の文は誤りです。文字列「a」で構成される言語は通常ですが、それをポンピングすることはできません。あなたが特定の方法でストリングをポンピングすることができるならば、それは規則的ではありません。たとえば、すべてのバランスの取れた式(およびアンバランスのない式)で構成された記号「(」および「)」を含む言語は規則的ではなく、「()」をポンピングすることによってそれを証明します。
David Thornley

@David、ありがとう、最後の文を修正しました。しかし、私はあなたがバランスの取れた親について間違っていると思います。補題をポンピングすることで、親が定期的ではないことを証明できるとは思いません。私はparensポンプだと思います。
Brian Postow

0

例えば、この言語取るL = NのBは、N

ここで、上記の言語の有限オートマトンをいくつかのnについて視覚化してみてください。

もし、N = 1、列W = AB。ここで、n = 2の場合、ループなしで有限オートマトンを作成できます。文字列w = a 2 b 2ます。ここでは、ループなしで有限オートマトンを作成できます

もしN = P、列W = PとBのP。基本的に、有限オートマトンは3段階で想定できます。第1段階では、一連の入力を受け取り、第2段階に入ります。同様に、ステージ2からステージ3まで。これらのステージをxyzと呼びましょう。

いくつかの観察があります

  1. 間違いなくxには「a」とzが含まれますが含まれには「b」が含まれます。
  2. ここで、yについて明確にする必要があります。
    • ケースayには「a」のみを含めることができます
    • ケースbyには「b」のみを含めることができます
    • ケースcyには「a」と「b」の組み合わせが含まれる場合があります

したがって、ステージyの有限オートマトン状態は、入力「a」および「b」を取得できる必要があります。また、可算できないaおよびbをこれ以上取得することはできません。

  1. ステージyが1つの「a」と1つの「b」のみを使用している場合、2つの状態が必要です。
  2. 2つの「a」と1つの「b」を使用している場合、ループなしなどで3つの状態が必要です。

したがって、ステージyの設計は純粋に無限です。私たちは、それはいくつかのループを置くことによって有限作ることができると私たちはループを置けば、有限オートマトンは超えて言語を受け入れることができ、L = n個のBをn個。したがって、この言語では、有限オートマトンを構築することはできません。したがって、それは定期的ではありません。


-1

これはそれ自体の説明ではありませんが、簡単です。a ^ nb ^ nの場合、FSMは、bがすでに解析されたaの数を認識し、同じn個のbを受け入れるように構築する必要あります。FSMはそのようなことを単純に行うことはできません。

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