Warning: Undefined variable $type in /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php on line 3

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/users/1/sub.jp-asate/web/wiki/includes/json/FormatJson.php on line 297

Warning: Trying to access array offset on value of type bool in /home/users/1/sub.jp-asate/web/wiki/includes/Setup.php on line 660

Warning: session_name(): Session name cannot be changed after headers have already been sent in /home/users/1/sub.jp-asate/web/wiki/includes/Setup.php on line 834

Warning: ini_set(): Session ini settings cannot be changed after headers have already been sent in /home/users/1/sub.jp-asate/web/wiki/includes/session/PHPSessionHandler.php on line 126

Warning: ini_set(): Session ini settings cannot be changed after headers have already been sent in /home/users/1/sub.jp-asate/web/wiki/includes/session/PHPSessionHandler.php on line 127

Warning: session_cache_limiter(): Session cache limiter cannot be changed after headers have already been sent in /home/users/1/sub.jp-asate/web/wiki/includes/session/PHPSessionHandler.php on line 133

Warning: session_set_save_handler(): Session save handler cannot be changed after headers have already been sent in /home/users/1/sub.jp-asate/web/wiki/includes/session/PHPSessionHandler.php on line 140

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/users/1/sub.jp-asate/web/wiki/languages/LanguageConverter.php on line 773

Warning: Cannot modify header information - headers already sent by (output started at /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php:3) in /home/users/1/sub.jp-asate/web/wiki/includes/Feed.php on line 294

Warning: Cannot modify header information - headers already sent by (output started at /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php:3) in /home/users/1/sub.jp-asate/web/wiki/includes/Feed.php on line 300

Warning: Cannot modify header information - headers already sent by (output started at /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php:3) in /home/users/1/sub.jp-asate/web/wiki/includes/WebResponse.php on line 46

Warning: Cannot modify header information - headers already sent by (output started at /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php:3) in /home/users/1/sub.jp-asate/web/wiki/includes/WebResponse.php on line 46

