情報科学 › アルゴリズムとデータ構造 › 基本的なデータ構造

括弧列の判定

定理 6.2(「基本的なデータ構造」§6) ・ ✓公理まで証明済み

記号の集合を Σ={ ( , ) , [ , ] }\Sigma = \{\,\texttt{(}\,,\,\texttt{)}\,,\,\texttt{[}\,,\,\texttt{]}\,\} とし、対応の取れた括弧列の集合 B⊆Σ∗B \subseteq \Sigma^{*} を、次の 3 つの規則で生成される最小の集合として定める。

ε∈B,w∈B  ⟹  (w)∈B かつ [w]∈B,u,v∈B  ⟹  uv∈B.\varepsilon \in B, \qquad w \in B \implies \texttt{(} w \texttt{)} \in B \ \text{かつ}\ \texttt{[} w \texttt{]} \in B, \qquad u, v \in B \implies uv \in B.

入力 w∈Σ∗w \in \Sigma^{*} に対する次のアルゴリズム A\mathcal{A} を考える。空のスタック SS から始め、ww を左から 1 文字ずつ読む。

  • 読んだ文字が開き括弧なら、それを SS に push\mathrm{push} する。
  • 読んだ文字が閉じ括弧なら、SS が空であれば直ちに拒否し、そうでなければ top\mathrm{top} を見て pop\mathrm{pop} し、取り出した文字がその閉じ括弧と同種の開き括弧でなければ拒否する。

全文字を読み終えた時点で SS が空なら受理、空でなければ拒否する。このとき、A\mathcal{A} が ww を受理することと w∈Bw \in B であることは同値である。また A\mathcal{A} の実行時間は O(∣w∣)O(|w|) であり、ww を受理する場合は Θ(∣w∣)\Theta(|w|) である(途中で拒否すれば早く終わる)。

本文で読む(証明と前後の説明)→

閉包の状態

✓ 公理まで証明済み

証明が使う定理を 前提 としてたどると、Rikai の中の証明だけで定義・公理(物理では基本仮定)までつながっています(前提の定理類 2 件、定義なども含めて 5 件)。

印の意味: ✓公理まで証明済み ・ △証明あり(閉包未完)・ ※主張のみ。テーマごとの集計は 閉包の状況。

前提をたどる 証明が使う定理・定義(直接 1 件)

▸ を開くと、その項目の証明が使う前提が出ます。深い先は各項目のページでたどれます。

これを使っている定理

証明で明示的に参照している定理は、まだありません。