프롤로그. 그래프의 전 이적 폐쇄 생성

Nov 30 2020

저는 Prolog를 처음 접했습니다. 그런 그래프가 있습니다.

edge(a,e).
edge(e,f).
edge(f,d).
edge(d,a).

전 이적 폐쇄를 다음과 같이 정의합니다.

p(X,Y) :- edge(X,Y).
tran(X,Z) :- p(X,Y), p(Y,Z).

그래프의 전 이적 폐쇄를 구성해야합니다. 진행 방법을 알려주십시오.

답변

2 WillemVanOnsem Nov 30 2020 at 00:58

문제 는 임의의 숫자가 아닌 가장자리 trans/2만 걸을 것이라는 것입니다 .

tran(X, Z)hold if edge(X, Z)또는 edge(X, Y)then 을 보유 하는 술어 를 정의 할 수 있습니다 tran(Y, Z). 따라서 우리는 후자에서 하나의 가장자리를 따르고 다음에서 재귀합니다 tran/2.

tran(X, Z) :-
    edge(X, Z).
tran(X, Z) :-
    edge(X, Y),
    tran(Y, Z).