2012-12-03 8 views

答えて

3

これはいかがですか?これはX+Y=Zでのみ有効です。 、短いのためのCLP(FD)と呼ばれる、

equation(5,X,7). 
X = 2 . 
?- equation(2,5,X). 
X = 7. 
?- equation(X,5,7). 
X = 2 
11

すべての深刻なPrologシステムは、有限領域上の制約論理プログラミングを提供すると、あなたは簡単に多くのそのような方程式を解くことができます。

equation(X,Y,Z):- var(X),X is Z-Y. 
equation(X,Y,Z):- var(Y),Y is Z-X. 
equation(X,Y,Z):- var(Z),Z is X+Y. 

あなたは尋ねることができます。たとえば、SICStus Prolog、SWI、およびYapの場合:

?- use_module(library(clpfd)). 
true. 

?- 5+X #= 7. 
X = 2. 

明らかに、答えは-2ではなく2です。また、ライブラリ(clpq)付きのrationalalsのような他のドメイン上の制約ロジックプログラミングもチェックしてください。

+0

非線形方程式(時には)で動作するアプローチについては、[最適化](http://stackoverflow.com/questions/37142066/optimisation-in-swi-prolog)を参照してください。 – mat

+0

[Prologの式簡略化]の実装があります(http://cmu-ai-mirror.bvulpes.com/afs/cs/project/ai-repository/ai/lang/prolog/code/math/algebra/ 0.html)。また、私はPrologの[Knuth-Bendix完了アルゴリズム](https://github.com/nick8325/completion)のより最近の実装を発見しました。 –

4

はい、Prologは代数を行うことができます。

PrologCAS(コンピュータ代数システム)のGoogleでは、多くの結果が得られます。

Using Prolog as a CAS

あなたは+ REPL = Syntactic unification + backward-chainingプロローグ、

が、それは問題/方程式を解くの心臓部である統一であることを認識し、あなたが解決するために使用される等式推論に実行することを理解していれば等号(=)を含む問題。この同じロジックはautomated theorem proversproof assistantsでも使用されます。

hereを見ると、この自動定理証明者で統一と後方連鎖を実装するprolog.mlが見つかります。

また、term rewritingをチェックして、用語の書き換えをGoogleで検索して、用語を使って方程式を解く科学を学ぶ必要があります。

+0

非常に良いポインタ!より多くの情報を提供する前に、それらの概念を簡単に要約することができれば、あなたの答えはさらに有用になります。 – crackjack

関連する問題