Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Подстановки и примеры утверждений.
Логические переменные служат для обозначения неопределенных объектов. Областью действия переменной является одно утверждение (факт или правило). Подстановкой называется конечное (возможно, пустое) множество пар вида Xi = ti, где Xi¾переменная, а ti¾терм, не содержащий переменную Xi. Результат применения подстановки q к утверждению A обозначается Aq и получается путем замены каждого вхождения в A каждой переменной Xi на соответствующий терм ti. Утверждение B является примером утверждения A, если найдется такая подстановка q, что B=Aq. Например, факт summa(1,2,3), которое означает, что 1+2=3, является примером утверждения summa(X,Y,3) при применении подстановки q={X=1,Y=2}. Утверждение С называется общим примером утверждений A B, если найдутся такие подстановки q1 и q2, что C=Aq1 и C=Bq2, т.е. C является примером A и B одновременно. Например, факт summa(1,2,3) является общим примером утверждений summa(X,2,Z) и summa(1,Y,Z) при применении подстановок q1={X=1,Z=3} и q2={Y=2,Z=3}.
3.2.5. Пример Пролог¾программы.
Программа «Родственники» является примером простой Пролог¾программы. На рис 2. показано трехуровневое генеалогическое дерево.
Родственные отношения можно записать с помощью фактов, соответствующие отношению parent: parent(‘Памелла’,’Джон’). parent(‘Памелла’,’Элизабет’). parent(‘Том’,’Джон’). parent(‘Том’,’Элизабет’). parent(‘Джон’,’Анна’). parent(‘Джон’,’Пат’). parent(‘Элизабет’,’Эд’). parent(‘Пат’,’Джим’).
Расширим эту программу фактами, определяемыми схемой отношения person.
person(‘Памелла’,’ж’,72). person(‘Том’,’м’,78). person(‘Джон’,’м’,42). person(‘Элизабет’,’ж’,35). person(‘Эд’,’м’,14). person(‘Анна’,’ж’,20). person(‘Пат’,’ж’,25). person(‘Джим’,’м’,3).
Теперь мы можем задавать Пролог¾программе вопросы, используя оба отношения.
Вопрос 1. Вопрос ”Является ли Пат родителем Джима?” на Прологе можно задать следующим образом:
?-parent(‘Пат’,’Джим’).
Пролог-система будет искать в программе факт, совпадающий с вопросом, и, обнаружив такой факт, система выдаст ответ ‘YES’. В случае, когда соответствующий факт не обнаружен, система выдаст ответ ‘NO’.
Вопрос 2. Вопрос ”Кто отец Элизабет и сколько ему лет?” на Прологе можно задать следующим образом:
?-parent(Х,’ Элизабет’),person(X,’м’, Y).
Пролог-система выдаст ответ: X=’Том’-> Y=78-> YES Если возраст не интересует пользователя, то в вопросе используется анонимные переменные, обозначаемые знаками подчеркивания ‘_’.
Вопрос 3. Вопрос ”Кто отец Элизабет?” на Прологе можно задать следующим образом:
?-parent(Х,’ Элизабет’),person(X,’м’, _).
Пролог-система выдаст ответ: X=’Том’-> YES Приведенные примеры вопросов относятся к программе, состоящей из одних фактов. Для того чтобы сократить и упростить вопросы в Пролог—программах задаются правила. Вопрос 3 можно упростить, если задать следующее правило: “X является отцом Y, если X является родителем Y, и X – мужчина.” На языке Пролог это правило записывается так: father(X,Y):-parent(X,Y),person(X,’м’,_). А вопрос 3 записывается следующим образом: ?-father(X,’Jim’).
Семантика языка программирования Пролог.
|
|||||
Последнее изменение этой страницы: 2018-04-12; просмотров: 379. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |