限られた深さで検索するために、バニラメタインタープリタを変更する必要があります。私は私のsollutionをテストするための次のコードを使用しています:深さが制限されたプロローグ検索(バニラメタインタープリタ)
value(wire1,1).
connected(wire2, wire1).
connected(wire3, wire2).
connected(wire4, wire3).
connected(wire5, wire4).
connected(wire6, wire5).
connected(wire7, wire6).
connected(wire8, wire7).
connected(wire9, wire8).
value(W,X):-connected(W,V), value(V,X).
をtargetがそのようなものです:私のコードは
solve(true,_):-!.
solve((A,B),D) :-!, solve(A,D), solve(B,D).
solve(A,D) :- clause(A, B),solve(B,D2),D=D2+1,D>0).
ですちなみに
solve(value(w9,X), 3). /*depth =3, it should return false*/
solve(value(w9,X), 20). /*depth=20 is enought for returning X=1*/
しかし、それはドン仕事の性質。手伝って頂けますか?事前に多くのお礼ありがとうございます
あなたは深さテストが最初に来るように、体内の目標並べ替えることができます: '(A、D)を解く: - D> 1、句を( A、B)、D1はD - 1、solve(B、D1)。 – repeat