- •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. Структура лингвистического транслятора.
- •О озу бобщённая схема машины логического вывода.
Vvod3:-makewindow(4,7,9," Расчёт выходов логической схемы ",0,0,25,80),
cursor(1,5),write(" Введите значения входов: "),
cursor(2,10),write(" Первы вход X1: "),readreal(X1),
cursor(3,10),write(" Второй вход X2: "),readreal(X2),
cursor(4,10),write(" Третий вход X3: "),readreal(X3),
cursor(5,10),write(" Четвёртый вход X4: "),readreal(X4),
cursor(6,10),write(" Состояние T-триггера: "),readreal(Q1),
cursor(7,10),write(" Состояние RS-триггера: "),readreal(Q2),
no(X1,A1), no(X3,A2), ili(A1,X2,A3), ii(A2,X4,A4),
tr_t(A3,Q1,A5), tr_rs(A3,A4,Q2,A6), dc(A5,A6,Y1,Y2,Y3,Y4),
cursor(10,7),write(" Значения на выходе:"),
cursor(11,10),write(" Точка Y1= ",Y1),
cursor(14,10),write(" Точка Y4= ",Y4),
cursor(15,7),write(" Промежуточные значения:"),
cursor(16,10),write(" Точка A1= ",A1),
cursor(21,10),write(" Точка A6= ",A6),readln(_).
generator:-makewindow(6,7,9," Генератор ",0,0,25,80),
cursor(1,5),write(" Смена состояний нажатием ввода: "),nl,
gen(0,0,0,0),menu.
sdv(0,0,0,0,0,1). sdv(0,0,1,0,1,0). sdv(0,1,0,0,1,1).
sdv(0,1,1,1,0,0). sdv(1,0,0,1,0,1). sdv(1,0,1,1,1,0).
sdv(1,1,0,1,1,1). sdv(1,1,1,0,0,0). gen(1,1,1,1).
gen(X,Y,P,Z):-Z=0,Z1=1,write(X,Y,P,Z1),nl,readchar(_),gen(X,Y,P,Z1).
gen(X,Y,P,Z):-Z=1,Z1=0,sdv(X,Y,P,X1,Y1,P1),write(X1,Y1,P1,Z1),nl,readchar(_),gen(X1,Y1,P1,Z1).
Расчёт логической схемы: X1=1, X2=1, X3=1, X4=1, Q1=1, Q2=1.
Результат: Y1=0, Y2=1, Y3=0, Y4=0, A1=0, A2=0, A3=1, A4=0, A5=0, A6=1.
32. Отладка и трассировка логических программ.
Трассировка может выполняться с помощью встроенных средств. Наиболее используются предикаты трассировки и быстрой трассировки: trace и shorttrace. Trace может устанавливаться в разделе опций компиляторов программы (F10). Результат в окне трассировки. Можно выполнять локальную трассировку для совокупности предикатов: trace (on), pred (), trace (off).
Быстрая трассировка работает быстрее и выводит меньше информации. Варианты трассировки - выполнение программы по шагам, установка предикатов для трассировки, трассировка в режиме оптимизации, в диалоге.
Сообщения в окне трассировки:
Call - вызов предиката.
Fail - поиск неудачен, return - поиск с возвратом. Alt+T - трассировка диалоговая.
Для трассировки выполнения программы должны добавить опцию TRACE в начало программы. Таким образом, программа будет начинаться :
trace
predicates
hello
goal
hello.
...........
Теперь вводим команду RUN и следим за экраном. В окне редактора курсор будет мигать в конце задачи hello, а в окне трассировки начало выполнения этой задачи будет выглядеть так:
CALL: goal()
F10 задает пошаговый режим выполнения задачи. Нажав F10 один раз, окно трассировки покажет: CALL: hello()
Это означает, что задача должна обработать предикат `hello'. Нажав ещё раз клавишу F10 вызвали предикат создания окон `makewindow`. Следующее нажатие вызовет выполнение этого предиката: RETURN: makewindow(1,7,7,"My first program",4,56,10,22)
Окно располагается в правом верхнем углу экрана. Курсор теперь будет находиться в окне, где выполняется программа, и где должны набрать имя. Набрав Том, затем нажав "ВВОД". Окно трассировки покажет: RETURN: readln("TOM")
В заключение нажимая F10, пока окно трассировки не покажет:
RETURN: hello()
RETURN: goal(),
что означает окончание выполнения программы. Нажмите F10, и система предложит нажать пробельную клавишу чтобы возвратиться в главное меню.
33. Машины логического вывода. Процедурная семантика логических программ. Структура данных процессоров логического вывода. Система команд процессора логического вывода.
Основное назначение Пролог машины – реализация логического программирования и логического вывода. Практическая реализация логического вывода требует решения 3 задач:
разработка методов логического вывода (базовый метод Робинсона).
разработка программной реализации логического вывода – Пролог.
аппаратная поддержка логического вывода.
Необходимость 3 вызвана многими причинами, в том числе:
переборным характером процедуры вывода.
применением нестандартных структур данных, списков, предикатов
наличием специфических операций, не имеющих аналогов в других языках:
унификация, возврат, отсечение, двунаправленность.
Указанные особенности требуют специфических разработок ЭВМ. Компиляция программы не согласуется с архитектурой традиционной ЭВМ, поэтому операции Пролога нельзя описать в терминах ЭВМ.
Для 3 разрабатывается концепция построения архитектуры Пролог-машины. Для исследования этой концепции воспользуемся абстрактной ПМ с некоторой системой команд и структурой данных. Одна из идей абстрактной ПМ позволяет рассматривать её в виде совокупности 2-х задач:
разработка компиляции – преобразует исходную программу в последовательность команд АПМ.
разработка интерпретация для системы команд АПМ, выполняющие код для обычной ЭВМ.
Процедурная семантика логических программ.
Программа на языке Пролог представляет собой неупорядоченное множество предикатов. Каждый предикат идентифицируется своим именем и арностью и является упорядоченным множеством утверждений.
Процесс логического вывода подпрограммой выполняется как последовательность вызова процедур вывода. Точкой входа в процедуру является 1-е утверждение. Процедура, определяющая предикат может иметь несколько точек входа.
Запуск программы ПМ осуществляется целевым утверждением.
Структура данных процессора логического вывода.
Для представления данных рассмотрим 32-разрядное машинное слово: 1-ый байт – интерпретируется как Plug или Teg. Он задаёт семантику других байтов. В качестве семантической единицы может быть переменная либо функтор (структура предиката).
Каждая переменная или функтор описывается в соответствующей таблице символов. Переменные: константы, целые; функторы: в виде фрейма.
Команды процессора логического вывода.
Могут иметь сложный алгоритм и включают:
команды вызова предикатов
загрузки аргументов
унификации
возврата
ввод/вывод
