- •Министерство образования и науки украины
- •Способы задания графов
- •Степени вершин графа
- •Сумма степеней всех вершин графа g четна и равна удвоенному числу ребер.
- •Экстремальные графы
- •Изоморфизм графов.
- •Подграфы
- •Независимые множества
- •Доминирующие множества
- •Задание к лабораторной работе
- •Контрольные вопросы
- •Например:
- •Длина маршрута – количество ребер, входящих в данный маршрут, каждое ребро учитывается столько раз, сколько раз оно входит в маршрут.
- •Расстояние d(u,V) между двумя несовпадающими вершинами u и V – длина кратчайшей простой цепи, соединяющей эти вершины.
- •Матрица расстояний
- •Алгоритм Дейкстры
- •Алгоритм Форда
- •Алгоритм Флойда
- •Задание к лабораторной работе
- •Контрольные вопросы
- •Ярусная форма представления деревьев
- •Способы обхода деревьев
- •Остовы (наличие деревьев в произвольном графе)
- •Алгоритмы поиска остовов кратчайших маршрутов
- •Алгоритм Краскала
- •Алгоритм Прима
- •Задание к лабораторной работе
- •Контрольные вопросы
- •Гамильтоновы циклы
- •Алгоритм перебора Робертса и Флореcа
- •Задача коммивояжера и задача китайского почтальона
- •Задание к лабораторной работе
- •Планарность и раскраска
- •Теоретическая справка Плоские и планарные графы. Планарность
- •Теорема Жордана.
- •Теорема Эйлера для плоского графа.
- •Критерии планарности
- •Алгоритм плоской укладки графа
- •Алгоритм .
- •Характеристики не планарных графов
- •Раскраска графов
- •Теорема Кёнига
- •Алгоритм последовательной раскраски
- •Раскраска ребер
- •Задание к лабораторной работе
- •Приложение а Алгоритм генерации варианта
Алгоритм Дейкстры
В общем случае этот метод основан на том, что вершинам приписываются временные пометки. Пометки обозначают длины путей от начальной вершины s к данной вершине (причем временные пометки являются верхними границами длин путей). Величины этих пометок постепенно уменьшаются с помощью итерационной процедуры (т.е. процедуры, в которой постоянно повторяется некоторый набор операций). И на каждом шаге итерации одна из временных пометок становится постоянной (т.е. такой, которая обозначает точную длину кратчайшего пути от s к рассматриваемой вершине.
Рассмотрим этот алгоритм для случая, когда вес каждого ребра графа неотрицателен (cij 0, (i,j)).
Алгоритм :
Пусть l(xi) – пометка вершины хi.
Шаг 1. Положить l(s)=0 и считать эту пометку постоянной. Положить l(xi)=∞ для всех хis и считать эти пометки временными. Положить p=s.
Шаг 2. Для всех хi Г ( р ), пометки которых временные, заменить пометки в соответствии со следующим выражением:
l(xi)← min [l(xi), l(p)+c(p,xi)]
Шаг 3. Среди всех вершин со временными пометками найти такую, для которой
l(xi* )= min [l(xi)]
Шаг 4. Считать пометку вершины хi* постоянной и положить р=хi*.
Шаг 5. Если p=t, то l(p) является длиной кратчайшего пути. Если pt, то перейти к шагу 2.
Как только длины кратчайших путей будут найдены, сами пути можно получить при помощи рекурсивной процедуры с использованием соотношения, т.к. вершина xi’ непосредственно предшествует вершине xi в кратчайшем пути от s к xi, то для любой вершины xi соответствующую вершину xi’ можно найти как одну из оставшихся вершин:
l(xi’)+c(xi’,xi)=l(xi)
Алгоритм Форда
Задача о кратчайшем пути состоит в нахождении кратчайшего пути от заданной начальной вершины sX до заданной конечной вершины tX, при условии что такой путь существует. Элементы сij матрицы весов CG могут быть положительными, отрицательными или нулями.
Все циклы в графе G имеют неотрицательный суммарный вес.
Пусть l k (xi) – пометка вершины хi в конце (k+1)-й итерации, Г(s)-множество вершин, смежных с s.
Шаг 1.Положим S=Г(s), k=1, l1(s)=0, l1(xi)=c (s,xi) для всех хiГ(s) и l1(xi)= для всех остальных xi.
Шаг 2.Для каждой вершины xi s) (xis) изменить ее пометку следующим образом :
l k+1 (xi) = min [ l k (xi), min { l k ( xj ) + c ( xj, xi ) } ],
x j Ti
где T i = Г –1 ( x i ) S
Шаг 3. Если k<= n-1 и l k+1 ( x i ) = l k ( x i ) для всех хi , то пометки равны длинам кратчайших путей.
Если k< n-1 и lk+1(xi)lk(xi) для некоторой вершины xi , то перейти к шагу 4.
Если k= n-1 и l k-1 (xi)lk(xi) для некоторой вершины xi , то в графе существует цикл отрицательного веса и задача не имеет решения.
Шаг 4. Обновить множество следующим образом :
S = { x i \ l k+1 ( x i ) l k ( x i ) }
Шаг 5. Положить k=k+1 и перейти к шагу 2.
Алгоритм Флойда
Метод базируется на использовании последовательности из n преобразований (итераций ) начальной матрицы весов С. При этом на к-той итерации матрица представляет длины кратчайших путей между каждой парой вершин с тем ограничением, что путь между xi и xj (для любых xi и xj) содержит в качестве промежуточных только вершины из множества: {x1,x2,.........,xn}.
Все циклы в графе G имеют неотрицательный суммарный вес.
Шаг 1.Положить к=0.
Шаг 2. к=к+1
Шаг 3.Для всех ik, таких ,что сi k,и для всех jk, таких,что с k j ,введем операцию:
c i j = min [ c i j , ( c i k + c k j ) ]
Шаг 4. Если c i j <0 ,то в графе существует цикл отрицательного веса, содержащий вершину x i , и решения нет.
Если все c i j>=0 и k = n , то получено решение и матрица дает длины всех кратчайших путей.
Если все c i j >=0 но k<n , то вернуться к шагу 2.