Next: Up: Previous:

基本的な解法

tex2html_wrap_inline1082 の定義からわかるように, 最終的な解析木を求める自然な方法は, 最初に各 tex2html_wrap_inline1206 だけを求めておき, その後は, 2.を用いてより大きな範 囲をカバーする tex2html_wrap_inline1082 (すなわち, j-iがより大きな値を持つもの)を, ボトムアップに求めていくことである. これがCKYアルゴリズムである. ある i, j (j - i > 1)に対して tex2html_wrap_inline1082 を求めるには, i < k < jなる各 kに対して, tex2html_wrap_inline1112 に含まれる記号と tex2html_wrap_inline1114 に含まれる記号全ての組 合せ tex2html_wrap_inline1276 を考え, tex2html_wrap_inline1202 という規 則があるかどうかを検査し, あればそのようなsが, tex2html_wrap_inline1082 の要素となる. つまり, tex2html_wrap_inline1230tex2html_wrap_inline1220tex2html_wrap_inline1224 に分割し, 前者がs'から導出され, 後者がs''から導出され, かつ tex2html_wrap_inline1202 という規則があれば, sから全体 tex2html_wrap_inline1230 が導出される, ということである.

疑似コードは図5.2のようになる.

figure73

図5.2で, tex2html_wrap_inline1092 という集合を, 以下のように求めている.

displaymath1250

ここでの具体的な処理内容は以下の通りである. 各 tex2html_wrap_inline1324 の組(s',s'')に対し, 文法表を引くことによって, tex2html_wrap_inline1202 なるsを全て求める. 文法表の実際の表現は2次元の配列で, その配 列をRとして, R[s', s'']が, tex2html_wrap_inline1202 なるsの集合を リストとして格納してある, というものである. また, 集合内の最後の条件:

displaymath1251

は, tex2html_wrap_inline1340 間に重複なく要素を入れるために入れてある. この結果, 7 行目で tex2html_wrap_inline1342 を計算する時には, 重複を検査す る必要がなくなる.

上の疑似コードでは, 全ての tex2html_wrap_inline1092 の組合せをどの順番で求めるかにつ いては何ら明記していなかったが, 上のアルゴリズムを見ればわかるように,

tex2html_wrap_inline1092 を求めるためには, tex2html_wrap_inline1112 および tex2html_wrap_inline1114 の計算が終了して いなければならない--(※)
というのが, 満たされるべき依存であり, それ以外の制約はない. たとえば逐 次アルゴリズムでは, j - iの小さなものから順に求めていけば, 自然に上 の制約が満たされる.





Mitsubishi Research Institute,Inc.
Thu Feb 27 10:02:38 JST 1997