Пути в сетях

Способы задания графов

Упражнения

1. Задать графы G2 - G3 (см. рисунок 2.3) множествами их вершин и ребер. Сравнить графы G1 - G3 (см. пример 1).

2. Равны ли графы G1 - G2 на рисунке 2.5? Задать графы G1 - G3 множествами их вершин и ребер. Сравнить графы.

3. Определить дополнение графа G, если:

a) G - пятиугольник;

б) G - треугольник.

Выше мы познакомились с двумя способами описания графов: графическим, и в виде двух множеств вершин V и ребер Е, когда каждое ребро е Е определено парой инцидентных ему концевых вершин (v', v "). Рассмотрим другие способы, используемые в теории графов.

В общем, виде задать граф - значит, описать множества его вершин и ребер, а также отношение инцидентности. Для описания вершин и ребер достаточно их занумеровать. Пусть v1, v2,..., vj...,vn - вершины графа G: е1, е2,..., еj,..., ет ребра. Отношение инцидентности задается:

1) матрицей инцидентности || ||размера т хn: по вер­тикали и горизонтали указываются вершины и ребра соот­ветственно, а на пересечении i-й вершины и j-го ребра в случае неориентированного графа проставляется 1, если они инцидентны, и 0 — в противном случае, т.е.

=

а в случае орграфа: -1, если вершина является началом ребра, 1 - если вершина является концом ребра, и 0 - если вершина и ребро не инцидентны; если некоторая вершина яв­ляется для ребра и началом, и концом (т.е. ребро - петля), проставляется любое другое число, например 2, т.е.

2) скам ребер графа, представленным двумя столбца­ми: в левом перечисляются все ребра еi Е, а в правом -инцидентные ему вершиныдля н-графа порядок вершин в строке произволен, для орграфа первым стоит номер начала ребра;

3) атрицей смежности |||| - квадратной матрицей размера п х п: по вертикали и горизонтали перечисляются все вершины , а на пересечении k-й и l -й вершин в случае н-графа проставляется число, равное числу ребер, соединяющих эти вершины; для орграфа равно числу ре­бер с началом в k- йвершине и концом в l- й.

Если два графа равны, то их матрицы совпадают. Если в графе поменять нумерацию вершин, матрицы (и список ребер) в общем случае изменяются, т.е. вид матриц и списка ребер зависит от нумерации вершин и ребер графа. Строго говоря, граф считается полностью заданным, если нумера­ция его вершин зафиксирована. Графы, отличающиеся только нумерацией вершин, являются изоморфными. Проверка изоморфности графов - в общем случае трудоемкая задача.

Пример 1. Задать матрицами инцидентности и смежности, а также списком ребер графы G1, G3 (см. рисунок 2.6).

Матрицы инцидентности графов G1 и G3 приведены на рисунке 2.7. В матрице инцидентности в каждом столбце только два элемента, отличных от 0 (или один, если ребро - петля).

Рисунок 2.7

Список ребер является более компактным описанием графа. Список ребер орграфа G3 приведен на рисунке 2.8, для н-графа G1 он аналогичен, однако последовательность указания вершин здесь безразлична.

Рисунок 2.8

Матрицы смежности графов даны на рисунке 2.9.

Рисунок 2.9

2.4. Сети и их свойства[1]

(Кудрявцева А. Группа ПС-285)

Иногда возникает необходимость рассматривать графы, ребрам которых поставлено в соответствие некоторое число.

Ориентированный граф N = (V,D,a) где V – множество вершин графа, D – множество дуг графа, а a - функция из множества вершин графа в множество неотрицательных действительных чисел называется сетью.

Если е – дуга графа, то число a(е) в зависимости от контекста называется либо длиной, либо весом, либо пропускной способностью дуги. При изображении сети a(е) проставляется рядом с дугой е.

