- •1. Разл.Парадигмы пр-я и подходы к опр-ю выч-ти. Декларативные яп как альт. Императивным. Лп как алг-я модель, альт-я модели Тьюринга — фон Неймана.
- •3.Исчисление предикатов 1-го порядка. Понятие о формальной аксиоматической системе.Выводимость (|-) в форм. Аксиом. Системе.Правило вывода modus ponens.
- •4. Понятие о полноте, непротиворечивости и корректности логической системы. Связь логического вывода с общезначимостью. Тh о дедукции.
- •5.Алгоритмическая неразрешимость исчисления предикатов. Тh Черча. Th Геделя о неполноте формальной арифметики.
- •6. Норм-е формы. Дизьюнкты Хорна. Сведение ф-л лог.Пр-в к фразам Хорна.
- •7. Унификация. Правила унификации сложных структур.
- •8. Правило вывода modus tollens. Простое и обобщенное правило резолюции.
- •9. Метод резолюции для реализации эф-го логического вывода в логических программах на основе фраз Хорна. Стратегии резолюции. Sld-резолюция.
- •11. Декларативная и процедурная семантика языка лп. Примеры.
- •12. Отрицание в логическом программировании. Отрицание по неуспеху и предположение о замкнутости мира. Sldnf-резолюция.
- •14. Основные объекты языка Пролог: атомы, числа, константы, переменные, термы, структурные термы, предикаты.
- •15. Операторы. Представление и выч-ие арифметич-х выр-й. Опред-е польз-м операторы. Представление предикатов и правил структурными термами.
- •16. Подходы к организации циклов в лп. Примеры. Предикаты for, repeat.
- •17. Управление перебором и отсечение( cut). Предикат not.
- •18. Встроенные предикаты Пролога: read, write, nl.
- •21. Описание основных предикатов обработки списков: определение длины, взятие n-ого элемента, принадлежность элемента списку, конкатенация списков.
- •22. Описание основных предикатов обработки списков: удаление элемента из списка, определение подсписка, перестановки.
- •23. Порядковое представление списков в Прологе. Представ-е матриц. Примеры.
- •25. Деревья. Деревья поиска, основные операции с деревьями поиска.
- •26. Сбалансир-е деревья. Алгоритм добавления узла в сбалансир-е дерево.
- •27. Представления графов. Алгоритмы поиска пути (в глубину, в ширину).
- •28. Метод генерации и проверок для решения задач. Метод ветвей и границ. Явный и неявный перебор в Пролог-программах.
- •31. Операторы. Преобр.Симв.Выр.В дерево.Выч-е значений арифм.Выр.По строке.
- •30. Решение задач методом поиска в пространстве состояний. Пример. Принципы подбора алгоритма поиска пути в зависимости от задачи.
- •32. Символьные вычисления. Алгоритм символьного дифференцирования.
- •33. Подходы к символьному упрощению выражений.
- •34. Анализ ест-го языка с использованием контекстно-свободной грамматики. Подход к интерпретации знаний в естественно-языковом материале.
- •35. Учет контекстных усл. Работа со словарями. Глуб. И пов. Структуры в ест.Яз.
- •36.Расширение логического интерпретатора Пролога средствами языка. Мета-интерпритаторы. Примеры
- •24. Разностные списки. Хвостовая рекурсия. Сведение рекурсивного нехвостового определения к хвостовому. Примеры.
14. Основные объекты языка Пролог: атомы, числа, константы, переменные, термы, структурные термы, предикаты.
Термы – основные смысловые объекты программы: 1. Простые: (a) Переменные – начинаются с заглавной буквы или подчеркивания, область действия – 1 правило. Как правило, заменяются внутр-ми ссылками. Анонимная переем-я «_» - неск.ее вхождений в одно и то же высказывание независимы. Своб.пер-я подразумевается изначально. Переменная получает значение (связывается) в рез-те унификации. Значение перем-й м.б. измене-но только в рез-те бэктрекинга. (b) Константы: i. Атомы- посл-ть лат.букв, цифр, под-черкиваний, начинающихся с мал.буквы, посл-ть знаков операторов, посл-ть любых символов, взятых в апострофы. Константы предметной области. 1 идентификатор <-> 1 объект. ii. Числа – введены в явном виде исключительно для удобства. Можно обойтись и без них, построив формальную арифметику на аксиомах Пеано. 2. Структурные f(t_1,... t_n), t_i – термы, f - функтор арности n. Обозначение: f/n. Используют: сложные факты:
появление(‘Тоня_Глоткина’, дата(11, июль, 1989))
Графика: в виде дерева. Возможны рекурсивные опр-ия. Предикаты – тоже структурные термы. Предикат – матем-е высказывание, зависящее от параметров.
15. Операторы. Представление и выч-ие арифметич-х выр-й. Опред-е польз-м операторы. Представление предикатов и правил структурными термами.
Операторы нужны для естественной, удобной записи арифметич-х выражений, исп-я инфиксной и постфиксной записи вместо префиксной. Св-ва: •Учёт приоритета опера-ций; •Группировка скобками; •Ассоциативность: левая (+, —, *, /), правая (степень). Представление и вычисление арифметических выражений • =, создаёт структурный терм;•is,вычисляет, правая часть должна быть правильным арифметич-м выражением, из констант может содержать только числа. Определяемые пользователем операторы. Для объявления оператора исп-ся встроенный системный предикат op. Формат вызова :— ор(<приоритет>, <шаблон>, <оператор>)// Обычно приоритет \in [1,255]. Чем больше число, тем меньше реальный приоритет. У :- он 255. Шаблон задает: •арность: унарный (fx; fy; xf; yf), бинарный (yfx, xfy, xfx); •позиционность: префиксный (xf; yf), инфиксный (yfx; xfy; xfx), постфиксный (fx; fy); •ассоциативность если нет скобок, допускает: x – оператор более высокого приоритета, y – оператор более высокого или равного приоритета. Левая(yfx), правая (xfy), никакая (xfx, xf, fx); просто она есть, ка-кая – не определено fy, yf. Оператор: посл-ть спецсимволов (<,=,>,|), функциональный символ (seq). Представление предикатов и правил структурными термами Эл-ты про-лог программы такие как, предикаты, и описывающие их факты и правила явл-ся структурными термами (f(t_1,... t_n), t_i – термы, f - функтор арности n)
resistance(par(X, Y), R) : —
resistance(X, RX),
resistance(Y, RY),
4 R is RX * RY / (RX + RY).
В префиксной нотации (lisp forewer):
:— ( resistance(par(X, Y), R),
16. Подходы к организации циклов в лп. Примеры. Предикаты for, repeat.
Подходы: •рекурсия На каждом шаге создаётся новая среда, новое значение инварианта цикла. Ex – печать чисел от 1 до 10.
print(11).
print (X) :-
X =< 10, write(X), X1 is X + 1, print(X1).
print : -
print(1).
Бесконечный цикл:
iloop :-
iloop.
Современные системы ЛП умеют распознавать хвостовую рекурсию. •возврат - циклы управляемые неуспехом. Новое значение пер-й цикла можно генерировать каждый раз в процессе возврата.
print : -
gen(1, X), write(X), fail.
gen(X, X).
gen(Y, X):-
Y < 10, Y1 is Y + 1, gen(Y1, X).
Бесконечный цикл:
iloop : -
loop, fail.
loop.
loop :- loop.
repeat - Возвратный цикл с постусловием, всегда успешно доказуем. В процессе каждого возврата он генерирует новое решение, не позволяя перешагнуть через себя.
repeat.
repeat :— repeat.
Использование:
read_dim: — %Требуется ввести число от 3 до 6
repeat, read(X), X >= 3, X <= 6.
read_ans: — % Требуется ввести да/нет
repeat, read(X), member(X, [yes, no]).
Вообще говоря, это работает только с предикатами, у кот.есть побочный эффект. С классич.предикатами, repeat будет возвращаться один и тот же ответ. for:
for(A, A, _).
for(X, A, B): —
A < B, A1 is A + 1, for(X, A1, B).
Вариант другой, хуже, но можно его идею с (member) для организации цикла как в Python, (цикл по произвольному множеству).
integer(A, A, [A]).
integer(A, B, [A|R]): —
A < B, A1 is A + 1,
integer(A1, B, R).
for(X, A, B): —
integer(A, B, L), member(X, L).
Использование: ?— for(X, 1, 10), write(X), fail. %Печать чисел от 1 до 10
