Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety_k_ekzamenu.docx
Скачиваний:
16
Добавлен:
01.07.2025
Размер:
230.19 Кб
Скачать
  1. Остовное дерево

Граф, не имеющий циклов, называется лесом. Связный граф, не имеющий циклов, называется деревом.

Пусть n и m - количества вершин и ребер графа соответственно.

Теорема 4 (Свойства деревьев) Пусть G - неориентированный граф. Тогда следующие условия эквивалентны:

1) G - дерево,

2) G - связный граф и m = n — 1,

3) G - граф вез циклов и m = n — 1,

4) между любой парой вершин существует единственная цепь,

5) G не имеет циклов, но при добавлении произвольного ребра в G в нем возникает единственный цикл.

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

Подграф неориентированного графа G = (V,E) называется остовным деревом (остовом) и обозначается Т, если Т - дерево и множество его вершин совпадает с V. Граф называется (реберно) взвешенным, если каждому его ребру {i,j} приписан некоторый вес Wij.

Весом, остовного дерева называется сумма весов всех его ребер.

Задача поиска в графе остовного дерева минимального веса имеет много приложений. Она возникает при проектировании дорог, электрических сетей, трубопроводов и т.п., т.е. в ситуациях, когда необходимо связать заданное множество объектов коммуникационными линиями и суммарная стоимость этих линий должна быть минимальна. Ниже приводятся два алгоритма, которые строят остовное дерево минимального веса Тn-1. Напомним, что Tn-1 не содержит циклов и имеет n— 1 ребер.

  1. Алгоритм Краскала

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

Если ребра ориентированы, что обычно показывают стрелками, то они называются дугами, и граф с такими ребрами называется ориентированным графом.

Если ребра не имеют ориентации, граф называется неориентированным.

Примеры графов:

Дан взвешенный неориентированный граф. Требуется найти такое поддерево этого графа, которое бы соединяло все его вершины, и при этом обладало наименьшим весом (т.е. суммой весов рёбер) из всех возможных. Такое поддерево называется минимальным остовным деревом или простым минимальным остовом.

Данный алгоритм был описан Краскалом в 1956 г.

Алгоритм Краскала изначально помещает каждую вершину в своё дерево, а затем постепенно объединяет эти деревья, объединяя на каждой итерации два некоторых дерева некоторым ребром. Перед началом выполнения алгоритма, все рёбра сортируются по весу (в порядке неубывания). Затем начинается процесс объединения: перебираются все рёбра от первого до последнего (в порядке сортировки), и если у текущего ребра его концы принадлежат разным поддеревьям, то эти поддеревья объединяются, а ребро добавляется к ответу. По окончании перебора всех рёбер все вершины окажутся принадлежащими одному поддереву, и ответ найден.

  1. Алгоритм Прима Дан взвешенный неориентированный граф G с n вершинами и m рёбрами. Требуется найти такое поддерево этого графа, которое бы соединяло все его вершины, и при этом обладало наименьшим возможным весом (т.е. суммой весов рёбер).

В естественной постановке эта задача звучит следующим образом: есть n городов, и для каждой пары известна стоимость соединения их дорогой (либо известно, что соединить их нельзя). Требуется соединить все города так, чтобы можно было доехать из любого города в другой, а при этом стоимость прокладки дорог была бы минимальной.

Этот алгоритм назван в честь американского математика Роберта Прима, который открыл его в 1957 г.

Сам алгоритм имеет очень простой вид. Искомый минимальный остов строится постепенно, добавлением в него рёбер по одному. Изначально остов полагается состоящим из единственной вершины (её можно выбрать произвольно). Затем выбирается ребро минимального веса, исходящее из этой вершины, и добавляется в минимальный остов. После этого остов содержит уже две вершины, и теперь ищется и добавляется ребро минимального веса, имеющее один конец в одной из двух выбранных вершин, а другой — наоборот, во всех остальных, кроме этих двух. И так далее, т.е. всякий раз ищется минимальное по весу ребро, один конец которого — уже взятая в остов вершина, а другой конец — ещё не взятая, и это ребро добавляется в остов (если таких рёбер несколько, можно взять любое). Этот процесс повторяется до тех пор, пока остов не станет содержать все вершины (или, что то же самое, n-1 ребро).

В итоге будет построен остов, являющийся минимальным. Если граф был изначально не связан, то остов найден не будет (количество выбранных рёбер останется меньше n-1).

  1. Кратчайшие пути Задача о кратчайшем пути — задача поиска самого короткого пути (цепи) между двумя точками (вершинами) на графе, в которой минимизируется сумма весов ребер, составляющих путь.

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

Существуют различные постановки задачи о кратчайшем пути:

- Задача о кратчайшем пути в заданный пункт назначения;

- Задача о кратчайшем пути между заданной парой вершин;

- Задача о кратчайшем пути между всеми парами вершин.

Задача о кратчайшем пути является одной из важнейших классических задач теории графов. Сегодня известно множество алгоритмов для ее решения:

1. Алгоритм Дейкстры находит кратчайший путь от одной из вершин графа до всех остальных. Алгоритм работает только для графов без рёбер отрицательного веса.

2. Алгоритм Беллмана — Форда находит кратчайшие пути от одной вершины графа до всех остальных во взвешенном графе. Вес ребер может быть отрицательным.

3. Алгоритм Флойда — Уоршелла находит кратчайшие пути между всеми вершинами взвешенного ориентированного графа.

4. Алгоритм Джонсона находит кратчайшие пути между всеми парами вершин взвешенного ориентированного графа.

5. Алгоритм Ли (волновой алгоритм) основан на методе поиска в ширину. Находит путь между вершинами s и t графа (s не совпадает с t), содержащий минимальное количество промежуточных вершин (ребер). Основное применение — трассировки электрических соединений на кристаллах микросхем и на печатных платах. Так же используется для поиска кратчайшего расстояния на карте в стратегических играх.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]