bcher-kva」と変換されるかを例にとって説明する。最初に入力文字列中にあるすべての基本文字を、基本文字以外の文字は飛ばす。基本文字以外の文字がある場合は、最後に区切り文字を追加する。...行列の階数は、そのサイズに対する多項式時間で計算可能であるため、通信複雑性の上限は多項式時間で計算可能と考えられる。行列のサイズは入力文字列の長さに対して指数的に増加する。終了した場合、その入力文字列は拒否されたと判断される。...これを字句解析と呼ぶ。入力文字列は正規表現による文法で定義された意味のあるシンボルに分割される。なり、構文解析が完了する。この例では、入力文字列が受容され、以下の規則が順に適用されたことが出力される。以上が左端導出である。従来の開始記号である。この規則は構文解析器が入力文字列を受容した際に適用される。ここでは上述の例の文法を強化して使用する。...コンパイラやインタプリタは、入力である、あるプログラミング言語で書かれたソースコードの文字列を、構文解析器を通して内部的な表現に変換する。その際にバッカス・ナウア記法の生成規則と入力文字列のマッチングを行う。このときの構文解析としてトップダウン戦略を用いる手法としてLL法などがある。ほとんどがではない場合は、を使用してもそのまま読むことはできず、サイズ効率も非常に悪い。そのまま読める方式ではないが、どのようなデータに対してでもサイズ効率は一定である。...言語によっては、語彙素生成規則がもっと複雑で、複数個の文字を戻すようなバックトラッキングが必要になることもある。トークン化とは、境界を設定し、場合によっては入力文字列の一部を分類する過程である。結果として得られたトークンの並びは、構文解析などの入力とされる。ほとんどがではない場合は、を使用してもそのまま読むことはできず、サイズ効率も非常に悪い。...まず、全ての素数を表す数字列の集合を言語として定義する。入力文字列がその形式言語に含まれるかどうかという質問は、この場合、その数が素数であるかを問うのと同じことである。なる全ての文字列の集合などが形式言語の例である。含まれていたか否かがわかる。Mの言語は以下の正規表現で記述される正規言語である。...左端導出と右端導出のリストが異なるのは重要なポイントである。構文解析では、文法規則毎にそれを入力文字列に適用する小さなプログラムが存在する。したがって、構文解析が左端導出を行うのか右端導出を行うのかによってそれらのプログラムを適用する順番が変わってくるのである。失敗した場合には成功し、成功した場合には失敗する。こちらも入力文字列は消費しない。任意の複雑な表現が当てはまるので、これらは強力な先読み機能となる。その入力文字列を受容したと言える。なくば、その入力文字列は拒否されたと見なされる。...もしそれができなかったのなら、入力文字列はこの文法に適合しないエラーということが分かる。できたなら、この文法に適合したと判断でき,それに直接あるいは再帰的に入れ子で含まれる全部の要素に該当する入力トークン列が確定する。その並び全体にマッチするものとして記録する。この一連の処理が完了すると、入力文字列全体を含む記号の並びが開始記号から生成されるかどうかが判定できる。このアルゴリズムを、文が言語に含まれるかどうかを決定するだけでなく、構文木を構築するよう拡張するには、構文木のノードをブーリアンの代わりに配列の要素として格納すればよい。...他に出力キューに追加する前の演算子を保持するスタックが必要である。入力文字列からシンボルを順次読み出し、その後もシンボル単位で処理を行う。操車場アルゴリズムを後に一般化したのがである。...ある言語が決定不可能であることを停止問題からの還元で示す例を以下で示す。この言語は決定不可能であることが知られている。...例えば、文書リポジトリや遺伝子データベースなどに応用できる。多数の小さな部分に分割し、それらに対してハッシュ関数を適用して上述してきたような技法で同じ部分や類似の部分を探す。ラビン-カープ文字列検索アルゴリズムは比較的高速な文字列検索アルゴリズムで、平均でOの時間で動作する。