Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Родитель(лиз,пат)




Goal

Предок(Y,Z).

Родитель(X,Y),

В пролог-программе представлены только посылки (посылки-факты и посылки-правила) и пока отсутствуют заключения теоремы. Заключения теоремы формулируются путем указания некоторой цели. После ввода вышеприведенной программы в пролог-систему последней можно будет задавать вопросы, касающиеся описанных в программе отношений. Поставленный системе вопрос является для нее целью (внешней целью), для достижения которой система использует информацию раздела clauses. Обычно система предлагает ввести цель с клавиатуры сразу после приглашения, например, в виде? — (либо Цель:). Вопрос о том, является ли Боб родителем Пат, должен быть введен так:

? — родитель(боб,пат).

Найдя соответствующий факт в программе, система ответит

Да

На вопрос

? — родитель(лиз,пат) система ответит

Нет,

поскольку в программе ничего не говорится о том, является ли Лиз родителем Пат.

Цель для программы может быть внутренней. Тогда она указывается в разделе цели (goal), который записывается перед либо после раздела clauses и обязательно завершается точкой. Например, последний вопрос системе запишется в программе так:

Система способна ответить и на более интересные вопросы. Например, “кто является родителем Лиз?”:

? — родитель(X,лиз).

На этот вопрос система не просто ответит «да» или «нет». Она скажет нам, каким должно быть значение X (ранее неизвестное), чтобы вышеприведенное утверждение было истинным, а также укажет количество решений. Поэтому мы получим ответ:

X=том 1 решен.

Вопрос «Кто дети Боба?» можно передать системе в такой форме:

? — родитель(боб,X).

В этом случае будет получен ответ:

X=энн

Х=пат 2 решен.

Программе можно задавать и более сложные вопросы, скажем, «Кто является родителем родителя Джима?». Поскольку в программе нет предиката типа родитель_родителя, вопрос можно составить из двух простых вопросов, используя связку И, например, так:

? — родитель(X,Y), родитель(Y,джим).

Ответ будет: X=боб

Y=пат 1 решен.

Если заключение теоремы не сможет использовать только посылки-факты, то алгоритм направляется к посылкам-правилам (дизъюнктам Хорна) и подменяет текущие цели новыми до тех пор, пока эти новые цели не окажутся простыми посылками-фактами.

Рассмотрим работу алгоритма доказательства теорем в пролог-системе, если, например, нужно попытаться достичь цели:

? — предок(том,пат).

Сначала алгоритм пробует найти такую посылку в теореме, из которой немедленно следует упомянутое заключение. Очевидно, единственными подходящими для этого посылками-правилами являются пр1 и пр2. Эти два правила реализуют отношение предок. Предикатные символы этих правил сопоставимы с предикатным символом заключения теоремы. Вначале алгоритм пробует посылку-правило пр1, стоящее в программе первым:

предок(X,Z): — родитель(X,Z). % пр1

Поскольку заключение - предок(том,пат), то значения переменным должны быть приписаны следующим образом:

X= том, Z= пат

Состоялась унификация {том / X, пат / Y } предикатов предок (X,Z) правила пр1 и предок(том,пат) заключения теоремы. Тогда исходная цель предок(том,пат) заменяется новой целью родитель(том,пат), так как этот предикат является резольвентой исходного заключения теоремы и головы правила пр1 после их унификации.

В посылках теоремы нет правила, предикатный символ которого был бы сопоставим с новой целью родитель(том, пат), поэтому такая цель оказывается неуспешной. Это говорит о том, что резольвенту – пустой дизъюнкт () вывести из исходного множества дизъюнктов нельзя при этом варианте рассуждения. Теперь алгоритм делает возврат к исходной цели, т.е. к заключению теоремы, чтобы попробовать второй вариант вывода цели верхнего уровня предок(том,пат). Таким образом, пробуется правило

предок(X,Z): —




Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 353; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.