Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Амир_ОИИ.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
192 Кб
Скачать
☆
  1. Описать базу знаний о родственных отношениях

parent("Alexandr","Olya"). parent("Masha","Olya"). parent("Alexandr","Alina"). parent("Masha","Alina"). parent("Alexandr","Leha"). parent("Masha","Leha"). parent("Leha","Gleb"). parent("Dasha","Gleb"). parent("Alina","Maks"). parent("Leha","Maks"). man("Alexandr"). man("Leha"). man("Pavel"). man("Dima"). woman("Olya"). woman("Alina"). woman("Masha"). married("Masha","Pavel"). married("Alina","Dima"). check_married(X, Y):-married(X, Y); married(Y, X). father(X,Y):-parent(X,Y),man(X). mother(X,Y):-parent(X,Y),woman(X). son(X,Y):-parent(Y,X),man(X). daughter(X,Y):-parent(Y,X),woman(X). wife(X,Y):-check_married(X,Y), woman(X). husband(X,Y):-check_married(X,Y), man(X). brother_in_law(X, Y):-wife(Y, Wife),brother(X, Wife). uncle(X, Y):-parent(Parent, Y), brother(X, Parent).

Билет № 9

  1. Обобщенная структура экспертных систем

Экспертные системы — это сложные программные комплексы, аккумулирующие знания специалистов в конкретных предметных областях и тиражирующие эти знания для консультаций менее квалифицированных пользователей.

база знаний — ядро экспертной системы, совокупность знаний предметной области, записанная на машинном носителе в форме, понятной эксперту и пользователю; интеллектуальный реДактор базы знаний — программа, представляющая инженеру-когнитологу и программисту возможность создавать базу знаний в диалоговом режиме. Она включает в себя системы вложенных меню, шаблонов языка представления знаний, подсказок (help-режим) и других сервисных средств, облегчающих работу с базой знаний; интерфейс пользователя — комплекс программ, реализующих диалог пользователя с экспертной системой на стадии как ввода информации, так и получения результатов;

решатель (синонимы: Дедуктивная машина, блок логического вывода) — программа, моделирующая ход рассуждений эксперта на основании знаний, имеющихся в базе знаний;

подсистема объяснений — программа, позволяющая пользователю получать ответы на вопросы: «Как была получена та или иная рекомендация?» и «Почему система приняла такое решение?». Ответ на вопрос «Как?» — это трассировка всего процесса получения решения с указанием исполняющих фрагментов базы знаний, т. е. всех шагов цепи умозаключений. Ответ на вопрос «Почему?» — ссылка на умозаключение, непосредственно предшествовавшее полученному решению, т. е. отход на один шаг назад.

  1. Хвостовая рекурсия

Есть один вариант рекурсии, который использует практически столько же оперативной памяти, сколько итерация в императивных языках программирования. Это так называемая хвостовая или правая рекурсия. Для ее осуществления рекурсивный вызов определяемого предиката должен быть последней подцелью в теле рекурсивного правила и к моменту рекурсивного вызова не должно остаться точек возврата (непроверенных альтернатив). То есть у подцелей, расположенных левее рекурсивного вызова определяемого предиката, не должно оставаться каких-то непроверенных вариантов и у процедуры не должно быть предложений, расположенных ниже рекурсивного правила. Турбо Пролог, на который мы ориентируемся в нашем курсе, распознает хвостовую рекурсию и устраняет связанные с ней дополнительные расходы. Этот процесс называется оптимизацией хвостовой рекурсии или оптимизацией последнего вызова.

Пример. Попробуем реализовать вычисление факториала с использованием хвостовой рекурсии. Для этого понадобится добавить два дополнительных параметра, которые будут использоваться нами для хранения промежуточных результатов. Третий параметр нужен для хранения текущего натурального числа, для которого вычисляется факториал, четвертый параметр - для факториала числа, хранящегося в третьем параметре.

Вся процедура будет выглядеть следующим образом:

fact2(N,F,N,F):-!. /* останавливаем рекурсию, когда третий

аргумент равен первому*/

fact2(N,F,N1,F1):-

N2=N1+1, /* N2 - следующее натуральное число

после числа N1 */

F2=F1*N2, /* F2 - факториал N2 */

fact2(N,F,N2,F2).

/* рекурсивный вызов с новым натуральным

числом N2 и соответствующим ему

посчитанным факториалом F2 */

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]