2
Answer Set Programming (ASP)에서 예제 문제가 있습니다. Prolog에서 동등한 코드를 만들려고 할 때 나는 계속 not
을 막았습니다.Prolog - 'not'to Prolog to negate
이것은 ASP 코드는 다음과 같습니다
road(berlin,potsdam).
road(potsdam,werder).
road(werder,brandenburg).
road(X,Y) :- road(Y,X).
blocked(werder,brandenburg).
route(X,Y) :- road(X,Y), not blocked(X,Y).
route(X,Y) :- route(X,Z), route(Z,Y).
drive(X) :- route(berlin,X).
#show drive/1
대답은 : drive(potsdam)
, drive(werder)
, drive(berlin)
.
프롤로그에서 처음에는 not
을 \+
으로 변경하는 것처럼 간단 할 것이라고 생각했습니다. drive(X).
을 쿼리하면 회귀 적으로 X = potsdam
답이 생성됩니다. 나는 Prolog와 ASP가 다르게 작동한다는 것을 알고 있지만, 나는 그것을 이해할 수 없다.
road(X,X).
와 함께
road(X,Y) :- road(Y,X).
: 당신은 술어를 대체 할 수
is road(X,Y)?
is road(Y,X)?
is road(X,Y)?
is road(Y,X)?
.....
:
당신이 도로 (베르, 도시)을 추가합니다. 그것이 결과로 도시로 제공하지 않습니다. – coder
귀하의 권리, 업데이 트에 빨리했다. 이전 버전은 여전히 작동하지만 중복 답변을 제공합니다. – Limmen