Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги / Математические методы принятия решений

..pdf
Скачиваний:
2
Добавлен:
13.11.2023
Размер:
22.94 Mб
Скачать

Ш аг 1. Для

источника остается постоянная пометка О, для

узла

2 временная

пометка с\2 = 1450, для узла 3 сц = 2750, для

узла

4 с\4 = 3850, для узла 5 c\s = 4750. Для остальных узлов вре­

менные пометки равны оо. Последним из постоянно помеченных узлов является узел 1 (единственный, иначе надо было взять узел

сминимальной пометкой).

Шаг 2. С узлом 1 непосредственно связаны узлы 2 ,..., 5. Им

припишем новые временные пометки, равные 82 = 0 + с\2 = 1450, 83 = 0 + ci3 = 2750, 84 = 0 + си = 3850, 85 = 0 + С15 = 4750 соответ­ ственно. Поскольку величина 82 минимальна из всех, то узлу 2 припишем постоянную пометку 82 = 1450.

Ш аг 3. Рассмотрим движение из узла 2; оставляем постоянные пометки 0 для узла 1 и 1450 для узла 2. Узлам 3, . . . , 6 , непосред­ ственно связанным с узлом 2 , припишем соответственно времен­ ные пометки 83 = ев = 2750, 84 = С14 = 3850, 85 = С15 = 4750, 8б = = ci6 = 6900, минимальные из возможных временных пометок при движении из узла 1 в узлы 3 ,...,б . Например,

83 = 82 + С2з = 1450 + 1700 = 3150 > 2750, 84 = 1450 + 3200 = 4650 > 3850,

Выбираем 83 = 2750, 84 = 3850,.. .Остальным узлам припишем временные пометки, равные оо.

Ш аг 4. Поскольку минимальное значение временных поме' ток 83, 84, 85, 8б равно 2750, узлу 3 припишем постоянную пометку 83 = 2750.

Дальнейшие шаги повторяем аналогично шагам 3 и 4. Результа­ ты вычислений сведем в табл. 3.2.

Обратим внимание на выбор временной пометки 8б на шаге 9 (см. табл. 3.2). Последняя постоянная пометка 85 = 4750 присвоена узлу 5, тогда для узла б временная пометка будет 8б = 85 + cs$ = = 4750 + 2075 = 6825 < 6900 (временная пометка &б на шаге 8). По­ этому на шаге 9 берут минимальное значение 8б = 6825.

