与えられた通常の言語には、接頭辞のない無限のサブセットが含まれていますか?


11

一方が他方の接頭辞である2つの明確な単語がない場合、有限アルファベット上の単語のセットは接頭辞なしです。

質問は:

NFAとして指定された通常の言語にプレフィックスなしの無限サブセットが含まれているかどうかを確認する複雑さは何ですか?

回答(以下のミハイル・ルードイによる):これは多項式時間で行うことができ、NLでさえ考えます。

ミハイルの答えを言い換えると、(Σ,q0,F,δ)通常の形式の入力NFA(イプシロン遷移なし、トリム)とし、L[p,r](それぞれL[p,R])状態を有することにより得られる言語p初期状態として{r}最終状態(それぞれ状態としてp initalとして設定されたR最終など)。言葉のためにu聞かせてuωuを反復することにより得られる無限の単語であること。

以下は同等です。

  1. 言語L[q0,F]は、プレフィックスのない無限のサブセットが含まれています。
  2. qQuL[q,q]{ε} vL[q,F]その結果vの接頭辞ではないuω
  3. qQ L[q,q]{ε} uL[q,q] vL[q,F]となるようvの接頭辞ではないuω

証明:

3 2ささい。

2の場合 1、それはいずれかのことを確認すればよいwL[q0,q]私たちがいることを持っているw(u|v|)v無限の接頭辞のない部分集合であるL[q0,F]

最後に、1 3はミハイルの答えの「正しさ」の証明です。

回答:


7

問題は多項式時間で解決できます。

開始するには、次の追加プロパティを使用して、指定されたNFAを同等のNFAに変換します。

  • イプシロン遷移はありません
  • すべての状態は開始状態から到達可能です

役立つサブルーチン

NFA N、状態q、および空でない文字列sます。次のサブルーチンは、私たちは次の文の真理値を評価できるようになる:「内のすべてのパスN状態からq受け入れる状態に相当する文字列の接頭辞である文字列へsn、いくつかのためn。」さらに、このサブルーチンは多項式時間で実行されます。

まず、|で NFA Sを構築します s | + 1つのプレフィクスされていないすべての文字列受け入れ状態S nは任意のためのn||の「パターン」にどこを追跡するために、ループ内の非受け入れ状態をS 、S 、S 、S 、Sは...私たちは、これまでのところですそのパターンからすでに逸脱している場合は状態を受け入れます)。次に、NFA構築N "のような正確であるNが、持っているQその開始状態などを。最後に、最終的なNFA Nを作成します''|s|+1snn|s|sssssNNqNその言語L(N)であり、L(S)L(N)標準NFA交差構造を使用。これらの構造はすべて、入力のサイズが多項式であることに注意してください。

次に、Nの言語が空であるかどうかをテストします(単純なグラフ検索で多項式時間で実行できます)。L(N)=場合に限りL(S)L(N)=、すなわち内のすべての文字列L(N)でないL(S)。つまり、言語N空の場合にのみであるN接頭辞ある文字列のみ受け付けsn、いくつかのためn。これは、我々が評価しようとしていたまさに声明と言い換えることができます:「内のすべてのパスN状態からq受け入れる状態に相当する文字列の接頭辞である文字列へsn、いくつかのためn。」

メインアルゴリズム

ループ内にあるNFAの状態のセットを検討してください。そのような状態qごとに、以下を実行します。

してみましょうP2含む任意の単純なループもq。してみましょうsループに対応する文字列であるP2。NFAにはイプシロン遷移がないため、sは空ではありません。次に、サブルーチンをNFA、状態q、および文字列s適用します。サブルーチンが、NFAのqで始まり、受け入れ状態で終わるすべてのパスが、あるn snプレフィックスs nに対応することを示しているn、次の状態q進みます。それ以外の場合、指定されたNFAの言語にプリフェックスのないサブセットが含まれていることを出力します。

ループ内にあるすべての状態qを試行し、アルゴリズムが出力しない場合、指定されたNFAの言語にはプリフェックスのないサブセットが含まれていないことを出力します。

正しさ(前半)

