For faster navigation, this Iframe is preloading the Wikiwand page for 文脈依存文法.

文脈依存文法

文脈依存文法(ぶんみゃくいぞんぶんぽう、: context-sensitive grammar)は、形式文法 G = (N, Σ, P, S) において P の生成規則が以下のような形式のものをいう。

αAβ → αγβ

ここで AN に属する非終端記号であり、α と β は (N ∪ Σ)* である(すなわち α と β は非終端記号と終端文字から構成される文字列である)。また、γ は (N ∪ Σ)+ である(すなわち γ は空でない非終端記号と終端文字で構成される文字列である)。さらに、以下のような生成規則が存在することもある。

S → ε

ここで、ε は空の文字列である。ただしこのとき、S が生成規則の右側に出現してはならない。この規則を許すことで、空文字列を含む文脈依存言語の定義が可能になり、文脈依存言語が文脈自由言語を真に含むと言えるようになる。

概要

[編集]

「文脈依存」という用語は、Aの前後の α と β を意味している。つまり A の前後の文脈によって A を γ に置換できるかどうかを判断しているからである。これは文脈自由文法と異なる点であり、文脈自由文法では終端文字列の文脈(つまり非終端記号の前後の終端文字列)は生成規則上無視される。文脈依存文法で記述される形式言語文脈依存言語と呼ばれる。

文脈依存文法の概念は1950年代ノーム・チョムスキーによって導入されたもので、文脈によってある単語がその位置に存在することが適当か否かが判断される自然言語の文法を記述する方法として考案されたものである。

もうひとつの定義

[編集]

文脈依存文法の別の定義として、P 内の生成規則に次のような制限を与えたものがある。各生成規則は α -> β という形式で、| α | ≤ | β | という制限に従う。ここで | α | は α の長さである。この文法では生成規則を適用したときに文字列の長さが減ることがないので、「単調文法」(: monotonic grammar)とか「非縮小文法」(: noncontracting grammar)などと呼ばれる。

非縮小文法と文脈依存文法は異なるが、ほぼ弱等価英語版(同じ言語クラスを定義できる)である。違いは、非縮小文法では空の文字列 ε を含む言語を生成できない点である。文脈依存文法で記述された言語 L に対して、非縮小文法は L - {ε} を記述できるし、その逆も真である。

[編集]

文脈依存文法の例を以下に示す。

S → aSBC | aBC
CB → HB
HB → HC
HC → BC
aB → ab
bB → bb
bC → bc
cC → cc

ここで、| は同じ非終端記号からの生成規則を列挙する代わりに一行で表記するために用いられている。この文法が生成する言語は であり、これは文脈自由言語ではない。文脈依存文法では生成規則を適用する際に複数の文字(文字列)に対してパターンマッチさせるようになっており、マッチすべき文字数に制限はない。一方で文脈自由文法ではパターンマッチするのは常に一文字(非終端記号)である。文脈依存文法で記述できる言語として というものもあるが、これの生成規則は上記のものより更に複雑になる。

この文法で「aaabbbccc」をマッチさせるときの流れは、以下のようになる。

S
→ aSBC
→ aaSBCBC
→ aaaBCBCBC
→ aaaBHBCBC
→ aaaBHCCBC
→ aaaBBCCBC
→ aaaBBCHBC
→ aaaBBCHCC
→ aaaBBCBCC
→ aaaBBHBCC
→ aaaBBHCCC
→ aaaBBBCCC
→ aaabBBCCC
→ aaabbBCCC
→ aaabbbCCC
→ aaabbbcCC
→ aaabbbccC
→ aaabbbccc

上の例を弱等価な単調文法で書くと、以下のようになる。

S → abc | aSBc
cB → Bc
bB → bb

標準形

[編集]

空の文字列を生成しない文脈依存文法は、弱等価な黒田標準形に変換可能である。

計算属性

[編集]

ある文字列 s が文脈依存文法 G で記述される言語に属するか否かという決定問題は、PSPACE完全である。実際、文脈依存文法の中にはその文法認識問題がPSPACE完全なものもある。

関連項目

[編集]
{{bottomLinkPreText}} {{bottomLinkText}}
文脈依存文法
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?