Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Mat.glava 3.doc
Скачиваний:
38
Добавлен:
13.11.2019
Размер:
1 Mб
Скачать

§5. Элементы теории графов

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

ОПРЕДЕЛЕНИЕ 1. Граф геометрически является фигурой, составленной из точек, называемых вершинами, соединенных между собой линиями, называемыми ребрами.

Пример 42. Граф Е

В

А D

G

C

F

Черт.23.

Вершины: A, B, C, D, E, F, G. Ребра: AB, AC, AD, BE, BF, CF, DE, DG, DF, EG, FG.

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

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

Путем в ориентированном графе с началом в вершине А и концом в вершине C называется последовательность ребер AB1, В1В2, ..., Вn1C, таких, что первое ребро имеет началом вершину А, а последнее ребро имеет концом вершину С, и начало каждого последующего ребра совпадает с концом предыдущего ребра. Путь задается либо как последовательность вершин (A,B12, ..., ВnC), либо как последовательность ребер AB1, В1В2 , ..., Вn1C. В случае, если начало и конец ребра совпадают, то ребро называется петлей.

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

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

Пример 43. Кровеносную и нервную систему человека можно представлять в виде графа.

Алгоритм Дейкстра для отыскания минимального пути

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

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

Пример 44. В таблице в первой строке заданы ребра графа (i, j) и во второй строке - веса w(i, j) этих ребер. работы сетевой модели и их продолжительности:

Ребро (i, j)

(0,1)

(0,3)

(1,2)

(1,3)

(1,4)

(3,2)

(3,4)

(2,5)

(4,2)

(4,5)

Вес w(i, j)

5

25

37

15

26

26

10

7

11

21

Требуется найти кратчайший путь из вершины 0 в вершину 5.

РЕШЕНИЕ. Сначала строится граф:

37

5 7

15 26 11

26 21

25

10

Черт. 24.

Строится вспомогательная таблица, которая описывает процесс присвоения числовых меток вершинам графа. В 1-м столбце помещены номера шагов построения (их число не превышает количество вершин). Остальные столбцы соответствуют вершинам графа, начиная с вершины 0.

Таблица 1.

Вершины

0

1

2

3

4

5

1

0Н

0

0

0

0

0

1-й шаг. Заполняется 1-я строка. Вершине 0 присваивается метка m(0) = 0,

остальным вершинам присваивается метка бесконечность: m(i) = . Из этих меток наименьшей является метка 0, она соответствует вершине 0, эта вершина выделяется, ее метка снабжается индексом Н(начало) и остается неизменной до конца таблицы.

Таблица 2.

Вершины

0

1

2

3

4

5

1

0Н

2

0

50

25

0

5

0

5

0

5

0

5

2-й шаг. Заполняется 2-я строка. Рассматривается множество вершин, смежных с выделенной вершиной 0: {1, 3}. Для этих вершин вычисляются новые метки следующим образом:

m(1) = min{m'(1), m'(0)+ w(0, 1)} = min{ , 0 + 5} = 5,

m(3) = min{m'(3), m'(0)+ w(0, 3)} = min{ , 0 + 25} = 25,

где m'(i) обозначает метку вершины i, взятую из предыдущей таблицы,

w(i, j)  вес ребра из вершины i в вершину j . Остальные метки сохраняются: m(i) = m'(i). Во 2-й строке наименьшей среди временных меток является m(1) = 5, поэтому вершина 1 выделяется, ее метка снабжается индексом 0 и остается неизменной до конца таблицы.

Таблица 3.

Вершины

0

1

2

3

4

5

1

0Н

2

0

50

25

3

0

5

42

201

31

0

5

20

0

5

20

0

5

20

3-й шаг. Заполняется 3-я строка. Рассматривается множество вершин, смежных с выделенной вершиной 1: {2, 3, 4}. Для этих вершин вычисляются новые метки:

m(2) = min{m'(2), m'(1)+ w(1, 2)} = min{ , 5 + 37} = 42;

m(3) = min{m'(3), m'(1)+ w(1, 3)} = min{ 25, 5 + 15} = 20;

m(4) = min{m'(4), m'(1)+ w(1, 4)} = min{ , 5 + 26} = 31.

Остальные метки сохраняются. В 3-й строке наименьшей среди временных меток является m(3) = 20, поэтому вершина 3 выделяется, ее метка снабжается индексом 1 и остается неизменной до конца таблицы.

Таблица 4.

Вершины

0

1

2

3

4

5

1

0Н

2

0

50

25

3

0

5

42

201

31

4

0

5

42

20

303

0

5

20

30

0

5

20

30

4-й шаг. Заполняется 4-я строка. Рассматривается множество вершин, смежных с выделенной вершиной 3: {2, 4}. Для этих вершин вычисляются новые метки:

m(2) = min{m'(2), m'(3)+ w(3, 2)} = min{ 42, 20 + 26} = 42;

m(4) = min{m'(4), m'(3)+ w(3, 4)} = min{ 31, 20 + 10} = 30.

Остальные метки сохраняются. В 4-й строке наименьшей среди временных меток является m(4) = 30, поэтому вершина 4 выделяется, ее метка снабжается индексом 3 и остается неизменной до конца таблицы.

Таблица 5.

Вершины

0

1

2

3

4

5

1

0Н

2

0

50

25

3

0

5

42

201

31

4

0

5

42

20

303

5

0

5

414

20

30

51

0

5

20

30

5-й шаг. Заполняется 5-я строка. Рассматривается множество вершин, смежных с выделенной вершиной 4: {2, 5}. Для этих вершин вычисляются новые метки:

m(2) = min{m'(2), m'(4)+ w(4, 2)} = min{ 42, 30 + 11} = 41;

m(5) = min{m'(5), m'(4)+ w(4, 5)} = min{ , 30 + 21 } = 51.

Остальные метки сохраняются. В 5-й строке наименьшей среди временных меток является m(2) = 41, поэтому вершина 2 выделяется, ее метка снабжается индексом 4 и остается неизменной до конца таблицы.

Таблица 6.

Вершины

0

1

2

3

4

5

1

0Н

2

0

50

25

3

0

5

42

201

31

4

0

5

42

20

303

5

0

5

414

20

30

51

6

0

5

41

20

30

482

6-й шаг. Заполняется 6-я строка. Рассматривается множество вершин, смежных с вершиной 2: {5}. Для вершины 5 вычисляется новая метка:

m(5) = min{m'(5), m'(2)+ w(2, 5)} = min{ 51, 41 + 7} = 48.

Остальные метки сохраняются. Во 6-й строке наименьшей среди временных меток является m(5) = 48, поэтому вершина 5 выделяется, ее метка снабжается индексом 2 и остается неизменной до конца таблицы.

Так как концевая вершина 6 стала выделенной, то вычисление меток прекращается, и строится искомый минимальный путь. Выписываются последовательно индексы выделенных вершин и добавляется номер концевой вершины: (0, 1, 3, 4, 2, 5). Эта последовательность описывает минимальный путь: 0  1  3  4  2  5. Его длина (или вес) равна 48 ед.

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