logo
ЭУМКД_ДиВМ3

Индивидуальная практическая работа № 2

Общие сведения

Цель работы: изучение алгоритмов теории графов.

Порядок выполнения работы

1) Изучить темы 5 лекционного материала.

2) Написать программу согласно своему заданию.

3) Граф отобразить, путь вывести. Если нет пути, вывести сообщение.

4) Ввод матрицы должен осуществляться из файла и через форму.

5) Представить для проверки результат выполнения работы в виде одного или нескольких файлов с исходным кодом на любом языке программирования.

Указания по выбору варианта

Номер варианта соответствует последней цифре номера зачётной книжки.

Варианты ЛР4

Имеется список N городов и задан список пар городов, между которыми существует прямая дорога. вывести список городов, которые напрямую сообщаются более чем с М городами.

Подсчитать количество узлов на каждом уровне данного бинарного дерева.

Определить, если в данном бинарном дереве два одинаковых элемента.

Вывести номера уровней данного бинарного дерева, на котрых имеются листья.

Вывести номера вершин, у которых количество потомков в левом поддереве не равно количеству потомков в правом поддереве.

Вывести номера вершин, для которых высота левого поддерева не равна высоте правого поддерева.

Вывести номера вершин, у которых количество потомков в левом поддереве отличается от количества потомков в правом поддереве на 1.

Найти высоту дерева H и удалить в нем все вершины на уровне H/2.

Найти минимальный путь между листьями и удалить центральную вершину этого пути.

Найти максимальный путь между вершинами дерева и удалить центральную вершину этого пути.

Найти высоту дерева H и удалить в нем все вершины на глубине H/2, у которых высота левого поддерева равна высоте правого поддерева.

Найти путь максимальной длины и отразить дерево зеркально относительно этого пути.

Найти путь максимальной длины между вершинами с разным числом потомков.

Найти путь максимальной длины между вершинами разной высоты.

Найти пути минимальной длины между корнем и листьями и удалить центральные вершины этих путей.

Определить, являются ли два дерева зеркальным отражением друг друга по структуре.

Найти среднюю по значению вершину в дереве.

Найти вершины, у которых высоты поддеревьев равны, а количество потомков в правом и левом поддеревьях не равны.

Найти вершины, у которых высоты поддеревьев не равны, а количество потомков в правом и левом поддеревьях равны.

Найти среднюю вершину в дереве, у которой высоты поддеревьев равны.

Удалить все вершины, для которых количество потомков в левом поддереве отличается от количества вершин в правом поддереве на 2 и более.

Удалить все вершины, для которых высота левого поддерева отличается от высоты правого поддерева на 2.

Подсчитать число узлов и листьев в данном бинарном дереве.

Задача коммивояжера.

Разработать программу, реализующую поиск в глубину в графе из заданной вершины.

Разработать программу нахождения остовного дерева в графе методом поиска в глубину.

Разработать программу, реализующую поиск в ширину в графе из заданной вершины.

Разработать программу нахождения остовного дерева в графе методом поиска в ширину.

Разработать программу, реализующую нахождение кратчайшего пути между заданными городами (алгоритм Дейкстры).

Разработать программу, реализующую нахождение кратчайших расстояний между всеми парами городов (алгоритм Флойда).

Разработать программу, реализующую нахождение кратчайших расстояний между источником и всеми городами (алгоритм Форда-Беллмана).

Разработать программу нахождения всех гамильтоновых циклов в графе.

Граф называется полным, если каждая его вершина непосредственно связана со всеми остальными. Найти максимальный полный подграф (клику) в неориентированном графе. Исходный граф задан матрицей смежности порядка n.

Подсчитать количество связанных кусков в графе.

Найти наименьший связанный кусок в графе.

Указания по выполнению работы

Должны быть проверки на корректность и соответствие здравому смыслу введённых значений, с которыми пользователь собирается выполнять операции и т.п.

В случае возникновения нештатной ситуации, программа должна в максимально удобной для пользователя форме реагировать на происходящее, предлагая варианты решения и предотвращая необратимые действия пользователя, которые могут привести к повреждению или потере данных.