Для сетей можно обобщить понятие полустепени исхода и полустепени захода вершины. Пусть N = (V,D,a) – сеть, v – вершина этой сети. Полустепенью исхода v) вершины v называется сумма a(е) по всем дугам, исходящим из v, полустепенью захода v) вершины v – сумма a(е) по всем дугам, заходящим в v. Для сетей, так же как и для орграфов справедливо утверждение о том, что сумма полустепеней исхода и сумма полустепеней захода всех вершин совпадают.

Как и в случае орграфов, вершина сети v, для которой v)>0 и v)=0 называется источником, а вершина, для которой )>0 и )=0 – стоком.

Путь – этопоследовательность дуг, такая, что конец одной дуги является началом другой дуги.

Длиной пути называется сумма длин дуг, составляющих путь.

Длина кратчайшего (u,v)–путиназывается расстоянием d(u,v) от вершины u до вершины v. Если (u,v)–пути не существует, то d(u,v)=. Расстояние от u до u равно нулю.

Для сети N возникает задача нахождения расстояния d(u,v) для данных вершин u и v и соответствующего кратчайшего пути.

Задача о кратчайшем пути (ЗКП) между фиксированными вершинами формулируется следующим образом: в заданной сети N с двумя выделенными вершинами v0 и v найти кратчайший (v0,v)-путь.

Алгоритм Форда-Беллмана (2)

Данный алгоритм был предложен независимо Ричардом Беллманом (1958) и Лестером Фордом (1956).

Будем считать, что количество вершин n сети количества ребер m сети и в сети нет контуров отрицательной длины.

Первый этап – вычисление расстояний от v0 до всех остальных вершин.

Основная идея алгоритма Форда-Беллмана заключается в поэтапном вычислении кратчайших расстояний. Обозначим через dk(v) длину кратчайшего среди всех (v0,v) путей, содержащих не более чем k дуг. Тогда будут справедливы следующие неравенства:

.

Т.к. по предположению в графе нет контуров отрицательной длины, кратчайший (v,v0)-путь не может содержать более чем n-1 дуг. Поэтому величина дает искомое расстояние от v0 до v.

Для вычисления dn-1(v) достаточно последовательно вычислять dk(v) для всех k =1,…,n-1.

Значения d1(v) вычисляются просто:

d1(v) = d(v0,v) для всех v V.

Пусть значения dk-1(v) вычислены для всех v V. Легко видеть, что

dk-1(v) = min{dk(v), dk()+d(, v)|V}.

Организовать все эти вычисления можно с помощью всего лишь одномерного массива D длины n.Положив D[ v ] = d(v0,v) для всех вершин v V, будем иметь равенства

D[ v ] = d1(v).

Просматривая после этого вершины v, произведем пересчет значений D[ v ] по формуле

D[ v ] = min{D[ v ], D[] + d(, v)|V}.

После завершения первого пересчета значений D[ v ] для всех v, будем иметь неравенства D[ v ] d2(v). Повторив n-2 раза процесс пересчета D[ v ], будем иметь равенства D[ v ] = dn-1(v), т.е. D[ v ] дает расстояние от v0 до v.

Еще один алгоритм - алгоритм Дейкстры, названный в честь известного скандинавского специалиста по компьютерным наукам Дейкстры. Этот алгоритм вычисляет расстояние от фиксированной вершины v0 до всех остальных вершин сети и находит кратчайший путь более эффективно, чем алгоритм Форда-Беллмана. Алгоритм заключается в последовательном вычислении расстояний сначала до ближайшей к v0 вершине, затем до следующей ближайшей и т.д. (1)

Прежде, чем привести описание алгоритма, введем необходимые обозначения. Пусть N=(V,D,a) – сеть, v0 – фиксированная вершина этой сети, v1,…,vk – остальные вершины. Для i=1,…,k расстояние d(v0,vi) обозначим через d(vi). На множестве вершин введем двухместную функцию a(v,v’) следующим образом:

Описание алгоритма, кроме того, еще использует подмножество S множества вершин V.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: