Файл: Цой, С. Синтез оптимальных сетей в системе управления горными предприятиями.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 21.10.2024

Просмотров: 106

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

строки R таблицы не встречался, поэтому # 4=

3

помеща­

ем в четвертый

столбец

строки R, а сумму

длины звена

1-»-2-»-5 и веса дуги и53, т. е.

3 3 + (— 20 )= 13,— в

(Л-)-1 )-ю

строку четвертого столбца таблицы как длину звена 1 —

->5-^3.

 

 

 

 

 

 

остальные

Продолжая аналогичный процесс, заполним

столбцы таблицы 2.2. В результате в строке R будут записа­

ны все промежуточные узлы

первого

найденного пути, а

соответствующая

длина всех

звеньев пути — в строке (Л +

+ !)• В последнем

заполненном столбце (табл.

2 .2 ) строки

(Л +1) указана

величина

78,

равная

длине

элементарного

пути 1—>2->5—>3->4->6. При поиске этого пути не было об­ наружено ни одного контура.

Шаг 3. Поиск разветвлений пути от а до Ъ. Действия ша­ га 2 позволяют определить только один элементарный путь между вершинами а и Ь. Чтобы найти все остальные пути между а и Ь, рассмотрим разветвления предыдущего пути. Изложим действия этого шага на примере (рис. 2.1, табл.

2 . 1 ).

На шаге 2 установлен путь 1->-2->5-»-3-»-4->-6. Начнем отыскивать разветвление этого пути с конца, с предпослед­ ней вершины #5 = 4 (табл. 2.2). Путь от вершины Х\ = а до

#5 = 4 включительно считаем известным и ищем его продол­ жение так же, как на шаге 2 , с той лишь разницей, что в четвертом столбце таблицы 2 .1 из последней заполненной клетки выбираем не вершину 6, а вершину 1 , находящуюся на строку выше, чем #6 = 6. Другими словами, мы условно принимаем #6 за вершину контура и поступаем далее так же, как это делали на шаге 2 при появлении контура.

Согласно изложенному, для вершины # = 1 необходимо проверить условие существования контура. Первая верши­ на #i = l на отрезке пути 1->2->5—>~3->4 уже встречалась. Поэтому в четвертом столбце таблицы 2.1 исследуем верши­ ну 3, расположенную на строку выше, чем вершина 1. Вер­ шина 3 также не может служить очередным узлом второго пути, так как она уже была включена ранее в отрезок 1->-2->-3->-4 предыдущего пути. В четвертом столбце (табл. 2.1) все элементы уже рассмотрены. Это означает, что вто­ рой путь нельзя получить разветвлением от узла 4, поэтому попробуем найти ветвление от узла 3, предшествующего уз­ лу 4 в предыдущем (первом) пути (табл. 2.2).

Теперь, зная отрезок пути 1-»-2—>-5-»-3 , попытаемся опре­ делить разветвление от узла 3. При этом вершину 4 (табл. 2 .2 ) условно примем за вершину контура и повторим дейст­ вия шага 2. В третьем столбце таблицы 2.1 рассмотрим вер­ шину 2, которая находится на строку выше, чем вершина 4,

39



и проверим для нее условие контура. Вершина 2 в отрезке пути 1->2-»-5—»-3 уже есть, поэтому в третьем столбце на строку выше исследуем вершину х = 1 , которая в пути 1 —»- —>2->5— тоже имеется. Теперь остается проверить в треть­ ем столбце только вершину х= 5. Но вершина 5 в оставлен­ ной части пути также существует. Следовательно, от верши­ ны 3 разветвление найти нельзя. Теперь, считая известной часть пути 1—>-2—>-5, пробуем искать ветвление от вершины 5. Условно принимаем x^=S за вершину контура и в пятом столбце анализируем вершину 6, расположенную на строку выше, чем вершина 3. Вершина 6 может служить продолже­ нием пути 1-*-2->-5. Кроме того, она совпадает с вершиной

Таблица 2 3

R

 

X - 2

X =5

X f 6

 

2

 

R+i

0

30

33

48

Ь = 6 . Таким образом, определен второй путь 1->2->5-^6, по­ лученный ветвлением предыдущего (первого) пути. Длина этого пути 48 есть сумма длины 33 звена 1->2->5 и веса ду­ ги use, равного 15.

Второй путь помещен в таблице 2.3. Третий путь ищем ветвлением второго пути от вершины #з= 5. Весь процесс повторяем заново. Считаем известным отрезок пути 1—>-2—>-5. Принимаем условно Х4 = 6 за вершину контура и в пятом столбце таблицы 2 .1 рассматриваем вершину 2 , лежащую на строку выше, чем вершина контура 6. Вершина 2 в отрез­ ке пути 1—>-2—>-5 уже есть. Поскольку в пятом столбце выше вершины 2 ничего нет, то ветвление от узла невозможно. Попытаемся найти его от вершины 2.