Из решения задачи следует, что минимальные общие затраты на покупку и содержание автомобиля составляют за рассмотрен­ ный период 11 250 уел. ед. Кратчайшая цепь состоит из дуг, для каждой из которых разность между значениями постоянных по­ меток ее концевых узлов равна длине этой дуги: [8Д = [8*] + су.

 

 

 

 

 

 

 

 

Таблица 3 .2

 

 

Результаты вычислений по алгоритму Дейкстры

 

Шаг

1

2

3

4

5

6

7

8

9

0

[0]

оо

оо

00

00

оо

00

оо

00

1

[0]

1450

2750

3850

4750

оо

00

оо

00

2

[0]

[1450]

2750

3850

4750

00

00

оо

оо

3

[0]

[1450]

2750

3850

4750

6900

оо

оо

оо

4

[0]

[1450]

[2750]

3850

4750

6900

00

оо

ОО

5

[0]

[1450]

[2750]

3850

4750

6900

8550

оо

ОО

6

[0]

[1450]

[2750]

[3850]

4750

6900

8550

оо

ОО

7

[0]

[1450]

[2750]

[3850]

4750

6900

8550

10000

ОО

8

[0]

[1450]

[2750]

[3850]

[4750]

6900

8550

10000

ОО

9

[0]

[1450]

[2750]

[3850]

[4750]

6825

8550

10000

11250

10

[0]

[1450] [2750] [3850] [4750] [6825]

8550

10000

11250

И

[0]

[1450] [2750] [3850] [4750] [6825]

8550

10000

11250

12

[0]

[1450] [2750] [3850] [4750] [6825] [8550]

10000

11250

13

[0]

[1450] [2750] [3850] [4750] [6825] [8550]

10000

11250

14

[0]

[1450] [2750] [3850] [4750] [6825] [8550] [10000]

11250

15

[0]

[1450] [2750] [3850] [4750] [6825] [8550] [10000]

11250

16

[0]

[1450]

[2750]

[3850]

[4750]

[6825]

[8550]

[10000]

[11250]

Последнее соотношение можно использовать рекурсивно, двига­ ясь от стока t к источнику s. Определив узел, непосредственно предшествующий t в кратчайшей цепи, будем повторять данную процедуру до тех пор, пока не достигнем узла s. В нашем случае первое значение Cÿ, совпадающее с разностью между значениями постоянных пометок, равно 6500, т. е. узел 5 непосредственно пред­ шествует стоку t (узлу 9) в кратчайшей цепи. Следующим узлом кратчайшей цепи (и исходным) будет узел 1. Отсюда для миними­ зации общих затрат автомобиль следует заменять в начале первого, пятого и девятого годов.

§ 3.3. Задача о многополюсной кратчайш ей цепи

Рассмотрим задачу нахождения кратчайших цепей между всеми парами узлов сети. Кратчайшей цепью между двумя произвольны­ ми узлами является цепь, стоимость единицы потока по которой минимальна. Поскольку направление потока в неориентированных

дугах нельзя определить заранее, то каждую такую дугу следует заменить двумя ориентированными дугами с противоположными направлениями и длинами (стоимостями), равными длине неори­ ентированной дуги. Предполагается, что длины дуг могут быть как положительными, так и отрицательными. Однако длина, или стоимость, каждого цикла или контура должна быть неотрица­ тельной. Алгоритм решения данной задачи разработан Флойдом. Пусть N = {1,2,..., п} — множество узлов, a Cÿ — количественный параметр (длина, стоимость) дуги (г, j), направленной от узла г

кузлу j. Обозначим через d*k длину кратчайшей цепи из узла г

вузел к.

Алгоритм Флойда заключается в следующем. Первоначально за длину dik кратчайшей цепи между двумя произвольными узла­ ми г и к (между которыми могут быть и промежуточные узлы) принимают длину дуги (г, к), соединяющей эти узлы. Затем после­ довательно проверяют всевозможные промежуточные узлы, рас­ положенные между г и к. Если длина цепи, проходящей через некоторый промежуточный узел, меньше текущего значения dik, то переменной dik присваивают новое значение; если dik > dij + djk, то значение dik заменяют значением dtJ + djk. Такую процедуру по­ вторяют для всевозможных пар узлов, пока не будут получены все значения dik-

В алгоритме Флойда начальным значением переменной dik яв~ ляется величина Cij, а затем данная оценка последовательно улуч­ шается до тех пор, пока не будет найдена кратчайшая цепь между узлами i и к. Алгоритм Флойда позволяет решать задачу о много­ полюсной кратчайшей цепи (пути) для сети из п узлов за п итера­ ций. Обозначим через dJik оценку длины кратчайшей цепи из узла г в узел к, полученную на j -й итерации, и рассмотрим следующую задачу.

Задача. Необходимо соединить восемь объектов многополюсной цепью кратчайшей длины, причем один из объектов (узел 8) может быть только направляющим информацию, а остальные могут и направлять, и получать информацию без каких-либо ограничений (рис. 3.4). На рис. 3.4 каждый объект представлен узлом, а каждая линия —дугой. Ориентированные дуги соответствуют распредели­ тельным звеньям, которые могут быть использованы для передачи

информации только в указан­ ном направлении. Числа, при­ писанные дугам, соответствуют расстоянию между объектами и образуют матрицу ||cÿ||. Тре­ буется найти для каждого объ­

екта кратчайшие пути, связыва­

Рис. 3.4. Пример задачи о многопо­

люсной кратчайшей сети

ющие его с другими объектами.

 

Р е ш е н и е . Воспользуемся алгоритмом Флойда. Поскольку

п = 8, то число итераций в алгоритме будет равно восьми. На каж­ дой итерации строят матрицу Z)J = ||c(?fc|| длин кратчайших путей,

которые содержат текущие оценки

длин кратчайших цепей, где

D 0 = Цс^'Ц, и матрицу маршрутов

R?, служащую для нахожде­

ния промежуточных узлов (если таковые имеются) кратчайших цепей. На j -й итерации имеем матрицу В? = ||rffc||, где ^ — пер­ вый промежуточный узел кратчайшей цепи из г в А;, выбирае­

мый из множества

{1,2

гф j Ф к,

и матрицу R 0 4 * 4 1 .

где Æ = к. Узел т3.,

может быть получен из следующего соотно-

Чк

 

 

 

шения:

если

d3ik 1> d\j

1+ dJjk

г о ^

 

 

 

Ч к

в противном случае.

rik

 

Строим матрицу длин кратчайших цепей D 0 и матрицу марш­ рутов R 0, отсутствие связи помечаем знаком оо, нулем обозначаем связи внутри одного узла. Получаем

/ °

9 0 0 3 0 0

0 0

о о

о о \

 

f 1 2 3 4 5 6

7

9 0

2

о о

7 0 0

о о

о о

 

1 2 3 4 5 6

ОО

2

0 2

 

4

8

6

0 0

 

1 2

3 4

5

6

7

3 о о

2

0

0 0

о о

5 0 0

R° =

1 2

3 4

5 6

7

о о

7 4

0 0

 

0 10

0 0

,

1 2

3 4

5 6

7

 

о о

 

о о

о о

8 о о

10 0 7 о о

 

1 2

3 4

5

6

7

о о

о о

6

5

о о

7 0 о о

 

1 2

3 4

5

6

7

\ о о

о о

о о о о

 

9 12 10 0 /

 

\1 2 3 4

5

6

7

ОО

8

8

8

8

8

8

8/

И т е р а ц и я 1. Выбираем базовый узел j = 1. В матрице D 0 вычеркиваем первую (базовую) строку и первый (базовый)

столбец. Чтобы определить, приведет ли использование узла 1 к более коротким цепям, необходимо исследовать элементы мат­ рицы D 0 с помощью трехместной операции:

d\k= minKfc_1; dijX+ djk1}’ гф]фк.

