Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 14 Графы .doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
129.54 Кб
Скачать

Лекция № 14

Связность

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

Теорема. Граф связен тогда и только тогда, когда его нельзя представить в виде объединения двух графов.

Пусть G(V,E) – связный граф, u и v – две его несмежные вершины. Две цепи < u, v > называются вершинно-непересекающимися, если у них нет общих вершин, отличных от u и v.

Теорема (Менгера). Пусть u и v – несмежные вершины в графе G. Наименьшее число вершин в множестве, разделяющем u и v равно наибольшему числу вершинно-непересекающихся простых <u,v>-цепей:

max|P(u,v) | = min|S(u,v)|

Кратчайший путь между двумя заданными вершинами s и t

Матрица весов

Пусть G= <X,Г> граф, дугам которого приписаны веса, задаваемые матрицей веса C = [cij] имеющий вид:

x1

xn

x1

c11

c1n

xn

cn1

cnn

Неотрицательная матрица весов

Если матрица весов неотрицательна cij ≥ 0 , то кратчайший (s-t)-путь определятся наиболее эффективно алгоритмом Дейкстра.

Общие замечания.

1. При реализации алгоритма Дейкстра вершинам приписываются временные пометки.

2. Пометка вершины равна верхней границе длины пути от s к этой вершине.

3. Для алгоритма Дейкстра строится некоторая итерационной процедура.

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

6. Эта постоянная величина является точной длиной кратчайшего пути от s до рассматриваемой вершины.

Эта итерационная процедура является алгоритмом нахождения кратчайшего расстояния от s до рассматриваемой вершины. Среди таких алгоритмов рассмотрим алгоритм Дейкстра и алгоритм Беллмана.

Алгоритм Дейкстра (cij ≥ 0)

Этот алгоритм применяется, когда элементы матрицы весов неотрицательны.

Обозначим пометку вершины xi через l(xi).

Алгоритм состоит из трех блоков:

- присвоение начальных значений;

- обновления пометок;

- перевод пометок из временных в постоянные.

I. Присвоение начальных значений

Шаг 1. Вершину, от которой ведем отсчет, обозначим через s.

Положить l(s) = 0 и считать эту величину постоянной, т.е. это - постоянная пометка.

Положить l(xi) = ∞ для всех xis и считать эти пометки временными.

Положить p = s, где p – номер вершины, помеченной постоянной меткой.

II. Обновление пометок

Шаг 2. Для всех пометки, которых временные изменить пометки в соответствии со следующим выражением:

III. Перевод пометок из временных в постоянные.

Шаг 3. Среди всех вершин с временными пометками найти такую, для которой

Шаг 4. Считать пометку вершины постоянной и положить

Шаг 5 (i)(Если надо найти лишь путь от s к t ). Если p = t, то l(p) является длиной кратчайшего пути.

Останов

Шаг 5 (ii)(Если требуется найти пути от s ко всем остальным вершинам). Если все вершины отмечены как постоянные, то эти пометки дают длину кратчайших путей.

Останов

Если некоторые пометки являются временными перейти к шагу 2.

Доказательство (набросок).

Допустим, что на некотором этапе постоянные пометки дают длины кратчайших путей. Пусть S1 – множество вершин с этими пометками, а S2 - множество вершин с временными пометками. В конце шага 2 каждой итерации временная пометка l(xi) дает кратчайший путь от s к xi, проходящей полностью по вершинам множества S1.

Пример. Рассмотрим смешанный граф с 9 вершинами.

x2 x3

x7

x4

x1

x9 x6

x8 x5

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