2016-05-10 10 views
2

制約論理プログラミングのいくつかの改訂を行い、その結果を正しく述語化するために次のクエリをどのように読むことができるかを知りたがっています。制約論理プログラミングのクエリの結果を決定する方法

基本的に、次のクエリによって提供される回答が正しいかどうかを尋ねる質問があります。

だから、これは私の質問の答えが正しいかどうかを判断するために、クエリを読むための最良の方法は何かということです質問

Consider the following queries and answers. Some answers coincide 
with what SWI-Prolog would infer whereas others are erroneous. 
Indicate which answers are genuine and which ones are fake (no 
explanation is required). 

(i) ?- [X, Y, Z] ins 0 .. 4, X #= Y + 1. 
X in 1..4, Y in 0..3, Z in 0..4. 

(ii) ?- [X, Y, Z] ins 0 .. 4, X #= Y + Z. 
X in 0..4, Y in 0..2, Z in 0..2. 

(iii) ?- [X, Y, Z] ins 0 .. 4, X #= Z - Y. 
X in 0..4, Y in 0..4, Z in 0..4. 

(iv) ?- [X, Y, Z] ins 0 .. 4, X #= Y * Y, Z #= -Y. 
Y = 0, Z = 0. 

です。

+2

これは試験問題ですか?私はFいつでも... – false

+0

@Falseうん、これらは、私は、クエリに基づいて回答を決定する方法をワークアウトにしようとしています、過去の論文では試験の問題であっなるだろう。 – user6248190

+1

これにはコンピュータがありますが、どこにでもあるわけではありません(http://dilbert.com/strip/1996-02-20)。 – false

答えて

4

いくつかのステップ:

  1. 構文的に有効な Prologの目標に答える表示されていますか?そうでない場合、実際のトップレベルは構文上有効な残余ゴールだけを出力するので、答えは間違いなく偽です。
  2. 移動先:の残存ゴールによって除外されたの元のクエリの解はありますか? 「はい」(= 不完全)の場合、実際のトップレベルはという意味的に同等の元のクエリに対してという残余ゴールだけを出力するため、答えは偽です。逆の目標は、最初のクエリでは解決できない解決策を認めていますか?はい(= 一般的に)の場合、答えは偽です。エクササイズ:なぜですか?あなたのケースでは

、示さ答え構文的に有効な組み合わせであるので、それは間違いなく正しい解の候補です。しかし、答えは、元のクエリが解決しない解答(どの練習ですか?)を受け入れます。したがって、答えはではなく、 はです。

+0

私は自分の質問を更新しました。チェックアウトして、あなたの考えを知っているかどうか、質問が偽であるかどうかを判断する最良の解決策があると思いますか? – user6248190

+0

あなたの能力、これらのすべての仕事について私が説明した3点の*それぞれ*。 – mat

+0

ポイント2と3が何を意味するのか分かりませんが、コードは構文的に有効で、質問に提供される情報はすべて – user6248190

関連する問題