最初に、上記のアルゴリズムが、指定されたNFAの言語に無限のprefexフリーサブセットが含まれていることをアサートすると仮定します。いくつかのループP2といくつかの状態qを考慮しながら、この出力が選択されたとしましょう。前と同様に、sP2対応する文字列です。次に、サブルーチンに従って、NFAのqで始まり、受け入れ状態で終わるすべてのパスが、一部のn snプレフィックスに対応するわけではないことがわかります(これは、メインアルゴリズムにつながるサブルーチンの唯一の出力であるためそのqで出力)。nq

ましょうP3からのパス:その存在サブルーチンによってアサートされるパスでq対応する文字列のように受け入れる状態にtの接頭辞ではないsn任意のためのn

レッツP2で構成されmのコピーP2mその十分に大きいm|s|>|t|。以来、P2を通るループでqP2から経路として扱うことができるqqP2対応する文字列はsm

ましょうP1の開始状態からのパスであるq(すべての状態が開始されてから到達可能であるので、存在する)およびlet r、このパスに対応する文字列です。

この場合、P1P ' 2のxコピー、およびP 3からなるパスは、受け入れ可能な計算パスです。このパスに対応する文字列はr s m x tです。したがって、NFAはr s m x t 形式のすべての文字列を受け入れます。これは、NFAによって受け入れられる文字列の無限のセットであり、この文字列のセットにはプレフィックスが含まれていないと主張しています。特に、r s m x tr P2P3r(sm)xtr(sm)xtr(sm)xtr(sm)yt withy>x。つまり、t(sm)yxt接頭辞です。以来(sm)yx長有するm(yx)|s|m|s|>|t|、これはts m y接頭辞であることを意味します(sm)yx=sm(yx)。しかし、我々はそのサブルーチンの出力によって知っているtの接頭辞ではありませんsn任意のためn。したがって、r(sm)xtr(sm)ytプレフィックスにすることはできません。また、必要に応じて、文字列のセットにはプレフィックスがありません。

したがって、メインアルゴリズムが、指定されたNFAの言語に無限のprefexフリーサブセットが含まれていることを出力する場合、実際にそうであることを示しました。

正しさ(後半)

次に、残りの半分を示します。指定されたNFAの言語に無限のprefexフリーサブセットが含まれている場合、メインアルゴリズムはこの事実を出力します。

指定されたNFAの言語に、プレフィックスのない無限のサブセットが含まれているとします。ましょAこれらの文字列に対応する(受け入れる)演算パスのセットです。Aは、対応する文字列が互いのプレフィックスではない、受け入れ可能な無限の計算パスセットであることに注意してください。

その状態を介してNFAにループが存在する場合、NFAの状態は「ループ」であり、それ以外の場合は「非ループ」であるとします。開始状態から非ループ状態のみを通過するループ状態へのすべてのパスを考慮します(最終的に1つのループ状態を除く)。してみましょうPこれらの経路の集合とします。各パスpP、そのループ内の状態が状態をループとなるであろうようにループを有することができないpループ状態を通過します。したがって、Pのパスの長さはNFAの状態の数によって上に制限されるため、Pは有限です(たとえば、開始状態がループ状態の場合、そのようなパスは空のパスのみです)。

A|P|+1分割できますP | + A計算パス開始方法に基づく1つのサブセット。具体的には、のためpP、聞かせpは内のすべての演算パスの集合Aパスで開始Pおよびlet Bは内の他のすべてのパスのセットであるA。明らかに、すべてのA p sとBは互いに素であり、それらの和集合は集合Aです。さらに、BApApBAApBABループ状態を決して通過しないため、ループしないパスのみが含まれます。したがって、Bは有限です。その場合、いくつかのApは無限である必要があると結論付けることができます(それ以外の場合、Aは有限個の有限集合の和集合になります)。

以来、pが無限大である、無限に多くの演算パスがある、その文字列から始まるパスを受け入れている互いのプレフィックスであるのいずれもP。してみましょうqはパスの末尾に到達した状態であるP。受け入れパスは無限に多くあると結論付けることができ、qで始まるこのセットA ′を呼び出します。これらのパスはすべて、お互いのプレフィックスではない文字列に対応します。AppqpAq

