
- •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. Разностные списки. Хвостовая рекурсия. Сведение рекурсивного нехвостового определения к хвостовому. Примеры.
26. Сбалансир-е деревья. Алгоритм добавления узла в сбалансир-е дерево.
Df
Дерево называется сбалансир-м, если для
каждого узла в дереве два поддерева
этого узла содержат приблизит.равное
кол-во элементов. Df
Дерево
•пустое
дерево
•структурный
терм вида
(t,
),
где
–
имя, t
–
произв. терм (узел дерева),
–
мн-во поддер-в. Df
Двоичное
дерево
•пуст.дер.
•структур-ный
терм вида
(t,
l,
r),
где
–
имя, t
-
произвольный терм (узел дерева), l,
r
–
двоич-ные дер. – лев. и прав. поддер. Df
(t,
l,
r)
(x==t)
(x
)
(x
).
Df
Дер.
T
наз-ся AVL-деревом,
если T=
,
либо T=
(x,
l,
r),
где
–AVL-деревья,
и |h(l)-h(r)|
1.,
где h
– глубина, опред-я след. образом: h(
=0
и h(
(t,
l,
r))
= max(h(l),h(r))+1.
Сбал-е деревья нужны для быстрого поиска,
тк обычные деревья поиска могут не
обладать всей привлекательностью дв-го
поиска, напр. для отсортиров-й посл-ти
дерево поиска будет выглядеть как
список, и поиск O(n).
В сбал-м дереве поиск имеет сл-ть
O(log_2(n)).
Доб-е узла в такое дерево связано с
трудностями, тк может нарушаться сбал-ть
и требоваться перестройка.
Для реализации необх. сохранять информацию
о сбал-ти дерева. Требуется знать разницу
между высотами поддер-в, кот.м.б.равна
-1,0,+1. Для упрощения операций желательно
сопровождать инф-ю о полной высоте
деревьев. Представим AVL-деревья в след.
форме: t(
Left,
A,
Right)
/Height.
Пустое дер.-nil/0.
Рассм.операцию
вставки эл-та X в непустое дер..
Tree=t(L,A,R)/H. Изучим тот вариант, в кот. X>А.
После этого вставим X в дерево К и получим
следующее отношение: addsvl(R,
X,
tl
R1,
В, R2)
/Hb).Деревья
L и R могут отличаться по высоте не больше
чем на 1. Поскольку в дерево R вставлен
только один элемент, X, то не более чем
одно из поддеревьев (R1 пли R2) может иметь
высоту h + 1. В том случае, если X меньше
А, ситуация является аналогичной, за
исключением того, что левое и правое
поддеревья меняются местами. Поэтому
в любом случае необх-мо сформировать
новое дерево из трех деревьев (назовем
их Treel, Tree2 и ТгееЗ) и двух отдельных
элементов, А и В. Порядок компонентов в
дереве NewTree слева направо должен быть
следующим: Tree1, А, Тгее2, В, ТгееЗ. Необходимо
рассмотреть следующие варианты. 1.
Среднее дерево, Тгее2, является более
высоким, чем оба других дерева. 2. Дерево
Treel является, по меньшей мере, таким же
высоким, как деревья Тгее2 и ТгееЗ. 3.
Дерево ТгееЗ является, по меньшей мере,
таким же высоким, как деревья Тгее2 и
Treel. В варианте 1 среднее дерево (Тгее2)
необходимо разделить на части и включить
их в дерево NewTree.
% addavl( Tree, X, NewTree): вставка в AVL-словарь, Tree = t( Left, Root, Right)/KeightOfTree, Пустое дерево - nil/0
addavl( nil/0, X, t(nil/0,X,nil/0)/1). % Ввести элемент X в пустое дерево
addavl ( t (L, Y, Р.)/Ну, X, NewTree} :- % Ввести элемент Х в непустое дерево
gtl Y, X), addavl( L, X, t(Li,Z,L2)/_) , % Ввести элемент Х в левое поддерево
combine( LI, Z, L2, Y, R, NewTree).
addavl ( t(L,Y,R)/Hy, X, NewTree) :-
gt ( X, Y) , addavl( R, X, t(Rl,Z,R2)/_), % Ввести E правое поддерево
combine (L, Y, Rl, Z, R2, NewTree).
% combine( Treel, A, Tree2, В, ТгееЗ, NewTree):
% Объединить поддеревья Treel, Tree£, ТгееЗ и узлы А и В в AVL-дерево
conibine ( Tl/Hl, A, t(Т21ГВ,Т22) / Н2, С, ТЗ/НЗ, % Пять компонентов
t( t [Tl/Hl, A, T21) /Нд, В, t (Т22,С,ТЗ/НЗ)/Не)/НЬ) :- % Их сочетание
Н2 > HI, H2 > НЗ, % Среднее дерево - самое высокое
На is HI + 1, % Высота левого поддерева
Не is НЗ + l , % Высота правого поддерева
Hb is На + 1. % Высота всего дерева
combine ( Tl/Hl, A, T2/H2, С, ТЗ/НЗ,
t( Tl/Hl, A, t(Т2/Н2,С,ТЗ/НЗ)/Нс)/На ) :-
HI >= Н2, HI > = НЗ-, % Высокое левое поддерево
maxl( Н2, НЗ, Нc), maxl( HI, Hc, HaJ .
combine ( Tl/Hl, A, T2/H2, С, ТЗ/НЗ,
t( t(Tl/Hl,ft,Т2/Н2)/На, С, ТЗ/НЗ)/НС ) :-
НЗ >= Н2, H3 >= К1, maxl (HI, H2, На), maxl (На, НЗ, Не).
maxl (U, V, М) :- % М равно 1 + максимальное из двух значение, V и V
U > V,! , M i s U + 1; М i s V + 1,