Prolog. Construir um fechamento transitivo de um gráfico
Nov 30 2020
Sou muito novo no Prolog. Eu tenho esse gráfico:
edge(a,e).
edge(e,f).
edge(f,d).
edge(d,a).
Eu defino um fechamento transitivo como:
p(X,Y) :- edge(X,Y).
tran(X,Z) :- p(X,Y), p(Y,Z).
Eu preciso construir um fechamento transitivo de um gráfico. Por favor, deixe-me saber como proceder com isso.
Respostas
2 WillemVanOnsem Nov 30 2020 at 00:58
O problema trans/2
é que ele percorrerá apenas duas bordas, não um número arbitrário.
Podemos definir um predicado tran(X, Z)
que é válido se for edge(X, Z)
válido, ou edge(X, Y)
e então tran(Y, Z)
. Assim, neste último seguimos uma borda e, em seguida, recorremos a tran/2
:
tran(X, Z) :-
edge(X, Z).
tran(X, Z) :-
edge(X, Y),
tran(Y, Z).
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
Christopher Nolan uma vez se arrependeu de ter lido o 'roteiro de Pulp Fiction' de Quentin Tarantino