Скажите, пожалуйста, можно ли еще получить документ о прохождении курса ("Графы и алгоритмы", декабрь 2020) после предоставления всех дополнительных необходимых документов? |
Кратчайшие пути
Кратчайшие пути
В этой лекции рассматриваются связные графы с неотрицательными весами ребер. Вес пути в графе определяется как сумма весов ребер этого пути. Кратчайшим путем между двумя вершинами называется путь наименьшего веса, соединяющий эти вершины. Рассмотрим задачу отыскания кратчайших путей от заданной вершины \[ a \] до всех остальных вершин графа. Возможно, более естественной постановкой задачи кажется поиск кратчайшего пути между двумя заданными вершинами. Однако в настоящее время не известно никакого способа решения этой задачи, существенно лучшего, чем поиск кратчайших путей от начальной вершины до всех остальных.
Геодезическое дерево
Пусть \[ a \] - вершина связного графа \[ G \] с заданной на множестве ребер весовой функцией \[ w \] с неотрицательными значениями. Каркас \[ T \] графа \[ G \] с корнем \[ a \] называется геодезическим деревом, если для любой вершины \[ x \] путь между вершинами \[ x \] и \[ a \] в дереве \[ T \] является кратчайшим путем между этими вершинами в графе \[ G \] . Это обобщает понятие геодезического дерева, введенное в "лекции 4" и соответствующее случаю, когда все веса равны 1. Докажем сначала, что геодезическое дерево всегда существует.
Обозначим через \[ \delta (x) \] вес кратчайшего пути между вершинами \[ x \] и \[ a \] в графе \[ G \] . Дерево \[ F \] с корнем \[ a \] назовем частичным геодезическим деревом, (ЧГД), если существует такое геодезическое дерево \[ T_{0} \] с корнем \[ a \] , что \[ F \] является подграфом дерева \[ T_{0} \] . Иначе говоря, ЧГД - это корневое дерево, которое можно достроить до геодезического дерева с тем же корнем.
Пусть \[ V \] - множество всех вершин графа \[ G \] . Для множества \[ A\subseteq V \] через \[ \overline{A} \] обозначаем дополнение \[ A \] до \[ V \] .
Теорема 1. Пусть \[ T \] - ЧГД с корнем \[ a \] и множеством вершин \[ A \] в графе \[ G \] , \[ (x_{0},y_{0}) \] - ребро c наименьшим значением величины \[ \delta (x)+w(x,y) \] среди всех ребер \[ (x,y) \] , где \[ x\in A \] , \[ y\in \bar{A} \] . Тогда \[ T'={T\cup \{ (x_{0},y_{0} )\}} \] - ЧГД с корнем \[ a \] .
Доказательство.
Рассмотрим в дереве \[ T' \] путь \[ P' \] , соединяющий вершину \[ y_{0} \] с корнем \[ a \] . Он состоит из пути между вершинами \[ a \] и \[ x_{0} \] в дереве \[ T \] и ребра \[ (x_{0},y_{0}) \] , следовательно, .
\[ w(P')=\delta (x_{0} )+w(x_{0},y_{0}). \]Мы должны доказать, что он является кратчайшим путем между вершинами \[ a \] и \[ y_{0} \] в графе \[ G \] . Допустим, имеется путь \[ P \] между этими вершинами, такой, что.
\[ w(P) < w(P'). \]Пусть \[ (u,v) \] - первое ребро пути \[ P \] , у которого \[ u\in A \] , \[ v\in \overline{A} \] (считаем, что путь начинается в вершине \[ a \] ). Так как веса ребер неотрицательны, то
\[ w(P)\ge \delta (u)+w(u,v). \]Из (1), (2) и (3) следует неравенство \[ \delta (u)+w(u,v) < \delta (x_{0}) +w(x_{0},y_{0}) \] , противоречащее выбору ребра \[ (x_{0},y_{0}) \] .
Эта теорема показывает, что геодезическое дерево можно построить с помощью следующего алгоритма.
Алгоритм 1. Построение геодезического дерева для вершины \[ a \] .
- cоздать дерево \[ T \] из одной вершины \[ a \]
- \[ \delta (a):=0 \]
- \[ A:=\{ a\} \]
- while \[ A\ne V \] do
- cреди ребер \[ (x,y) \] , где \[ x\in A \] , \[ y\in \overline{A} \] , найти ребро \[ (x_{0},y_{0}) \] c наименьшим значением величины \[ \delta (x)+w(x,y) \] ;
- добавить к дереву \[ T \] вершину \[ y_{0} \] и ребро \[ (x_{0},y_{0}) \] ;
- \[ \delta (y_{0} ):=\delta (x_{0} )+w(x_{0},y_{0}) \]
Этот алгоритм очень похож на алгоритм Прима для построения оптимального каркаса. Единственное отличие между ними состоит в правиле выбора ребра, присоединяемого к строящемуся дереву на очередном шаге. В алгоритме Прима выбирается ребро наименьшего веса, а в алгоритме для построения геодезического дерева - ребро с минимальным значением величины \[ \delta (x)+w(x,y) \] . Ясно, что и оценка трудоемкости нового алгоритма будет такая же, как и для алгоритма Прима, то есть \[ O(n^{3}) \] . Подобно алгоритму Прима, этот алгоритм можно рационализировать, понизив тем самым оценку трудоемкости до \[ O(n^{2}) \] . Усовершенствованный алгоритм поиска кратчайших путей известен как алгоритм Дейкстры.