メインアルゴリズム中に、状態qおよびいくつかの文字列sサブルーチンを実行します。このサブルーチンは、で始まる、すべて受け入れてパスするかどうかを教えてくれるqの接頭辞である文字列に対応しsn、いくつかのためn。これが当てはまる場合、A無限に多くのすべての受け入れパスは、さまざまなnに対するsnプレフィックスになります。これは、それらがすべて互いにプレフィックスであることを意味します。そうではないため、メインアルゴリズムが状態qでサブルーチンを実行すると結論付けますnq、結果は他の可能な結果です。ただし、これにより、メインアルゴリズムは、NFAの言語にプレフィックスなしの無限サブセットが含まれていることを出力します。

これで正しさの証明が終わりました。


特定の状態が(指数関数的に)多くのループの一部になる可能性があるため、ループ処理の仕組みがわかりません。もちろん、これらのループのいずれか2つを使用して非周期的なシーケンスを生成できる場合は、これで完了です。q
ジャフ

ループ処理とはどういう意味ですか?メインアルゴリズムでは、各状態のためのあなただけの1つのを通過するループ選ぶQループいること(潜在的に指数関数的に多くのうちいずれかのループ)とコールP 2あなたが状態でサブルーチンを実行する(あとがきQと文字列がどこsがあるがP 2に関連付けられた文字列)。サブルーチンは基本的に、そのループを使用して非周期的なシーケンスを生成できるかどうかのチェックを処理します。はいの場合、これで完了です。いいえ(さらにqごとにno )の場合、言語全体が周期的なシーケンスの結合であるため、これで完了です。qqP2qssP2q
ミハイルルドーイ

質問を明確にするために、初期状態、最終状態T、および3つの遷移q a qq b qq a Tを持つ単純なNFAを示します。aのループはプレフィックスのない文字列を生成しませんが、bのループは生成します。qTqaqqbqqaTab
ジャフ

実際、のループはプレフィックスのないセットを生成ます。文字列のセットa b a すべてaループを使用します。私のアルゴリズムでは、qに対して選択しループがaループである場合、サブルーチンは、qで始まるすべての受け入れパスにa の形式の文字列があるとは限らないため、メインアルゴリズムは無限プレフィックスを言う-freeサブセットが存在します。用ループアルゴリズム使用する場合qは代わりであるBのループサブルーチンが始まるごとに受け入れパスでないと判断qはフォームのストリング有するBをaabaaqaqaqbq、この場合もアルゴリズムの出力は同じです。b
ミハイルルドー

ありがとう、ミハイル!あなたの答えが問題を解決すると思います。
グーグル

2

定義

定義1Sを単語のセットとします。単語u 0u n、およびv 1v nが存在する場合、S適切に無限の接頭辞なし(この回答の目的のために名前を作成)であると言いますu0,,un,v1,,vn,

  • それぞれについてn1unvn非空であり、異なる文字で始まります。

  • S={u0v1,,u0unvn+1,}

直観は、Sの単語がパスのラベルとまったく同じになるように、次の形状の無限の根付きツリー(ルート、葉、残りの内部ノード)にこれらのすべての単語を配置できることです。ルートからリーフへ:S

   u₀    u₁    u₂
■-----•-----•-----•⋅⋅⋅
      |     |     |
      | v₁  | v₂  | v₃
      |     |     |
      ▲     ▲     ▲

命題1.1:プレフィックスなしの素敵な無限集合はプレフィックスなしです。

命題1.1の証明u0unvn+1u0umvm+1厳密な接頭辞であると仮定します。次の2つの場合があります。

  • n<m場合、vn+1un+1umvm+1接頭辞です。un+1vn+1は別個の最初の文字があるため、これは不可能です。

  • n>m場合、um+1unvn+1vm+1プレフィックスです。um+1vm+1最初の文字が異なるため、これは不可能です。

命題1.2:接頭辞のない素敵な無限集合は無限です。

命題1.2の証明:証明1.1では、nm場合、u0unvn+1およびu0umvm+1は接頭辞の順序で比較できないことを示しました。したがって、それらは等しくありません。


主な証拠

命題2:プレフィックスなしの無限セットには、プレフィックスなしの素敵なセットが含まれています。

命題3:言語に適切な無限プレフィックスフリーセットが含まれる場合に限り、言語には無限プレフィックスフリーセットが含まれます。

以下の証明。

命題3の証明命題2による命題1.1および1.2による。

