Kleeneスターオペレーターは、なぜKleene 'closure'オペレーターとも呼ばれますか?


13

cs / programming用語の語源を理解していない場合、それは通常、いくつかの重要な基礎概念を逃したか、誤解したことを意味することがわかりました。

KleeneスターがKleeneクロージャーとも呼ばれる理由がわかりません。非ローカル変数がバインドされているプログラミングのクロージャーに関連していますか?

...リフレクションで、多分、それは閉じた表現形式で書かれたオープンエンドのセットを許可するからでしょうか?

...古き良きゴム製のアヒルを説明する方法で、私は今それがそれであると推測しています、しかしまだ権威ある答えを歓迎します。


3
あなたのユーザー名が、古き良きゴム製のアヒルを説明するファッションを望む理由ですか?
babou

@babouはい。しかし、それは今日私を失敗しました:
mallardz

私の答えで定義されている連結下のクロージャー(およびコメント内を除き、明示的に文字列操作を明示的に言及していない@David Richerbyの答え)には、空の単語ϵが含まれていません。ありがとう。結果として、Kleeneスター演算子は連結下の閉包を表すことはできません:Kleene +演算子は表します。ただし、Kleeneスター演算子は、連結から派生した電源操作の下で閉包を表す場合があります。私はこの側面をカバーするために私の答えを補完しています。予想以上に微妙でした。
babou

答えは十分読みやすいですか、または柔らかいゴムでセクションを追加する必要がありますか?
-babou

回答:


15

セット内の物に演算子を適用した結果が常にセット内にある場合、セットは何らかの演算子の下で閉じられます。たとえば、およびmが自然数である場合は常に、n + mは自然数であるため、自然数は加算の下で閉じられます。例えば、以降一方、ナチュラル減算下で閉じていない3 - 5が自然数です。nmn+m35

ある演算子の下での集合S閉包は、その演算子の下で閉ざされたSを含む最小の集合です。たとえば、減算中の自然数の閉包は整数です。セットが既に閉じられているため、加算中の自然数の閉包は自然数にすぎません。SS

したがって、「Kleene closure」は「Kleene star」の代替名ではありません。Kleeneスターはオペレーターです。セットのKleene閉包は、演算子の下でのそのセットの閉包です。


わかりました、セットの閉鎖の説明は非常に理解しやすいです。しかし、Kleene starは演算子(プラスは演算子)であり、Kleeneクロージャーは操作(加算など)であるということですか?また、名前は、操作が基本的に連結下のセットのクローズを表すという事実に由来するというBabouの答えは、非常に理にかなっています。イプシロンはそこを少し混乱させませんか?!
...-mallardz

1
@mallardz適切に言えば、クロージャーはセットです。クロージャーを形成する操作は、通常「クロージング」と呼ばれます。
デビッドリチャービー

@DavidRicherby:減算のもとで自然数の集合をクロージャーと呼ぶことができますか?演算子kleene *で閉じられた正規表現の集合は正規表現を 生成するので、クロージャーと呼びますか?
ジャスティン

@justin定義により、操作の下にあるセットのクロージャー自体は、その操作の下で閉じる必要があります。ナチュラルは減算の下で閉じられていないため、減算の下で何かを閉じることはできません。正規表現のセットはすでにKleene starの下で閉じられており、何らかの操作の下での正規表現のセットの閉じ方は、定義上、単一の正規表現ではなく、一連のものです。だからあなたの質問を本当に理解していない。
デビッドリチャービー16

@DavidRicherby:ええ、それは本当に正しいです。間違えて、自然数の集合を減算して自然数として取りました。クリーンスターは集合または有限オートマトン、あるいはその両方に関連していますか?
ジャスティン

7

手短に

Kleeneクロージャーという名前は明らかに 、何らかの文字列操作の下でのクロージャーを意味することを意図しています。

ただし、慎重な分析(OPマラルズによる批判的なコメントのおかげ)は、Kleene星が連結下で閉包することはできず、むしろKleene plus演算子に対応することを示しています。

Kleeneの星演算子は、実際には、連結から派生した電源操作の下での閉包に対応します。

名前クリーネスターはスターで、操作の構文表現から来て*いる間、閉鎖はそれが何をするかです。

これについては以下でさらに説明します。一般にクロージャー、特にKleeneスターは、セット、ここではストリングのセット、つまり言語に対する操作であることを
思い出しください。これは説明で使用されます。

常に定義されている操作の下でのサブセットの閉鎖

セットいくつかの下では閉じているN進演算F IFF fは常にいずれかのために定義されているn個の引数のタプルC及び C = { F C 1... C N| C 1... C NC }CnffnCC={fc1cnc1cnC}

拡張することによって通常の方法で値のセットに、すなわち F S 1··· S N= { F S 1... sはN| S IS I1 I N } 我々は、設定された式として条件を書き換えることができる:C = F C ... C f

fS1Sn={fs1snsS1n}


C=fCC

ドメイン(またはセット)のために動作とF常に上で定義されたD、および集合S Dの閉鎖Sfはある最小の集合S F を含むSを:満たす方程式こと S F = { F S 1... sはN| S 1... sはNS F }DfDSDSfSfSSf={fs1sns1snSf}

もっと簡潔に言えば、fの下でのの閉包は次の式で定義できます。Sf

Sf は、次のような最小セットです SSf そして Sf=fSfSf

