PrologがAIプログラミングに適しているのはなぜですか?[閉まっている]


25

AIプログラミングに使用されるプログラミング言語を研究しています。私の大学ではLISPがAIプログラミング言語として教えられていることを知っていますが、Prologはめったに教えられません。私はPrologが好きですが、AIプログラマーではないので、PrologがLISP / Schemeよりも優れている理由を自分で判断する資格がないと思います。プログラマーがこのトピックについて何か意見を持っているのではないかと思っていました。

PrologがAIプログラミングにもっと役立つだろうとどのように主張できますか?

私はそれを少し研究していますが、私が何度も見てきた基本的な議論は、思考は論理で提示され、Prologは論理プログラミング言語であるため、Prologは意思決定マシンを簡単に構築できる、またはその効果があるということです。

AIのPrologについて言えることは他にありますか?


1
LispでPrologコンパイラ/インタプリタを書くのは、たいした作業ではありません。Paul GrahamはOn Lispに例を示しています。
ラリーコールマン

私のクラスメートの一人がこれも教えてくれました。LISPのシンボリック操作によってPrologを再作成できるのは本当に興味深いことがわかりました。よろしくお願いします!
2rs2ts

4
@Larry Coleman:素朴なPrologコンパイラ/インタープリターをLispで書くのはたいした作業ではありません。効率的で完全に機能するものを作成することは、どの言語でも簡単です。
ちょうど私の正しい意見

回答:


19

序文から人工知能のためのPrologプログラミングまで:

Prologは、パターンマッチング、ツリーベースのデータ構造化、自動バックトラッキングなど、基本的なメカニズムの小さなセットを中心としたプログラミング言語です。この小さなセットは、驚くほど強力で柔軟なプログラミングフレームワークを構成します。Prologは、オブジェクト(特に、構造化オブジェクト)およびそれらの関係を含む問題に特に適しています。たとえば、Prologでは、青い球体が緑の球体の背後にあるなど、オブジェクト間の空間的な関係を表現するのは簡単です。より一般的なルールを述べるのも簡単です:オブジェクトXがオブジェクトYよりオブザーバーに近く、YがZより近い場合、XはZより近くなければなりません。一般規則を尊重します。このような機能により、Prologは一般に人工知能(AI)および非数値プログラミング用の強力な言語になります。シンボリック計算のよく知られた例があり、他の標準言語での実装には数十ページの消化できないコードが必要でした。同じアルゴリズムがPrologに実装されたとき、結果は1ページに簡単にフィットする非常に明確なプログラムでした。

基本的には、さまざまな関係や目標を簡潔に、(大部分が)読みやすく、(半)自然な方法で表現するのに最適な言語です。たとえば、Lispの同等のコードは、リレーションシップの管理と推論の内臓と配管に多くの時間を費やしているため、意図がより冗長で難読化される傾向があります。


ここで私のマイナーな追加は、Prologがfactを宣言、それらの事実に基づいてルールを宣言することです。あなたのルールは、その後にプロローグで使用することができた理由や論理的で他のクエリに答える演繹答えを。たとえば、ファクトがAがBの祖先であり、別のファクトがBがCの祖先であると述べている場合、Prologは、チェックするアルゴリズムを記述することなく、AがCの祖先でなければならないと推定できます。
code_dredd

25

私は学部生のAIコースを紹介し、Prologを使用してエキスパートシステムを実装しました。

エキスパートシステムは、多数のルールと変数に依存する解決策を持つ非常に特定の問題を解決するために使用されるソフトウェアです。

たとえば、外出時に傘を持って行くべきかどうかを伝えるエキスパートシステムを想像できます。一連のデータ(曇りか、前日雨か、どの季節かなど)を入力すると、エキスパートシステムはルールを使用して回答を提供します(曇りで雨が降った場合)前日、その後、傘を取る必要があります)。

Prologの性質により、ルールやファクト(Prologでは、すべてがルールまたはファクト)を実装し、これらのルールやファクトが数千ある場合でも、「データベースにクエリを実行」(質問に対する回答を取得)することが非常に簡単です。

このトピックに興味がある場合は、Prologインタープリターをインストールし、非常に基本的なエキスパートシステムを実装して、その感覚をつかむことをお勧めします。これが、これらのタスクにこのような強力なツールである理由を理解するのに役立つ場合があります。


私の研究では、Prologによってエキスパートシステムを簡単に実装できることがわかりました。何らかの説明でそれをバックアップしてくれてありがとう:)
2rs2ts

16

違いは、たとえばCでプログラムを作成するのではなく、データベースクエリにSQLを使用するようなものです。SQLでは、必要なことを言いますが、導出に使用するアルゴリズムを(直接)指定する必要はありません。

Prologプログラムはデータベースと呼ばれることもありますが、実際には一連の述語論理ステートメントです。評価メカニズムはクエリを取得し、述語論理ステートメントに基づいて置換を実行し、正しいソリューションを見つけるための検索を実行します。必要なすべての検索アルゴリズム(SQLクエリよりもはるかに複雑)は、Prologコンパイラに組み込まれています。

SQLクエリは、Cで同じロジックを単純に実装する場合、ループとif / else条件以外のものを必要としません。

Cで実装されたPrologクエリには、(少なくとも)ユニオン検索手法を使用したバックトラッキング検索が必要です。そして、これもまた素朴な解決策です。

特定の種類のAIプログラミングには、Prologが行う多くの種類の検索が含まれます。当然のことながら、本来-AIプログラミングはLispまたは他の言語で行われていましたが、Prologはその仕事を行うために特別に作成されました。

述語ロジックは、AIスタイルのAI問題のスタイルを定義するための自然なアプローチであり、Prologでは、その定義があれば、すべての厄介な検索アルゴリズムを実装することなく、直接実行できます。


3

私は大学で2つのPrologモジュールを取り、言語での開発を非常に楽しんでいました。

特にエキスパートシステムに適しているので、医学的診断診断を作成しました。

私に説明された方法は、特定の国ではLispが、他の国ではPrologが使用される傾向があるということでした。

どちらが最良かという点では、理論計算機科学モジュールでラムダ計算を行ったときにLispについて簡単に説明しただけなので、Prologに偏っています。

ルールとファクトを処理して回答を導き出すアプリケーションを開発している場合、Prologは非常に優れており、当然バックトラッキングをサポートします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.