命題4:正規言語のうまくプレフィックスフリーサブセットのセット(無限ワードとして符号化u0¯v1^u1¯v2^u2¯)であり、ω -regular(およびビュッヒのサイズそれを認識するオートマトンは、通常の言語を認識するNFAのサイズの多項式です)。

以下の証明。

定理5:NFAによって記述された通常の言語に接頭辞のないサブセットが無限に含まれるかどうかの決定は、NFAのサイズの時間多項式で行うことができます。

定理5の証明:命題3によって、無限に接頭辞のないサブセットが含まれているかどうかをテストするだけで十分です。これは、命題4で与えられるBüchiオートマトンを構築し、その非空言語(Büchiオートマトンのサイズで時間的に線形に実行できます)。


命題2の証明

補題2.1Sが接頭辞なしの集合である場合、w1Sも同様です(あらゆる単語w)。

証明2.1:定義による。

補題2.2Sを単語の無限の集合とする。してみましょうw:=lcp(Sn)内のすべての単語に最長プレフィックス共通であるSSw1S基数は同じです。

証明2.2f x = w xによりf:w1SS定義する。これは、ウェルの定義によって定義されるW - 1つの Sの定義によって単射Fとの定義により全射Wf(x)=wxw1Sfw

命題2の証明:我々は構築unvnの誘導によってnの誘導仮説と、Hn以下の部品で構成さ:

  • (P1)すべてについてk{1,,n}u0uk1vkS

  • (P2)すべてについてk{1,,n}ukvk非空であり、異なる文字で始まります。

  • (P3) Sn:=(u0un)1Sは無限です。

  • (P4)Snすべての単語に共通する空でない接頭辞はありません。言い換えれば、何の文字がありませんように S NΣ *がaSnaΣ

備考2.3P 4なしでHnを検証するシーケンスがある場合、u nを変更してP 4も満たすようにすることができます。実際、u nu n lcp S nに置き換えるだけで十分です。P 1は影響を受けません。P 2は簡単です。P 4は建設によるものです。P 3(P4)un(P4)ununlcp(Sn)(P1)(P2)(P4)(P3) 補題3です。

n帰納法によりシーケンスを構築します。

  • 初期化:H0は、u0:=lcp(S)をとることによって真になります(つまり、u0:=εをとって、注釈3.1を適用します)。

  • 誘導ステップは:私たちは言葉があるとしu1,,unv1,,vn、その結果Hnのためのいくつかn。私たちは、構築しますun+1vn+1ようにHn+1

以来、Sn無限大と接頭辞を含まない(補題1)、それが含まれていないεようにSn=aΣ(SnaΣ)。以来、Sn無限大であり、文字が存在するように、S NΣ *は無限であるが。P 4、文字あり、Bは異なるようにS NBは、ΣaSnaΣ(P4)baSnbΣは空ではありません。選んvn+1SnbΣ。服用un+1であることを満足するP 1P 2及びP 3我々が取得する発言3.1を適用するようにP 4 U N + 1= LCP - 1 S Na(P1)(P2)(P3)(P4)un+1:=alcp(a1Sn)

(P1) u1unvn+1u1un(SnbΣ)S

(P2)un+1およびvn+1定義による。

(P3) a1Sna定義により無限であるため、Sn+1は補題3により無限になります。

(P4)un+1定義による。


命題4の証明

命題4の証明A=(Q,,Δ,q0,F) NFAとする。

u0v1u0u1vnun

マルチヘッドオートマトンの方が簡単だと言われましたが、形式にあまり詳しくないので、ブッチオートマトン(ヘッドが1つしかない)を使用して説明します。

Σ:=Σ¯Σ^ukvk

Q:=Q×({}(Q×Σ))

  • (q,)un

  • (q,(p,a))unpvn+1apun+1a

q0:=(q0,)u0

FF×Q×Σ

  • unqaq(q,)a¯(q,)

  • unvn+1qaq(q,)a^(q,(q,a))

  • vnqaq(q,(p,a))a^(q,(p,a))

  • vnunpappba(q,(p,b))a¯(p,)

u0¯v1^u1¯v2^un¯vn+1^An1unvnn0u0unvn+1L(A)

補題4.1の証明:読者に任せてください。

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