Поиск с ограниченной глубиной в prolog (метаинтерпретатор vanilla)

Мне нужно модифицировать метаинтерпретатор vanilla, чтобы сделать поиск с ограниченной глубиной. Я использую следующий код для тестирования моего решения:

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).

И цель состоит в том, чтобы что-то вроде:

solve(value(w9,X), 3).     /*depth =3, it should return false*/
solve(value(w9,X), 20).    /*depth=20 is enought for returning X=1*/

Кстати, мой код

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).

Но он не работает. Не могли бы вы мне помочь? Спасибо большое заранее

6
задан Caroline 23 October 2011 в 19:49
поделиться