多くのプログラミング言語は手続き的であると いわれます。これは最初にどの手続きを実行し、次にどの手続きを実行するかといった 計算の手順(how)がプログラム中に記述されているということです。 これに対して、論理プログラミングはプログラムが 宣言的である特徴を持っています。これは、プログラム中には 知識の内容(what)のみが記述されており、それらを使ってどのように計算 を進めるかといった実行手順は一切記述されていないということです。 このように論理プログラミングでは、 プログラムの記述と制御が切り離されているため、 上で述べた「アルゴリズム=論理+制御《の式における問題記述(論理)にフィットする訳です(注†)。 宣言的プログラミング言語は手続き的プログラミング言語と比較すると、 プログラムの一部だけを取り出しても意味がある、あるいは プログラムの一部を削除しても全体として無意味になることはない、 といったメリットがあります。 例えば、Cなどの手続き的言語では、プログラムの一部を取り出しても その部分だけでは無意味であり、また全体のプログラムから一行削除するだけで、 全体として動作しなくなるといった問題があるわけです。
人間の頭の中に蓄えられた情報は宣言的です。即ち、ある断片的情報を 取り出してもそれ自体に意味があり、また、一部の情報を忘れてしまっても 頭の中が機能しなくなるということはありません。 論理プログラミングが人工知能の記述言語としても有効であると考えられるのは こうした理由があります。
(注†)論理プログラミング言語Prolog には効率化のために実行制御機能が導入されている。
プログラム ←→ 知識 プログラムの意味 ←→ 推論結果プログラムが確定的な知識しか含まない場合は、そこから得られる推論結果は 容易に得ることができますが、プログラムが上確定・上完全な知識を含む場合には、 そこからどのような情報が導かれるかを決めることは難しい問題です。 これは人間が断片的な情報しか持ち合わせていない場合に、いかに経験的規則、 常識的推論を働かせて、判断・行動するかという問題に対応しています。 このようにプログラムが上確定・上完全な知識を含む場合に、 人工知能の常識推論を使って機械的に結論を導く方法を調べるのが 本研究のテーマです。
吊前 | 所属 |
野茂 | ドジャース |
イチロー | マリナーズ |
松井 | ヤンキース |
関係データベースの例
さて、データベースはそこに蓄積されたデータを検索・利用することは出来ますが、 データを使って新しい事実を導き出すことは出来ません。 そこで、関係データベースに論理プログラミングの演繹推論機能を付加したものを 演繹データベースといいます。 演繹データベースは論理プログラミングを使って記述されますが、 その使用形態において一般に膨大なデータをいかに効率よく処理するかが 焦点になります。また、上確定なデータの扱い、データベースの更新問題なども 上確定論理プログラミングや人工知能における知識更新の問題と密接な関係があります。