論理プログラミング(ろんりぷろぐらみんぐ)
最終更新:2026/4/25
論理プログラミングは、計算を論理的な推論として捉え、事実と規則に基づいて問題を解決するプログラミングパラダイムである。
別名・同義語 宣言型プログラミング推論プログラミング
ポイント
従来の命令型プログラミングとは異なり、何をするかを記述するのではなく、何が真であるかを記述することでプログラムを作成する。
概要
論理プログラミングは、述語論理を基礎とするプログラミングパラダイムであり、プログラムを事実と規則の集合として表現します。このパラダイムでは、問題を解決するために、プログラムにクエリを送信し、プログラムが持つ知識に基づいて推論を行います。
歴史
論理プログラミングの概念は、1950年代にアラン・チューリングによって提案されましたが、1970年代にフランスのマルセイユ大学で開発されたプログラミング言語Prologによって広く知られるようになりました。Prologは、論理プログラミングの代表的な言語であり、人工知能、エキスパートシステム、自然言語処理などの分野で利用されています。
基本概念
論理プログラミングにおける基本的な構成要素は、以下のとおりです。
- 事実 (Facts): 世界に関する真であるとみなされる命題。
- 規則 (Rules): 事実に基づいて新しい事実を推論するための推論規則。
- クエリ (Queries): プログラムに送信され、真であるかどうかを判断される命題。
Prologの例
以下は、Prologでの簡単な例です。
parent(john, mary).
parent(john, peter).
parent(mary, ann).
grandparent(X, Z) :- parent(X, Y), parent(Y, Z).
?- grandparent(john, ann).
この例では、parentは親子関係を表す事実、grandparentは祖父母関係を表す規則です。クエリgrandparent(john, ann).は、ジョンがアンの祖父母であるかどうかを尋ねています。Prologは、parent(john, mary).とparent(mary, ann).という事実と、grandparentの規則に基づいて、ジョンがアンの祖父母であると推論します。
利点と欠点
論理プログラミングの利点としては、以下の点が挙げられます。
- 宣言的なプログラミング: プログラムが何をするかを記述するのではなく、何が真であるかを記述するため、プログラムの理解と保守が容易になります。
- 推論能力: プログラムが持つ知識に基づいて推論を行うため、複雑な問題を解決することができます。
- 知識表現: 知識を事実と規則として表現するため、知識ベースの構築に適しています。
一方、論理プログラミングの欠点としては、以下の点が挙げられます。