2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Помогите с прологом
Сообщение19.04.2008, 05:32 
У меня проблема! есть граф, его я описала. теперь надо: Написать правило для определения, можно ли из одной точки попасть в другую. У меня получается это сделать только для точек, между которыми находится только две линии, соединяющие их. А для трёх и более не получается!

otr(1,2).
otr(2,1).
otr(2,3).
otr(3,2).
otr(3,4).
otr(4,3).
otr(4,1).
otr(1,4).

otr(5,6).
otr(6,5).
otr(6,7).
otr(7,6).
otr(7,5).
otr(5,7).

otr(8,9).
otr(9,8).
otr(9,10).
otr(10,9).
otr(10,11).
otr(11,10).


popas(X,Y):-otr(X,Y).
popas1(X,Y):-popas(X,C),otr(C,Y),not X=Y.

 
 
 
 
Сообщение22.04.2008, 18:40 
Вот Вам готовое решение :?

Код:
popas(X,Y):- popas(X,Y,[X]).

popas(X,X,_).
popas(X,Y,L):-
   otr(X,C),
   not member(C,L),
   popas(C,Y,[C|L]).
   
member(X,[X|_]).
member(X,[_|Z]):- member(X,Z).

Возможно, в Вашей реализации Пролога уже есть встроенный предикат member/2 или подобный ему.

 
 
 [ Сообщений: 2 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group