Если d3k = оо, т. e. j -й элемент базового столбца равен оо, то dfk=

= djk l Если djk l = оо, т. e. j -й элемент базовой строки равен оо,

то d3ik 1= d3ik. Если d3ik 1 Ф оо и одно из двух значений d^ или djk

превосходит d?k 1, то замену также производить не следует. Столб­ цы 3, 5, 7 и 8 содержат элементы, равные оо и принадлежащие базовой строке. Строки 3 ,5 , ... , 8 также содержат элементы, рав­ ные оо и принадлежащие базовому столбцу. Значит, исследовать необходимо элементы d%2, d$4, d42, dj^. Поскольку диагональные элементы можно не рассматривать, необходимо исследовать лишь оценки <^24 и d42. С помощью трехместной операции получим

d\ 4

=

т т { ^ 24;

+

^i°4} =

min{oo; 9 + 3}

=

12,

d\ 2

=

т т { ^ 42; d41 +

d\2) =

min{oo; 3 + 9}

=

12.

Оценки db и d\ 2 лучше оценок d^ 4 и d\ 2 и должны быть вне­

сены в матрицу D 1, а в матрице маршрутов надо положить r24 = j,

г24 = 1 и r42 = 1. Остальные элементы матриц D 0

и R 0

остаются

без изменений. Получим

 

 

 

 

 

 

 

 

 

 

 

/ °

9

00

3 оо оо оо

 

/1 2 3 4 5 6 7 8 \

9

0

2

12 7 00 оо 00

1 2 3 1 5 6 7 8

00

2

0

2

4

8

6

00

1 2

3

4

5 6

7

8

3

12

2

0

00

00

5

00

1

1 3

4

5

6

7

8

оо

7

4

00

0

10

 

,

я 1 =

 

3

4

5

6

7

8

оо оо

1 2

00 00 8

оо 10

0

7

00

1 2

3

4

5

6

7

8

00 оо 6

5

00

7

0 00

1 2

3

4

5

6

7

8

\о о

00

00

оо

9

12

10

0 /

\1

2

3

4

5

6

7

8/

И т е р а ц и я

2. Определим узел 2 как базовый, т.е. проверим,

приведет ли его использование к более коротким цепям, и выделим в матрице D 1 вторую строку и второй столбец. Здесь столбцы 6, 7, 8 содержат элементы, равные оо и принадлежащие базовой строке,

а строки 6, 7, 8 —элементы, равные оо и принадлежащие базовому столбцу. Столбцы и строки 6, 7, 8 не рассматриваем. Исключа­ ем и диагональные элементы. Остается исследовать лишь элементы d\3, d\4, d\5, d\j, d34, d\5, d\ ,, d\3, d\5, dl5l, d\3, d\4. Нетрудно проверить, что здесь улучшены могут быть только оценки d{3, d\5, d31, d45, djj, d34, равные oo:

d23 = m in{d|3;d {2 + d23} = min{oo; 9 + 2} = 11,

 

 

 

di5 = min{d}5; d\2 + d\5} = min{oo; 9 + 7} = 16,

 

 

 

d31 = min{d31; d\ 2 + d2i} = min{oo; 2 + 9} =

11,

 

 

 

dA5 = т т { ^ 45; d\ 2 + ^25} = min{oo; 12 + 7} =

19,

 

 

d31 = m inld^; d\ 2 + ^21} = niin{oo; 7 + 9} =

