2013-05-12 2 views
1

В настоящее время я изучаю логику предикатов в Prolog. У меня возникли проблемы с ответом на вопрос по этой теме и хотелось бы знать шаги, предпринимаемые для решения такого вопроса с использованием предикатов Пролога. У меня есть сценарий, который должен быть представлен в предикатах Пролога, используя только два разных имени предиката.Предикаты пролога

  1. А и В браке
  2. Б любит C
  3. С и D в браке
  4. D любит Е
  5. Р любит Б
  6. Е любит Б
  7. Е и G являются женат
  8. A нравится G
+0

http://cs.stackexchange.com/, возможно, лучше было бы задать такой вопрос, возможно. –

+3

@CiaranG Нет, это подходящее место для таких вопросов, как программирование Пролога. –

ответ

2

Просто напишите, что он говорит.

are_married(a,b). 

likes(b,c). 

И так далее. До сих пор мы использовали два имени предикатов.

В прологе атомы обозначаются идентификаторами, начиная с буквы нижнего регистра. Идентификаторы, начинающиеся с буквы верхнего регистра или символа подчеркивания _, обозначают логические переменные.

+0

Могут ли все они быть помещены в два предиката? Например, are_married ((a, b), (c, d), (e, g)). – DrKhan

+1

@ DrKhan no, вот как работает Prolog. Разумеется, вы можете определить другой предикат: «married_couples» ([(a, b), (c, d), (e, f)]). Но потом, чтобы получить одну супружескую пару, вам придется потратить определенную работу. –

+0

Правильно ли это для следующего, я произвел два предиката:
1. is_married ([a, b], [c, d], [e, g]). 2. нравится ([b, c], [d, e], [f, b], [e, b], [a, g]). – DrKhan