Warning: Cannot modify header information - headers already sent by (output started at /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php:3) in /home/users/1/sub.jp-asate/web/wiki/includes/WebResponse.php on line 46
https:///mymemo.xyz/wiki/api.php?action=feedcontributions&feedformat=atom&user=116.94.178.253 miniwiki - 利用者の投稿記録 [ja] 2024-06-25T03:17:13Z 利用者の投稿記録 MediaWiki 1.31.0 文脈依存文法 2016-04-26T18:33:21Z <p>116.94.178.253: </p> <hr /> <div>&#039;&#039;&#039;文脈依存文法&#039;&#039;&#039;(ぶんみゃくいぞんぶんぽう、&#039;&#039;Context-sensitive Grammar&#039;&#039;)は、[[形式文法]] &#039;&#039;G&#039;&#039; = (&#039;&#039;N&#039;&#039;, &amp;Sigma;, &#039;&#039;P&#039;&#039;, &#039;&#039;S&#039;&#039;) において &#039;&#039;P&#039;&#039; の生成規則が以下のような形式のものをいう。<br /> : &amp;alpha;&#039;&#039;A&#039;&#039;&amp;beta; &amp;rarr; &amp;alpha;&amp;gamma;&amp;beta;<br /> ここで &#039;&#039;A&#039;&#039; は &#039;&#039;N&#039;&#039; に属する[[非終端記号]]であり、&amp;alpha; と &amp;beta; は (&#039;&#039;N&#039;&#039; &amp;cup; &amp;Sigma;)* である(すなわち &amp;alpha; と &amp;beta; は非終端記号と[[終端記号|終端文字]]から構成される文字列である)。また、&amp;gamma; は (&#039;&#039;N&#039;&#039; &amp;cup; &amp;Sigma;)&lt;sup&gt;+&lt;/sup&gt; である(すなわち &amp;gamma; は空でない非終端記号と終端文字で構成される文字列である)。さらに、以下のような生成規則が存在することもある。<br /> : S &amp;rarr; &amp;epsilon;<br /> ここで、&amp;epsilon; は空の文字列である。ただしこのとき、S が生成規則の右側に出現してはならない。この規則を許すことで、空文字列を含む[[文脈依存言語]]の定義が可能になり、文脈依存言語が[[文脈自由言語]]を真に含むと言えるようになる。<br /> <br /> == 概要 ==<br /> 「文脈依存」という用語は、&#039;&#039;A&#039;&#039;の前後の &amp;alpha; と &amp;beta; を意味している。つまり &#039;&#039;A&#039;&#039; の前後の[[文脈]]によって &#039;&#039;A&#039;&#039; を &amp;gamma; に置換できるかどうかを判断しているからである。これは[[文脈自由文法]]と異なる点であり、文脈自由文法では終端文字列の文脈(つまり非終端記号の前後の終端文字列)は生成規則上無視される。文脈依存文法で記述される[[形式言語]]は[[文脈依存言語]]と呼ばれる。<br /> <br /> 文脈依存文法の概念は[[1950年代]]に[[ノーム・チョムスキー]]によって導入されたもので、文脈によってある単語がその位置に存在することが適当か否かが判断される自然言語の文法を記述する方法として考案されたものである。<br /> <br /> == もうひとつの定義 ==<br /> 文脈依存文法の別の定義として、&#039;&#039;P&#039;&#039; 内の生成規則に次のような制限を与えたものがある。各生成規則は &amp;alpha;&amp;nbsp;-&gt;&amp;nbsp;&amp;beta; という形式で、|&amp;nbsp;&amp;alpha;&amp;nbsp;|&amp;nbsp;&amp;le;&amp;nbsp;|&amp;nbsp;&amp;beta;&amp;nbsp;| という制限に従う。ここで |&amp;nbsp;&amp;alpha;&amp;nbsp;| は &amp;alpha; の長さである。この文法では生成規則を適用したときに文字列の長さが減ることがないので、「単調文法」(&#039;&#039;Monotonic Grammar&#039;&#039;)とか「非縮小文法」(&#039;&#039;Noncontracting Grammar&#039;&#039;)などと呼ばれる。<br /> <br /> 非縮小文法と文脈依存文法は異なるが、同じ言語クラスを定義できるという意味でほぼ等価である(違いは、非縮小文法では空の文字列 &amp;epsilon; を含む言語を生成できない点である)。文脈依存文法で記述された言語 &#039;&#039;L&#039;&#039; に対して、非縮小文法は &#039;&#039;L&#039;&#039;&amp;nbsp;-&amp;nbsp;{&amp;epsilon;} を記述できるし、その逆も真である。<br /> <br /> == 例 ==<br /> 文脈依存文法の例を以下に示す。<br /> :S &amp;rarr; aSBC | aBC<br /> :CB &amp;rarr; HB<br /> :HB &amp;rarr; HC<br /> :HC &amp;rarr; BC<br /> :aB &amp;rarr; ab<br /> :bB &amp;rarr; bb<br /> :bC &amp;rarr; bc<br /> :cC &amp;rarr; cc<br /> ここで、| は同じ非終端記号からの生成規則を列挙する代わりに一行で表記するために用いられている。この文法が生成する言語は &lt;math&gt; \{ a^n b^n c^n : n \ge 1 \} &lt;/math&gt; であり、これは[[文脈自由言語]]ではない。文脈依存文法では生成規則を適用する際に複数の文字(文字列)に対してパターンマッチさせるようになっており、マッチすべき文字数に制限はない。一方で文脈自由文法ではパターンマッチするのは常に一文字(非終端記号)である。文脈依存文法で記述できる言語として &lt;math&gt; \{ a^n b^n c^n d^n : n \ge 1 \} &lt;/math&gt; というものもあるが、これの生成規則は上記のものより更に複雑になる。<br /> <br /> この文法で「aaabbbccc」をマッチさせるときの流れは、以下のようになる。<br /> :S<br /> :&amp;rarr; aSBC<br /> :&amp;rarr; aaSBCBC<br /> :&amp;rarr; aaaBCBCBC<br /> :&amp;rarr; aaaBHBCBC<br /> :&amp;rarr; aaaBHCCBC<br /> :&amp;rarr; aaaBBCCBC<br /> :&amp;rarr; aaaBBCHBC<br /> :&amp;rarr; aaaBBCHCC<br /> :&amp;rarr; aaaBBCBCC<br /> :&amp;rarr; aaaBBHBCC<br /> :&amp;rarr; aaaBBHCCC<br /> :&amp;rarr; aaaBBBCCC<br /> :&amp;rarr; aaabBBCCC<br /> :&amp;rarr; aaabbBCCC<br /> :&amp;rarr; aaabbbCCC<br /> :&amp;rarr; aaabbbcCC<br /> :&amp;rarr; aaabbbccC<br /> :&amp;rarr; aaabbbccc<br /> <br /> 上の例を等価な単調文法で書くと、以下のようになる。<br /> :S &amp;rarr; abc | aSBc<br /> :cB &amp;rarr; Bc<br /> :bB &amp;rarr; bb<br /> <br /> == 標準形 ==<br /> 空の文字列を生成しない文脈依存文法は、等価な[[黒田標準形]]に変換可能である。ここでいう「等価」というのは同じ言語を生成する文法を記述できるという意味である。<br /> <br /> == 計算属性 ==<br /> ある文字列 &#039;&#039;s&#039;&#039; が文脈依存文法 &#039;&#039;G&#039;&#039; で記述される言語に属するか否かという[[決定問題]]は、[[PSPACE完全]]である。実際、文脈依存文法の中にはその文法認識問題がPSPACE完全なものもある。<br /> <br /> == 関連項目 ==<br /> * [[文脈自由文法]]<br /> * [[チョムスキー階層]]<br /> * [[形式言語の階層]]<br /> * [[形式文法]]<br /> * [[句構造規則]]<br /> <br /> {{DEFAULTSORT:ふんみやくいそんふんほう}}<br /> [[Category:形式言語]]<br /> [[Category:数学に関する記事]]</div> 116.94.178.253
Warning: Cannot modify header information - headers already sent by (output started at /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php:3) in /home/users/1/sub.jp-asate/web/wiki/includes/WebResponse.php on line 46