16,

 

 

 

dj4 = т т { < 4 4; d\ 2 + ^ 4} = min{oo; 7 +

12} = 19.

 

 

Таким

образом, rj3 = rf5 = r3l = r\ 5 = r 31 = r\A = 2;

остальные

элементы

матрицы

R 2

остаются

без изменения. Новые матрицы

имеют вид

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

/ °

9

 

11 3 16 00 оо о о \

 

2

2 4

2 6

7

8 \

 

 

2 12 7 00 оо оо

1 2

3 1 5 6

7

8

9 0

 

11 2

 

0 2 4 8 6 оо

2 2

3 4

5 6

7

8

3 12

 

2 0 19

оо

5 оо

1 1 3 4

2 6

7

8

16 7

 

4

 

 

 

 

, R 2 =

 

3 2

5 6

7

8

 

19 0 10 оо оо

2 2

оо

8 оо

оо 10 0 7 оо

1 2

3 4

5 6

7

8

оо

6

5

оо оо

7 0 оо

1 2

3 4

5 6

7

8

\о о

оо

 

оо

оо

9

12

10

0 )

\1

2

3

4

5 6

7

8/

И т е р а ц и я

3.

Определяем,

приведет

ли

использование

уз­

ла 3 к более коротким цепям. Берем узел

3 в качестве базового

и выделяем 3-ю строку

и 3-й столбец в

матрице

D 2. Исключа­

ем диагональные элементы, элементы 8-го столбца и 8-й строки, исследуем оставшиеся элементы матрицы D 2, получим новые мат­ рицы D 3 и R 3.

Аналогично получаем матрицы ZP и RP, j = 4 , ... , 8. Матри­ цы D i, R i, j = 5 , . . . , 8, остаются без изменений. Следовательно, оптимальное решение соответствует матрицам D 5 и R 5, определя­ ющим и оптимальное расстояние для передачи между объектами,

и последовательность передачи информации:

 

 

 

 

 

 

 

 

 

/ °

7

5

3

9

13

8

°°\

(\

4

4

4

4

4

4

8\

 

0

2

4

6

10

8

ОО

4 2 3 3

3 3

3

8

 

7

 

5

2

0

2

4

8

6

оо

4 2 3 4

5

6

7

8

 

3

4

2

0

6

10

5

ОО

1 3

3

4

3

3

7

8

D 5 =

9 6 4 6 0 10 10 оо , R 5 =

4

3

3

3

5

6

7

8

 

13 10 8 10

10 0

7

оо

4

3

3

3

5

6

7

8

 

8 8 6 5

10 7

0

оо

4

3

3 4

3

6

7

8

 

\18

5

13

15

9

12

10

0 /

\5

5

5

5

5

6

7 8/

Например, определим кратчайшую цепь из узла 1 в узел 5.

По матрице D 5

определяем,

что

длина этой

цепи

d\ 5 = 9.

Что­

бы найти соответствующую последовательность узлов, рассмотрим матрицу R 5. Имеем г^5 = 4, т.е. узел 4 является первым промежу­ точным узлом в кратчайшей цепи из узла 1 в узел 5. Теперь опре­ делим, какой узел следует за узлом 4 в кратчайшей цепи из узла 4 в узел 5. Поскольку г\ь = 3, то за узлом 4 следует узел 3. Анало­ гично, за узлом 3 следует узел 5, так как г| 5 = 5. Следовательно, кратчайшая цепь из узла 1 в узел 5 определяется последовательно­ стью узлов 1, 4, 3, 5.

§ 3.4. Анализ сложности алгоритмов поиска кратчайш их путей

В алгоритмах Дейкстры (§3.2) и Флойда (§3.3) выполняются только две элементарные операции: сложение и сравнение.

Рассмотрим сеть, содержащую п узлов. В наихудшем случае в алгоритме Дейкстры конечный узел сети будет n -м по счету узлом, которому приписывают постоянную пометку. Пусть в неко­ торый момент работы алгоритма т узлам приписаны постоянные пометки, a m —п узлам — временные. Для определения + 1)-го узла, которому должна быть приписана постоянная пометка, необ­ ходимо вычислить п — т временных пометок, выполнив при этом каждый раз операции сложения и сравнения. После вычисления новых значений временных пометок необходимо также найти ми­ нимальное среди них, чтобы определить пометку, которая долж­ на стать постоянной. Данная процедура минимизации состоит

