2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Помогите с прологом
Сообщение19.04.2008, 05:32 


11/04/08
5
У меня проблема! есть граф, его я описала. теперь надо: Написать правило для определения, можно ли из одной точки попасть в другую. У меня получается это сделать только для точек, между которыми находится только две линии, соединяющие их. А для трёх и более не получается!

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 
Заслуженный участник


18/03/07
1068
Вот Вам готовое решение :?

Код:
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 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group