- •1. Понятие об искусственном интеллекте и экспертных системах.
- •12. Системы продукций. Прямые и обратные системы продукции. Примеры применения. Разложимые системы продукций. Применение продукций в логических программах.
- •13. Реляционные модели. Основные определения. Реляционная алгебра. Возможности
- •Labdevices( computer, “ibm pc”, 10) labdevices( computer, “vax-11”, 2)
- •14. Метод резолюций. Резольвенты. Полнота метода. Отличие от классических схем вывода. Понятие о дизъюнктах. Демонстрация метода на примере дерева вывода.
- •19. Унификация. Подстановки. Композиция подстановок. Свойства композиции подстановок. Множество рассогласований.
- •20. Стратегии унификации. Пример дерева вывода стратегией “вглубь”.
- •21.Управление процессом решения в логической программе. Бэктрекинг. Отсечение. Повторение.
- •23. Декларативные и процедурные элементы Турбо-Пролога. Примеры применения в логической программе.
- •25.Обработка отношений в Турбо-Прологе. Примеры программирования композиций отношений.
- •26. Организация работы с файлами. Средства Турбо-Пролога для работы с файлами.
- •27. Динамические базы данных. Стандартные предикаты для работы с ними. Примеры применения.
- •Организация меню:
- •Vvod3:-makewindow(4,7,9," Расчёт выходов логической схемы ",0,0,25,80),
- •32. Отладка и трассировка логических программ.
- •34. Общение с эвм на языке, близком к естественному. Проблемы общения. Роль языков представления знаний в проблеме общения.
- •35. Структура лингвистического транслятора.
- •О озу бобщённая схема машины логического вывода.
19. Унификация. Подстановки. Композиция подстановок. Свойства композиции подстановок. Множество рассогласований.
Подстановкой термов ti вместо переменных xi называется множество ={t1/x1,…, tn/xn}.
Если C – дизъюнкт, C называется дизъюнктом, полученным подстановкой частным случаем подстановки. P(x,f(a),B) (c/x,y,a) P(c,f(y),B)
Множество литералов {i} – унифицировано, если существует такая подстановка : 1=2=…=k. Подстановка называется унификатором.
Процедура унификации – поиск таких подстановок, для которых унифицируемые литералы становятся идентичными. {P(y),P(z),P(t)} не унифицируется.
Пусть имеем 2 подстановки ={t1/x1,…,tn/xn} и ={u1/y1,…,um/ym}. Композицией двух подстановок и называется подстановка , которая получена из множества {,} вычёркиванием всех элементов вида: ti/xi для которых ti=xi и всех элементов вида ui/yi для которых yi{xi}.
Множеством рассогласований некоторого множества литералов i называется совокупность термов, которая образуется из множества i всех термов, начиная с первой слева позиции отличающихся символами. {i}={P(x,f(y,z)),P(x,a)} Di={f(y,z),a}
Если множество рассогласований не содержит переменные, то оно не унифицируемо.
20. Стратегии унификации. Пример дерева вывода стратегией “вглубь”.
Пусть имеем цель A1,…,An. Выбирается первая подцель A1 и ищется хорковский дизъюнкт, который может быть унифицирован с A1. A1(t1,…,tm) – термы.
Возможны ситуации: 1) текущая подцель согласуется с фактом. В этом случае формируется новая подцель; 2) подцель согласуется с правилом – применяется некоторая унификация и поиск продолжается для подцели вида Bi.
Процедура доказательства останавливается, когда все подцели унифицированы либо на каком-то этапе появляется отказ – невозможность доказательства подцели (унификации).
Стратегия унификации: поиск в глубину, поиск в ширину.
Процесс решения начинается с корневой вершины. Из каждой вершины исходят ветви согласования текущей подцели с текущими фактами и правилами. При движении по ветвям дерева, цель либо согласуется с текущими фактами либо нет. Если цель согласуется, то образуется новая ветвь из вершины согласованной ветви. Процесс продолжается до получения пустого множества. Процедура целей осуществляется в порядке их записи. При несогласовании с текущим фактом или правилом происходит откат назад на 1 шаг и анализирование результатов унификации текущей ветви. В общем случае может быть возврат до корневой вершины. Если в корневой вершине исчерпаны все альтернативы, то процесс останавливается. Последовательность ветвей от корней до Nil образуют композицию унификации.
21.Управление процессом решения в логической программе. Бэктрекинг. Отсечение. Повторение.
Управление процессом решения в логической программе:
Бэктрэккинг - fail
отсечение - !
репит – repeat
Бэктреккинг – возврат на предыдущий уровень дерева решения. Может быть искусственным и естественным. Естественный возникает при невозможности выполнения очередной унификации. Реализуется с помощью оператора fail. Он всегда неуспешен и вызывает откат к предыдущей вершине.
father(Sasha,Masha). father(Victor,Petr). All_person:-father(x,y),write(x,”Отец”,y),m,fail.
Будут выведены все возможные решения. Операторы write, read при откате дают отказ, так как они не имеют альтернатив.
Отсечение – можно ограничить область поиска решения.
repeat.
repeat if repeat.
22. Структура программы в Турбо-Прологе. Структуры данных в Прологе. Ввод и вывод данных.
Логическая программа на языке Turbo Prolog состоит из секций:
1. Опции компилятора.
2. Константы (constants).
3. Определение данных (domains).
4. Определение базы данных (database).
5. Определение предикатов (predicates).
6. Определение цели (goal).
7. База знаний (clauses).
В программе могут отсутствовать все разделы. В этом случае предполагается, что запрос выполняется к внутренней базе знаний Пролога.
Определение секций может быть глобальным или локальным. По умолчанию определение локальное. Для глобальных определений используется слово global. Например, global domains, global database, global predicates и другие. Это определение используется для модулей логических программ, компоненты которых используются в других программах.
В секции опций компилятора можно задавать управляющие команды, используемые при компиляции программ. Например, trace, config, nobreak, no-warning, diagnostics и другие.
В секции констант описываются имена используемых констант: language=English; blue=1.
В секции определения данных описываются типы (домены) аргументов используемых предикатов (константы, переменные, объекты). В Турбо Прологе могут использоваться стандартные или пользовательские домены. К стандартным относятся integer, real, char, string, symbol и file. Описание данных файлового типа имеет особенности и выполняется в обратном порядке: вначале записывается тип, а затем имена переменных, разделяемых точкой с запятой.
Секция баз данных (database) содержит описание предикатов внешней базы данных. Она может быть именованной или безымянной. Для работы с ней в Прологе имеются встроенные предикаты (assert, asserta, consult и другие). database – students gruppa(string,integer).
Cекция goal содержит внутренний запрос к базе знаний. В этой секции может быть только один запрос, завершаемый точкой. Если внутренний запрос отсутствует, то при запуске программы осуществляется переход на окно внешних запросов. goal father( X, misha), write(X).
В секции предикатов (predicates) описываются все предикаты базы знаний (секции clauses).
Например: predicates father(name, name)
Следует обратить внимание, что при описании предикатов в Турбо Прологе имена аргументов одного типа в предикате должны быть одинаковы.
В секцию clauses заносится база знаний в виде построчной записи предикатов фактов и правил. Каждый факт и правило завершаются точкой. Все одноименные факты и правила обязательно записываются друг за другом без вклиниваний между ними имен других предикатов.
Ввод и вывод данных. Имеются стандартные предикаты: Readln (string или symbol), ReadChar(1 symbol), ReadReal- вещественное число. Все переменные должны быть свободны.
FileStr (имя файла, string)- читает файл в строку (до 64 кб) и наоборот. Если переменная свободна, то наоборот.
ReadKey (char), KeyPressed.
Встроенные предикаты вывода: Write, WriteF, Write (n параметров).
Write, nl- переход на новую строку.
Write f(sormatstr, arg1,…,argn) (%, %, arg1, arg2) причем первый % относится к первому arg и т.д.
%d- десятичное число, %s- строка и т. д.
%-mf, %mpf; "-"- выравнивание слева, по умолчанию справа, n- длина поля, р- число знаков после запятой.
Пример: А=one B=38012 Writef("А="%-7s"/n (?) \n B=%6,2 f "\n", A, B)