из п т —1 сравнений. Таким образом, если имеется т узлов с по­ стоянными пометками, то число элементарных операций, которое необходимо выполнить для того, чтобы еще одному узлу приписать постоянную пометку, равно 3(п —т) — 1 % 3(п —т). Общее чис­ ло элементарных операций, выполнение которых необходимо для завершения работы алгоритма в наихудшем случае, можно опреде­

лить по формуле

П—1

£

3(п —т ) = 3 У) (п — т) =

 

 

 

771=1

+ 1] =

3п(п —2)

 

= 3 [ ( п - 1 ) + ( п - 2 ) +

2

 

 

 

В алгоритме Флойда на каждой итерации суммарное число эле­ ментов, значение которых должно быть оценено с помощью трех­ местной операции, можно вычислить с учетом того, что:

1)общее число элементов матрицы равно п2;

2)суммарное число элементов в базовой строке и базовом столб­ це равно 2 п —1;

3)число нулевых элементов на главной диагонали равно п и для них не надо получать оценку;

4)один элемент базовой строки и один элемент базового столб­ ца расположены на главной диагонали;

5)анализ каждого элемента требует выполнения одной опера­ ции сложения и одной операции сравнения;

6)максимальное число операций, выполняемых на одной ите­ рации алгоритма, приблизительно равно 2п(п —3);

7)поскольку число итераций равно числу узлов п, общее число элементарных операций в алгоритме Флойда в наихудшем случае равно 2п2(п —3).

§3.5. Венгерский алгоритм задачи о назначениях

Впрактических приложениях часто необходимо:

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

так разместить датчики по объектам, чтобы информация о ра­ боте объектов была максимальной;

так распределить экипажи самолетов по рейсам, чтобы время

простоя техники было минимальным, и т. д.

Особенность этой задачи заключается в том, что каждый ресурс (рабочий, датчик, экипаж) используются ровно один раз и каждому объекту будет приписан ровно один ресурс.

Решение задачи может быть записано в виде двумерной матри­ цы X = ||Ху ||, г = 1, 2, . . . , т, j = 1, 2, . .. , т, где т — число объектов или ресурсов. Искомая переменная определяется следующим об­ разом:

1, если i-н ресурс назначается на j -й объект,

{0 в противном случае.

Критерий эффективности (целевая функция) задачи включает в себя элементы матрицы стоимостей Су- — затраты, связанные с на­ значением г-го ресурса на j -й объект. Для любого недопустимого назначения соответствующую ему стоимость полагают равной до­ статочно большому числу М . Допустимое решение задачи называ­ ют назначением. Для заданного значения m ресурсов и объектов существует т ! допустимых решений. Допустимое решение стро­ ят путем выбора ровно одного элемента в каждой строке матрицы

X= ||Ху || и ровно одного элемента в каждом столбце этой матрицы.

Взадаче о назначениях требуется минимизировать общую сто­ имость назначений, т. е. необходимо минимизировать функцию

771 771

/(х ) = ^ 2 cijxij

t = l j ' = l

при ограничениях:

а) каждый ресурс используется ровно один раз, т. е.

тп

2 ху = 1, г = 1, 2, . . . , т ; j =1

б) каждому объекту будет приписан ровно один ресурс, т. е.

771

Xij 1, J 1,1,..., тп.

i= 1

Очевидно, что задача о назначениях является частным случаем транспортной задачи при единичных значениях параметров сц н Ь{.

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

Задача. Разместить четыре датчика на четырех объектах таким образом, чтобы стоимость такого размещения была минимальна. Матрица стоимости назначений имеет вид

 

 

 

2

10

9

7

\

г

, _ п

и _

15

4

14

8

 

с

- I M

-

13

14

16

п

 

 

 

 

4

15

13

19 /

Р е ш е н и е . В процессе решения задачи о назначениях исполь­ зуют тот факт, что если к каждому элементу г-й строки добавляют действительное число уг, а к каждому элементу j-ro столбца—дей­ ствительное число bj, то минимизация целевой функции

3 г

эквивалентна минимизации функции

3

Ш аг 1 (редукция строк). Данный шаг предназначен для полу­ чения в матрице стоимости назначений возможно большего числа нулевых элементов. Для этого в каждой строке из всех элементов вычитают минимальный:

/ 0

8

7

5 \

11

0

10

4

2

3

5

0

0

11

9

1 5 /

Соседние файлы в папке книги