Контрольный пример
Фрагмент программы печатает все элементы, проходя его «в глубину».
show_tree(nil).
show_tree(tree(X,Left,Right)):-write(X),show_tree(Left), show_tree(Right).
Задание к работе
1. Составить программу, которая решает задачи соответствующего варианта.
2. Предусмотреть в программе возможности автоматического ввода/вывода деревьев.
3. Подобрать тестовые данные, проверяющие работу программы.
4. Провести анализ ошибок и полученных результатов, составить отчет о проделанной работе.
Варианты заданий
Подсчитать длину максимального пути и выдать его трассировку.
Выдать метки всех вершин с их кратностями.
Построить деревянное покрытие графа.
Выделить метку вершины дерева, имеющую наибольшее число вхождений.
В указанном ярусе дерева добавить вершину с указанной меткой.
Составить программу, реализующую сортировку линейного числового списка на основе бинарного отсортированного дерева.
Проверить дерево на изоморфизм.
Для связного графа построить деревянное покрытие, начиная с указанной вершины.
Выделить в дереве все поддеревья с указанной меткой.
Реализовать обход дерева в ширину с выдачей меток.
Удалить вершину с указанной меткой, в случае отсутствия указанной метки выдать сообщение о невозможности удаления.
Реализовать обход дерева в глубину с выдачей меток.
Реализовать поиск в дереве данного поддерева.
Подсчитать количество вхождений в дерево данной метки.
Выделить в дереве максимальное поддерево с заданной меткой.
Подсчитать количество вершин дерева. Выдать наиболее длинный путь дерева.
Подсчитать в дереве количество совпадающих вершин.
Выдать элемент бинарного дерева, который имеет в нем наибольшее число вхождений.
Сравнить два дерева на изоморфизм.
Построить дерево по алгебраическому выражению.
Лабораторная работа № 5
Работа с динамическими базами данных
Цель работы
Ознакомиться с реализацией динамических баз данных в языке Пролог.
Задание для подготовки к работе
Изучить лекционный материал.
Порядок выполнения работы
1. Решить задачу соответствующего варианта.
2. Подобрать тестовые данные и протестировать программу на компьютере.
3. Составить отчет о проделанной работе.
Содержание отчета
1. Исходные тексты программ на языке Пролог.
2. Наборы тестовых данных и результаты работы программ.
3. Перечень и анализ ошибок.
4. Выводы по работе.
Основные понятия
Реляционная модель данных предполагает, что база данных – это есть описание некоторого множества отношений. Пролог-программу можно рассматривать как такую базу данных, здесь отношения между данными представлены в виде фактов и правил. В Прологе есть специальные средства для модифицирования этой базы данных, то есть добавлять и удалять новые отношения из файла. Для этих целей служат встроенные предикаты [1, 5]:
consult(F) – все предложения, содержащиеся в файле будут использоваться Пролог-машиной для достижения целей.
reconsult(F) – если в файле есть предложения, касающиеся отношений, которые уже были определены ранее, старые отношения заменяются на новые из файла.
assert(C) – добавляет предложение C из базы данных.
retract(C) – удаляет предложение C из базы данных.
asserta(C) – помещает предложение C в начале базы данных.
assertz(C) – помещает предложение C в конце базы данных.
see(F) – делает файл F текущим входным потоком.
tell(F) – файл становиться текущим выходным потоком.
seen – закрывает текущий входной поток.
told – закрывает текущий выходной поток.