これは、セマンティクスでよく使用され、形式言語でも使用される最小固定小数点定義の例です。文脈自由文法は、非終端記号が言語変数を表す言語方程式のシステム(つまり、文字列セット方程式)として見ることができます。最小固定小数点ソリューションは、言語を各変数に関連付けます。したがって、初期シンボルに関連付けられた言語は、CF文法で定義された言語です。

コンセプトを拡張する

上記で定義されたクロージャは、サブセット を最小セットS fに拡張して、操作fが常に定義されるようにすることのみを目的としています。SSff

OPのmallardzにより述べたように、これは空の単語が含まれないため、十分な説明ではないS Fが既にない場合にS。確かに、この閉鎖は、Kleene星ではなく、Kleene plusの定義に対応しています。ϵSfS+*

実際、閉鎖の概念は拡張することも、さまざまな方法で検討することもできます。

  1. 他の代数的性質への拡張

    これを拡張する方法では(クロージャとは呼ばれなくなりましたが)、より一般的には、操作fに関して特定の代数的性質を持つ集合への拡張を検討します。Sff

    あなたが定義した場合含む最小セットとしてSをある モノイドバイナリ関数のためのF、あなたが閉鎖し、空の単語である中立要素の両方が必要ですεをSfSfϵ

  2. 派生操作による拡張

    より適切には閉鎖の問題である2番目の方法があります。あなたが閉鎖定義する際に使用すると、全体のセットから値を許可しながら、あなたは、引数の一部に関して、それを考慮することができますD他の引数について。SDD

    (簡単にするために)バイナリ関数考慮オーバーDを、あなたが定義することができ、S 、F 1を含む最小セットとしてSを満たす方程式こと:S F 1 = { F S 1sは2| S 1S F 1S 2D }fDSf1S

    Sf1={fs1s2s1Sf1s2D}

    または設定された方程式:

    Sf1 は、次のような最小セットです SSf1 そして Sf1=fSf1D

    これは、引数が同じセットに属していない場合にも意味があります。次に、1つのセット内のいくつかの引数に関して、他の引数のすべての可能な値を考慮して閉鎖することができます(多くのバリエーションが可能です)。

    Mfϵ fMϵあなたはM

    あなたはMあなたは0=ϵ そして nNあなたはn=fあなたはあなたはn1

    あなたはnMN0

    Mnうんn={あなたはnあなたはうん}あなたはnf

    {U0={u0uU}={ϵ}nN,Un=f(U,Un1)
    fM

    U,1UM

    U,1 is the smallest set suchthat UU,1 and U,1=f(U,1,N0

    そして、これは、文字列の無料モノイドの連結操作に構造が適用されるとき、私たちにKleene star操作を与えます。

    完全に正直に言うと、私は不正行為をしていないかどうかわかりません。しかし、定義はあなたがそれを作ることだけであり、それは実際にKleeneの星を閉鎖に変えるために私が見つけた唯一の方法でした。私は一生懸命努力しているかもしれません。
    コメントを歓迎します。

常に定義されているわけではない操作の下でセットを閉じる

これは、閉鎖の概念の見方と使用法が少し異なります。この見方は実際に質問に答えているわけではありませんが、混乱を避けるために心に留めておくと良いようです。

fD

  • Df

  • DDf

  • DDff

DfDf

これは、同値関係によって商化された自然数のペアのセットを考慮して、整数が自然数から構築される方法です(2つの要素が同じ順序で同じ差がある場合、2つのペアは等価です)。

これは、整数から有理数を構築する方法でもあります。

そして、これは、理論が古典的な実数をどのように構築できるかですが、構築はより複雑です。


ちょっと感謝、連結の説明の下での閉鎖は多くの意味をなしますが、連結の下の閉鎖にイプシロンが存在しますか?
マラルズ

ϵ

@DavidRicherby実際に私が意味したのは、S = {m}のセットがある場合、Sの連結下でのクロージャにはイプシロンが含まれますか?m *が正しいからですか?そうでない場合、Kleeneのクロージャーは連結下のクロージャーと完全に同等ではないと思いますが、名前の由来がどこにあるかはまだわかります。また、私はどこかでKleene starが二項演算子であり、イプシロンの生成を回避したことをどこかで読んだことを覚えているようです。
マラルツ

@DavidRicherby @ mallardzの公正な異議申し立てに応えるために、回答を完了しました。
babou

6

バツバツバツ

  1. バツバツ
  2. バツyバツy
  3. バツ=バツ

=バツy=バツy

バツ=2ΣバツyΣバツyバツy

  1. LL
  2. L1L2L1L2
  3. L=L

Kleene plus演算子もこれらの公理を満たしているため、この定義の下ではクロージャー演算子でもあります。


これにより、最小要件が削除されませんか?つまり、この要件を削除すると、デビッド・リチャービーの答えも、私の最初の答えも、Kleeneスターにとっては問題ありません。
babou

自分のコメントに答える。最小値は維持されますが、閉じたセットのセットに関して定義されます。連結などの文字列の操作に直接関係しません。Kleene starとplusは両方とも閉包操作ですが、閉集合の異なる集合に関して最小性を使用して定義されます。これは、はるかに抽象的なビューです。(少なくとも、最終的に行ったように、セットレベルでの推論が正しい方法であったことを確認できて満足です:)。面白い。ありがとう。
babou
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.