#prolog
#пролог
Вопрос:
У меня есть простой вопрос. Я знаю, что этот пролог должен уметь извлекать уроки из основных фактов, которые я ему даю. В следующем сценарии:
2 человека могут быть друзьями, если у них есть общий язык программирования. Джон знает Cpp. Джон дружит с Майком.
Верен ли вопрос «знает ли Майк cpp»?
Это то, что я ожидал бы, но я не могу заставить его работать со следующим кодом
lang(cpp). lang(python). dev(john). dev(mike). dev(leo). knows(john,cpp). friend(john, mike). website(app). website(stackoverflow). notWorking(app). notWorking(stackoverflow). friend(X,Y):-findall(Z,knows(X,Z),L1), findall(Z2,knows(Y,Z2),L2),common(L1,L2). common([H1|T1],[H2|T2]):- H1 == H2; H1 == T2 ; T1 == H2 ; T1 == T2.
Я всего лишь новичок, я даже не знаю, как сформулировать поиск здесь для такого рода вопросов. Заранее спасибо.
Комментарии:
1. Пролог не строит догадок. Это неправда, что каждый друг должен знать cpp. Нейронная сеть или что-то в этом роде может иметь такое значение после получения достаточных статистических данных. Скажите: 66% уверены в этом
knows(mike, cpp)
.