ЛР2_Нелинейные_структуры_данных

advertisement
ЛАБОРАТОРНАЯ РАБОТА № 2
НЕЛИНЕЙНЫЕ СТРУКТУРЫ ДАННЫХ
Цель работы – познакомиться с нелинейными структурами данных и
некоторыми алгоритмами поиска, научиться решать задачи с использованием
деревьев и графов, понять взаимосвязь алгоритма обработки структур
данных с их внутренним представлением.
Постановка задачи
Написать две программы согласно номеру индивидуального варианта.
Использовать при работе с графами и деревьями рекурсивные алгоритмы
обработки данных.
Варианты заданий
Вариант 1.
1. Орграф, заданный с помощью списков смежности, проверить на
наличие циклов и при их наличии вывести каждый цикл в виде вершин
циклического пути. Списки смежности каждой вершины вводятся с
клавиатуры.
2. По данным, хранящимся в бинарном файле, построить дерево
бинарного поиска и реализовать рекурсивную функцию его копирования.
Обойти полученное дерево в симметричном порядке.
Вариант 2.
1. Орграф, заданный с помощью списков смежности, проверить на
наличие циклов и при их наличии вывести каждый цикл в виде вершин
циклического пути. Списки смежности каждой вершины хранятся в
текстовом файле.
2. Описать функцию, которая для заданного N строит почти полное
строго бинарное дерево с количеством уровней N, где на каждом уровне i
располагаются узлы, информационные части которых равны i. Обойти
построенное дерево в симметричном и прямом порядках.
Вариант 3.
1. Орграф, заданный с помощью списков смежности, проверить на
наличие циклов и при их наличии вывести каждый цикл в виде вершин
циклического пути. Списки смежности каждой вершины хранятся в
бинарном файле.
2. По данным, хранящимся в текстовом файле, построить дерево
бинарного поиска и вычислить его высоту. Определить с помощью
полученного дерева, есть ли в файле числа, вводимые с клавиатуры
(количество чисел запрашивается перед их вводом), отсутствующие числа
добавить в конец файла.
Вариант 4.
1. Имеются n городов. Некоторые из них соединены дорогами известной
длины. Найти кратчайшие маршруты из заданного города в остальные. Граф
задан списками смежности, хранящимися в текстовом файле
2. Построить сбалансированное бинарное дерево, данными в узлах
которого
являются
целые
числа,
вводимые
с
клавиатуры.
Обойти
построенное дерево в симметричном порядке.
Вариант 5.
1. Найти центр орграфа, заданного матрицей смежности с весами дуг,
хранящейся в текстовом файле. Размер матрицы указан первыми двумя
числами первой строки этого файла.
2. По данным, вводимым с клавиатуры (окончанием ввода является
ноль), построить сбалансированное дерево бинарного поиска. Обойти
полученное дерево в симметричном и прямом порядках.
Вариант 6.
1. Во взвешенном орграфе найти все стоки, то есть вершины, в которые
только входят дуги, и истоки, т. е. вершины, из которых дуги только выходят,
а также кратчайший путь, связывающий две заданные вершины. Списки
смежности орграфа и номера вершин для поиска вводятся с клавиатуры.
2. Описать функцию, которая для заданного N строит полное двоичное
дерево с количеством уровней N, где на каждом уровне i располагаются
узлы, информационные части которых равны N-i. Вывести на экран списки
значений узлов дерева, получаемые при его обходе в симметричном и
обратном порядке. Изобразить полученное дерево на экране в виде
иерархической структуры, используя поперечный обход дерева.
Вариант 7.
1. В орграфе найти все стоки, то есть вершины, в которые только входят
дуги, и истоки, т. е. вершины, из которых дуги только выходят, а также
кратчайший путь, связывающий две заданные вершины. Матрица весов
орграфа и номера вершин для поиска вводятся с клавиатуры.
2. По данным, хранящимся в массиве размерностью N, построить дерево
бинарного поиска. Определить, является ли это дерево сбалансированным.
Обойти полученное дерево в симметричном, прямом и обратном порядках.
Вариант 8.
1. В орграфе найти все стоки, то есть вершины, в которые только входят
дуги, и истоки, т. е. вершины, из которых дуги только выходят. В заданном
ориентированным графе найти кратчайший путь, связывающий две заданные
вершины. Орграф задан матрицей смежности, хранящейся в текстовом
файле.
2. Построить лес цифрового поиска по числам, хранящимся в бинарном
файле. Использовать реализацию общего дерева, в которой каждый узел
представляет
собой
запись
с
информационным
полем
и
заранее
определенным количеством указателей на сыновей. Проверить с помощью
этого леса, есть ли среди указанных чисел число N, введенное с клавиатуры.
Вариант 9.
1. В орграфе найти все стоки, то есть вершины, в которые только входят
дуги, и истоки, т. е. вершины, из которых дуги только выходят. В заданном
ориентированным графе найти кратчайший путь, связывающий две заданные
вершины. Орграф задан матрицей смежности, хранящейся в бинарном файле.
2. Построить лес цифрового поиска по числам, хранящимся в текстовом
файле. Использовать реализацию леса в виде бинарного дерева. Проверить с
помощью этого леса, есть ли среди указанных чисел число N, введенное с
клавиатуры.
Вариант 10.
1. Найти все вершины графа, к которым существует путь заданной длины
(не обязательно кратчайший) от вершины, номер которой вводится с
клавиатуры. Веса дуг вводятся с клавиатуры.
2. По данным, хранящимся в текстовом файле, построить дерево
бинарного поиска и реализовать рекурсивную функцию его копирования.
Обойти полученное дерево в симметричном порядке.
Вариант 11.
1. Найти все вершины графа, к которым существует путь заданной длины
(не обязательно кратчайший) от вершины, номер которой вводится с
клавиатуры. Веса дуг хранятся в текстовом файле.
2. По числам, хранящимся в бинарном файле, построить дерево
бинарного поиска. Сохранить неповторяющиеся данные из исходного файла
в новом файле в убывающем порядке. Определить, на сколько в процентном
отношении полученный файл меньше исходного.
Вариант 12.
1. Найти все вершины графа, к которым существует путь заданной длины
(не обязательно кратчайший) от вершины, номер которой вводится с
клавиатуры. Веса дуг хранятся в бинарном файле.
2. Описать функцию, которая для заданного N строит полное двоичное
дерево с количеством уровней N, где на каждом уровне i располагаются
узлы, информационные части которых равны i+1. Вывести на экран списки
значений узлов дерева, получаемые при его обходе в прямом и
симметричном порядке. Изобразить полученное дерево на экране в виде
иерархической структуры, используя поперечный обход дерева.
Вариант 13.
1. Имеются n городов. Некоторые из них соединены дорогами известной
длины. Определить, в каком из городов компании нужно построить склад,
чтобы доставка товаров по городам осуществлялась с наименьшими
транспортными расходами. Считать, что товары распределяются по городам
равномерно и дорожные условия одинаковые. Матрица весов орграфа
содержится в текстовом файле.
2. По данным, хранящимся в текстовом файле, построить дерево
бинарного поиска. Определить, является ли оно сбалансированным. Обойти
полученное дерево в симметричном и прямом порядках.
Вариант 14.
1. Орграф задан списками смежности, хранящимися в текстовом файле.
Обойти его методом поиска в глубину и определить минимально возможное
количество деревьев в глубинном остовном лесу этого графа.
2. По данным, хранящимся в бинарном файле, построить почти полное
бинарное дерево. Обойти полученное дерево в симметричном и поперечном
порядках.
Вариант 15.
1. Орграф задан матрицей смежности, хранящейся в бинарном файле.
Обойти его методом поиска в глубину и определить минимально возможное
количество деревьев в глубинном остовном лесу этого графа.
2. Написать функцию удаления элемента со значением N из дерева
бинарного поиска. Первоначальное дерево бинарного поиска строится по
данным, хранящимся в текстовом файле.
Вариант 16.
1. Имеются n городов. Некоторые из них соединены дорогами известной
длины. Найти кратчайшие маршруты из заданного города в остальные.
Матрица весов хранится в текстовом файле
2. Построить бинарное дерево поиска, данными в узлах которого
являются целые числа, вводимые с клавиатуры (окончанием ввода чисел
является ноль). Проверить, является ли полученное дерево идеально
сбалансированным. Обойти дерево в прямом и симметричном порядке.
Вариант 17.
1. Имеются n городов. Некоторые из них соединены дорогами известной
длины. Найти кратчайшие маршруты из заданного города в остальные.
Матрица весов хранится в бинарном файле
2. Построить лес цифрового поиска по числам, введенным с клавиатуры
(признак окончания ввода – ввод 0). Использовать реализацию общего дерева
в виде бинарного дерева. Проверить с помощью этого леса, есть ли среди
указанных чисел число N, введенное с клавиатуры.
Вариант 18.
1. В заданном неориентированным графе найти кратчайший путь,
связывающий две заданные вершины. Матрица весов содержится в
текстовом файле.
2. Вывести на экран бор, построенный по числам, хранящимся в
бинарном файле. Определить с помощью этого бора, есть ли среди
указанных чисел число N, введенное с клавиатуры.
Вариант 19.
1. В заданном неориентированным графе найти кратчайший путь,
связывающий две заданные вершины. Матрица весов содержится в бинарном
файле.
2. По считанному из текстового файла префиксному выражению
построить дерево, обход которого в симметричном порядке будет
соответствовать тому же выражению в инфиксной форме записи.
Вариант 20.
1. Имеются n городов. Некоторые из них соединены дорогами известной
длины. Определить, из каждого ли города можно попасть в остальные.
Матрица весов орграфа содержится в текстовом файле.
2. Вывести на экран бор, построенный по числам, хранящимся в
текстовом файле. Определить с помощью этого бора, есть ли среди
указанных чисел число N, введенное с клавиатуры.
Контрольные вопросы
1. Что такое дерево? Из каких элементов оно состоит?
2. Как измерить высоту дерева?
3. Что такое «лес»?
4. Какое дерево называют бинарным?
5. Какие бинарные деревья называются полными, почти полными и
неполными?
6. Что понимают под идеально сбалансированным бинарным деревом?
7. Какие деревья называют бинарными деревьями поиска?
8. Какие существуют способы реализации бинарных деревьев?
9. Какие существуют способы организации общих деревьев?
10.Какие методы применимы для работы с деревьями?
11.Какие методы обхода бинарных деревьев Вы знаете?
12.Что такое дерево цифрового поиска?
13.Что такое бор?
14.Что такое Б-дерево?
15.Что такое граф? Какие виды графов Вы знаете?
16.Какие существуют способы реализации графов?
17.В чем заключается алгоритм Флойда?
18.В чем заключается метод Дейкстры?
19.Как найти центр ориентированного графа?
20.Для чего требуется транзитивное замыкание матрицы смежности?
21.Какие методы обхода графов Вы знаете?
Download