Считаем установленным отрезок пути 1—>-2 и принимаем условно вершину 5 за вершину контура. Во втором столбце таблицы 2 .1 анализируем вершину, расположенную на стро­ ку выше, чем вершина 5. Такой вершиной будет а = 1 . По­ скольку в отрезке пути 1 - > 2 она уже есть, то во втором столб­ це возьмем вершину 3, находящуюся на строку выше пер­ вой. Вершина 3 может служить продолжением пути 1—>-2. Поэтому во втором столбце таблицы выбираем в правом нижнем углу клетки длину дуги Пгз, равнуюЮ, и суммируем с длиной звена 1—^2: 30+10 = 40.

Третий путь будем фиксировать в таблице 2.4. Вершину 3 поместим в строке R, а длину звена 1->-2->-3, равную 40,— в строке Д + 1. В нашем случае вершина 3, взятая из второ­

40


го столбца таблицы 2 .1 , не приводит к контуру, поэтому рассмотрим третий столбец и выберем в нем из последней заполненной клетки вершину 4 и вес дуги И34, равный 5.

Поскольку вершина 4 в найденный отрезок пути 1—>-2->3 не включена, то в таблице 2.4 в строку R заносим 4, а в строку — величину 4 0 + (— 5) = 35 как длину звена 1—>-2->-3->-4. Далее исследуем в четвертом столбце таблицы 2 .1 в последней заполненной клетке вершину 6, которая, очевидно, является замыкающей в третьем пути 1—>2->3—>- ->4->6. Длиной этого пути будет величина 105 (табл. 2.4). Четвертый путь следует определять разветвлением третьего

пути.

 

 

 

Таблица 2 .4

е *

x r - i

J

Xs - B

 

 

J

 

0

3 0

10 5

 

 

 

4

Продолжая аналогичный поиск, можно найти все осталь­ ные пути между выбранными вершинами а = 1 и Ъ= 6 :

l-^ 2

-> 3 —>5—>6 c длиной

75

l-> 4 -*6

»

71

l->4->3->2->5-^6

»

14

l->4->3_>5->6

»

41

l-> 3 —>4->6

»

67

l-*3 -> 2 ^ 5 -> 6

»

10

1 ^ 3 > 5 - > 6

»

37

Действие алгоритма заканчивается

тогда,

когда в столбце

а = 1 таблицы 2 .1 рассмотрены все элементы.

При определении всех путей графа сравнением можно найти путь максимальной или минимальной длины, или те

из них, которые лежат в интервале

[с, d]. Для этого, зная

длину L очередного пути, нужно

проверить выполнение

следующих неравенств:

 

L ^ c

(2.1)

>

L ^ d

 

41


При соблюдении условий (2.1) длина установленного пути будет лежать в интервале [с, d].

Следует отметить, что в качестве вершин а и Ъмогут быть взяты любые из вершин графа и тем самым определены все возможные пути на графе. Если в шаге 1 при составлении таблицы 2 .1 учитывать только дуги, выходящие из каждой вершины, то с помощью изложенного алгоритма можно най­ ти пути, в которых движение осуществляется по направле­ нию стрелок. Предлагаемый нами метод позволяет опреде­ лять пути максимальной длины в любом мультиграфе. Этим методом можно воспользоваться, если какая-либо часть пу­ ти предварительно задана и для нее нужно найти продолже­ ние — экстремальный путь между вершинами а и b (имеет­ ся в виду, что в заданную часть вершины а и & не входят). Для такого случая ранее описанные методы не пригодны.

К недостаткам рассматриваемого алгоритма следует от­ нести большой объем промежуточных вычислений для руч­ ного счета. Это обусловлено прежде всего наличием в графе контура, поэтому метод целесообразно применять для поис­ ка минимальных и максимальных элементарных путей в графах с контурами. Если учесть, что каждая вершина гра­ фа при реализации алгоритма анализируется только один раз при поиске любых путей, то предложенный алгоритм можно рационально реализовать на ЭВМ.

§ 3. РЕАЛИЗАЦИЯ АЛГОРИТМА НА ЭВМ

Информация о дугах графа задается неупорядоченным множеством кодов (строк), составляющих некоторое множе­ ство L :

i, i, CLij.

(2 .2)

Здесь i и j означают номера вершин, ai3 — вес дуги uijt на­ правленной от z-й вершины к j-й. При такой записи под каж­ дую из составляющих i, j, ai7может быть занято три деся­ тичных разряда (имеется в виду, что код (2 .2 ) помещен в одну 36-разрядную ячейку ЭВМ). Таким образом, каждая из составляющих (2 .2 ) может принимать максимальное зна­ чение, равное 999. Начальные условия задачи могут зада­ ваться одним из трех способов:

1)определение на графе между узлами а и Ъпутей (це­ пей) минимальной длины или всех путей и их длин;

2)нахождение на графе между узлами й и Ь пути мак­ симальной длины или всех путей и их длин;

3)установление на графе между узлами а и Ь всех пу­ тей (цепей), длина которых лежит в заданном интервале.

42