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

Дискретные задачи оптимизации в экономике, планировании и управлении. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
935 Кб
Скачать

Для 19 из 22 вершин была определена (предварительно или окончательно) длина оптимального маршрута от начального узла, и только последние 3 могли не быть рассчитаны как заведомо более удаленные от исходной вершины, чем целевая.

 

 

 

 

 

 

 

 

Таблица 5.5

 

Порядок расчета оптимального маршрута между вершинами 3 и 19

 

 

 

 

 

 

 

 

 

Узел j

D3j

Предшест. j

Очередь

 

Узел j

D3j

Предшест. j

Очередь

3

0

 

1

 

13

241,55

9

 

12

2

80

3

2

 

 

241,55

12

 

 

4

80

3

3

 

17

260,04

12

 

13

7

89,44

3

4

 

 

330,99

16

 

 

8

89,44

3

5

 

 

340,04

18

 

 

 

89,44

7

 

 

10

349,44

5

 

14

 

169,44

9

 

 

 

401,55

11

 

 

1

320,83

2

6

 

16

330,99

11

 

15

 

389,44

5

 

 

 

340,66

17

 

 

6

169,44

2

7

 

18

340,04

13

 

16

 

169,44

7

 

 

14

475,93

10

 

17

 

241,55

13

 

 

 

495,92

15

 

 

9

169,44

4

8

 

 

485,56

20

 

 

 

169,44

8

 

 

15

413,45

16

 

18

12

161,55

8

9

 

 

475,93

14

 

 

 

241,55

11

 

 

21

410,99

16

 

19

 

241,55

13

 

 

 

412,15

22

 

 

5

289,44

6

10

 

22

412,15

18

 

20

 

320,83

1

 

 

 

611,00

21

 

 

11

241,55

6

11

 

20

485,56

15

 

21

 

241,55

12

 

 

 

531,00

21

 

 

 

340,04

18

 

 

19

525,56

20

 

22

Показанные примеры как будто не свидетельствуют в пользу алгоритма Левита, хотя отсутствие выполнения операции минимизации нельзя сбрасывать со счетов. Он действительно показывал вычислительные преимущества на тестах большого размера. Однако речь шла скорее о поиске так называемой таблицы коммутаций, или «многополюсной кратчайшей цепи», – определении кратчайших расстояний между всеми парами узлов сети. Но в выполненной в Московском физико-техническом институте под научным руководством автора магистерской диссертации А.А. Якухнова (2012 г.) было показано, что на сгенерированных сетях высокой размерности (до 40 000 узлов) алгоритм Левита и эффективно реализованный алгоритм Дейкстры показывают близкую вычислительную эффективность, явным преимуществом не обладает ни один из них.

51

Таблица 5.6

Порядок расчета оптимального маршрута между вершинами 15 и 22

Текущее максимальное

Узел j

D3j

Предшествующий

Очередь

значение D3j

 

 

узел j

 

0,00

15

0,00

 

1

82,46

14

82,46

15

2

82,46

16

82,46

15

3

82,46

20

72,11

15

4

208,95

10

208,95

14

5

208,95

11

171,90

16

6

208,95

17

163,08

16

7

208,95

21

162,46

16

8

208,95

19

112,11

20

9

268,95

5

268,95

10

10

268,95

6

244,02

11

11

268,95

12

251,90

11

12

268,95

18

243,71

17

13

315,82

22

315,82

18

14

 

 

 

 

 

368,95

1

368,95

5

15

368,95

2

333,46

6

16

368,95

7

324,02

6

17

368,95

8

324,02

12

18

368,95

13

331,90

12

19

 

 

 

 

 

413,46

3

413,46

2

20

413,46

9

404,02

8

21

493,46

4

493,46

3

22

5.4. Использование «потенциалов» вершин для повышения эффективности поиска

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

52

 

 

 

 

 

 

 

 

 

Таблица 5.7

 

 

 

 

Веса дуг

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Нач.

Кон.

Длина

Вес 1

Вес 2

Нач.

Кон.

Длина

Вес 1

Вес 2

 

узел

узел

узел

узел

 

 

 

 

 

 

 

 

1

2

240,83

318,54

163,12

10

14

126,49

1,57

251,42

 

1

5

100,00

40,76

159,24

11

12

80,00

146,37

13,63

 

2

3

80,00

129,81

30,19

11

16

89,44

12,20

166,68

 

2

6

89,44

0,92

177,97

12

13

80,00

151,46

8,54

 

3

4

80,00

138,25

21,75

12

17

98,49

26,00

170,98

 

3

7

89,44

4,65

174,23

14

15

82,46

142,46

22,46

 

3

8

89,44

67,41

111,48

14

19

40,00

0,00

80,00

 

4

9

89,44

77,34

101,55

15

16

82,46

161,35

3,58

 

5

6

120,00

168,42

71,58

15

20

72,11

12,11

132,11

 

5

10

60,00

1,32

118,68

16

17

80,62

151,74

9,51

 

6

7

80,00

133,55

26,45

16

21

80,00

61,11

98,89

 

6

11

72,11

56,21

88,02

17

18

80,62

156,20

5,05

 

7

8

80,00

142,75

17,25

18

22

72,11

106,53

37,69

 

8

9

80,00

148,18

11,82

19

20

40,00

80,00

0,00

 

8

12

72,11

6,27

137,95

20

21

120,00

240,00

0,00

 

9

13

72,11

9,56

134,67

21

22

200,00

400,00

0,00

 

10

11

160,00

251,20

68,80

 

 

 

 

 

 

Будем считать местность плоской. Введем потенциал вершины как расстояние по прямой между ею и конечной вершиной. В качестве весов дуг возьмем длины дуг с прибавлением к ним разности потенциалов между конечной и начальной вершиной. Тогда одна и та же дуга, проходимая в разных направлениях, будет иметь разный вес: в сторону конечной вершины вес уменьшается, в противоположном – увеличивается, что заставляет предпочитать первые вторым.

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

Для сети, представленной на рис. 5.1, измененные веса вершин показаны в табл. 5.7. Последовательность расчетов показана в табл. 5.8.

53

Таблица 5.8

Порядок расчета оптимального маршрута между вершинами 15 и 22

Узел j

Целевой показатель

Предшествующий узел j

Очередь

15

0,00

 

1

16

11,51

15,00

2

17

15,65

16,00

3

18

29,46

17,00

4

22

29,46

18,00

5

21

76,11

16,00

 

20

105,75

15,00

 

11

111,82

16,00

 

12

154,10

17,00

 

14

158,32

15,00

 

13

167,91

18,00

 

В таблице представлены только вершины, затронутые расчетом, а их оказалась только половина. Измененный целевой показатель четко направлял расчет в сторону целевой вершины.

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

Наиболее последовательно (и наименее эффективно) в задачах маршрутизации метод динамического программирования выражается в алгоритме Флойда–Уоршела для задачи о нахождении совокупности кратчайших путей между всеми вершинами – так называемой многополюсной кратчайшей цепи. Для решения задачи о кратчайшем пути используются соотношения

Dii = 0,

(5.1)

Dij = min{Dil + Dlj | l = 1,…, m}, j = 1,…, m, j = 1,…, m.

(5.2)

Способ компактного представления решения соответствует принципу оптимальности: для каждой пары вершин (i, j) определяется номер k(i, j) предпоследней вершины кратчайшего пути из i в j (условно принимаем k(i, i) = i). Тогда кратчайший маршрут может быть получен «с конца» – последняя вершина – j, предпоследняя – k(i, j), предшествующая ей – k(i, k(i, j)) и т.д., пока не дойдем до вершины i. В описываемом алгоритме находятся методом последовательных приближений величины k(i, j) и Dij – длины кратчайших путей. Будем обозначать значения этих величин на l-й итерации kl(i, j), Dl(i, j).

54

Алгоритм крайне прост. Пусть M – большое число, заведомо превышающее длину любого простого пути между вершинами (например, удвоенная сумма всех dij).

Для всех i, j положим D0(i, i) = 0, и если i J1j, определим: D0(i, j) = dij, k0(i, j) = i, иначе определим: D0(i, j) = M, k0(i, j) = 0.

В цикле по l = 1,..., m для всех пар (i, j):

1.Вычисляем D′ = Dl – 1(i, l) + Dl – 1(l, j).

2.Если D′ < Dl – 1(i, j), положим Dl(i, j) = D′, kl(i, j) = kl – 1(l, j), иначе положим Dl(i, j) = Dl – 1(i, j).

В результате получаем искомые величины – Dij = Dm(i, j), k(i, j) = km(i, j).

Рассмотрим его применение на примере сети, показанной на рис. 5.2. Для начала, в силу трудоемкости, ограничимся фрагментом сети (рис. 5.3)

 

 

 

3

 

 

 

 

 

6

 

220

 

1

 

 

2

 

 

 

 

200

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

180

 

 

 

 

 

 

 

 

 

 

 

160

 

 

 

 

4

 

 

 

 

 

9

140

 

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

120

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

100

 

 

 

 

 

 

 

 

 

7

 

80

 

 

 

 

 

 

 

 

8

 

 

 

 

 

 

 

 

 

 

 

 

60

 

 

 

 

 

 

 

 

 

 

 

40

80

120

160

200

240

280

320

360

400

440

 

 

 

 

 

 

Рис. 5.2.

 

 

 

 

 

 

 

 

 

220

1

3

 

2

200

 

 

 

 

 

 

 

 

180

 

 

 

 

160

 

 

4

 

140

 

5

 

 

 

 

 

120

100

40

80

120

160

200

240

 

 

 

 

 

 

 

 

Рис. 5.3.

Исходные данные представлены в табл. 5.9, последовательность расчета – в табл. 5.10–5.11.

55

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 5.9

 

 

 

 

 

 

 

 

 

Дуги сети

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Начальный узел

 

 

 

Конечный узел

 

 

 

Длина

 

1

 

 

 

 

 

3

 

 

 

 

 

120

 

1

 

 

 

 

 

5

 

 

 

 

 

113

 

2

 

 

 

 

 

3

 

 

 

 

 

80

 

2

 

 

 

 

 

4

 

 

 

 

 

89

 

2

 

 

 

 

 

6

 

 

 

 

 

160

 

3

 

 

 

 

 

4

 

 

 

 

 

89

 

3

 

 

 

 

 

5

 

 

 

 

 

89

 

4

 

 

 

 

 

5

 

 

 

 

 

80

 

4

 

 

 

 

 

8

 

 

 

 

 

171

 

6

 

 

 

 

 

7

 

 

 

 

 

140

 

6

 

 

 

 

 

8

 

 

 

 

 

146

 

6

 

 

 

 

 

9

 

 

 

 

 

89

 

7

 

 

 

 

 

9

 

 

 

 

 

72

 

8

 

 

 

 

 

9

 

 

 

 

 

100

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 5.10

 

 

 

 

Расстояния между смежными узлами

 

 

 

 

 

 

 

 

 

 

 

Первый узел

 

 

 

Второй узел

 

 

 

 

 

 

 

 

 

1

 

 

 

2

3

 

4

 

5

 

 

 

 

 

 

 

 

 

1

0,00

 

10000,00

120,00

 

10000,00

 

113,14

 

2

10000,00

 

 

0,00

80,00

 

89,44

 

10000,00

 

3

120,00

 

 

80,00

0,00

 

89,44

 

89,44

 

4

10000,00

 

 

89,44

89,44

 

0,00

 

80,00

 

5

113,14

 

10000,00

89,44

 

80,00

 

0,00

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 5.11

 

 

Матрица коммутаций. Последовательные приближения.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Итерация 1

 

 

 

 

 

 

 

1

 

2

 

 

 

3

 

 

4

5

1

 

0,00

 

10000,00

 

120,00

 

10000,00

113,14

2

 

10000,00

 

0,00

 

80,00

 

89,44

10000,00

3

 

120,00

 

80,00

 

0,00

 

89,44

89,44

4

 

10000,00

 

89,44

 

89,44

 

0,00

80,00

5

 

113,14

 

10000,00

 

89,44

 

80,00

0,00

 

 

 

 

 

 

 

 

Итерация 2

 

 

 

 

 

1

 

0,00

 

10000,00

 

 

120,00

 

 

10000,00

113,14

2

 

10000,00

 

0,00

 

 

80,00

 

 

89,44

10000,00

3

 

120,00

 

80,00

 

 

0,00

 

 

89,44

89,44

4

 

10000,00

 

89,44

 

 

89,44

 

 

0,00

80,00

5

 

113,14

 

10000,00

 

 

89,44

 

 

80,00

0,00

56

 

 

 

 

 

 

Окончание табл. 5.11

 

 

 

 

 

 

 

 

 

 

 

Итерация 3

 

 

 

 

1

2

 

3

4

 

5

1

0,00

200,00

 

120,00

209,44

 

113,14

2

200,00

0,00

 

80,00

89,44

 

169,44

3

120,00

80,00

 

0,00

89,44

 

89,44

4

209,44

89,44

 

89,44

0,00

 

80,00

5

113,14

169,44

 

89,44

80,00

 

0,00

 

 

 

Итерация 4

 

 

 

 

1

2

 

3

4

 

5

1

0,00

200,00

 

120,00

209,44

 

113,14

2

200,00

0,00

 

80,00

89,44

 

169,44

3

120,00

80,00

 

0,00

89,44

 

89,44

4

209,44

89,44

 

89,44

0,00

 

80,00

5

113,14

169,44

 

89,44

80,00

 

0,00

 

 

 

Итерация 5

 

 

 

 

1

2

 

3

4

 

5

1

0,00

200,00

 

120,00

193,14

 

113,14

2

200,00

0,00

 

80,00

89,44

 

169,44

3

120,00

80,00

 

0,00

89,44

 

89,44

4

193,14

89,44

 

89,44

0,00

 

80,00

5

113,14

169,44

 

89,44

80,00

 

0,00

Трудоемкость метода никак не зависит от структуры графа и имеет порядок O(m3). Как мы увидим ниже, алгоритм не имеет вычислительных преимуществ по сравнению с многократным вычислением кратчайших путей от отдельных вершин до всех остальных, а при эффективном решении таких задач – существенно уступает им. Однако алгоритм допускает двухуровневую декомпозицию при условиях, характерных для многих городских улично-дорожных сетей.

Наиболее ясно это видно на примере Санкт-Петербурга, значительная часть центра которого расположена на островах невской дельты, соединенных немногочисленными мостами. Кроме рек другими границами служат железнодорожные пути. Например, через пути Ярославского направления между вокзалом и МКАД есть только три автомобильных моста. Вершинами УДС являются перекрестки, в том числе въезды на мосты, ребрами – участки дорог между перекрестками. Удаление мостов превратит наш граф в несвязный. Для каждого острова применим алгоритм Флойда–Уоршела. Построим вспомогательный граф, вершины которого – въезды на мосты (их можно назвать граничными вершинами островов), а ребра – кратчайшие пути между ними, найдем на нем кратчайшие пути между всеми вершинами. Кратчайшие пути между вершинами одного острова уже построены, найдем кратчайшие пути между вершинами

57

разных островов (I-го и J–го). Пусть у I-го острова MI граничных вершин, тогда для каждой пары вершин двух островов будет MIMJ вариантов кратчайшего пути. Отсюда видно, что если максимальное из значений MIMJ для пар островов значительно меньше m, то можно рассчитывать на значительное уменьшение трудоемкости расчетов.

Для рассматриваемого примера (см. рис. 5.2) у нас есть две подсети, соединяемые «мостами» – дугами 2–6 и 4–5.

Матрица коммутаций разбита на четыре блока. Блоки по главной диагонали соответствуют подсетям (табл. 5.12). Для их вычисления нужно по 53 = 125 и 43 = 64 сложений и столько же пар значений

Di2 + d26 + D6j и Di4 + d48 + D8j .

 

 

 

 

 

 

 

 

Таблица 5.12

 

 

 

Матрица коммутаций для всей сети

 

 

 

 

 

 

 

 

 

 

 

 

 

1

2

3

4

5

6

7

8

9

1

0,00

200,00

120,00

193,14

113,14

360,00

500,00

364,02

449,44

2

200,00

0,00

80,00

89,44

169,44

160,00

300,00

260,32

249,44

3

120,00

80,00

0,00

89,44

89,44

240,00

380,00

260,32

329,44

4

193,14

89,44

89,44

0,00

80,00

249,44

342,99

170,88

270,88

5

113,14

169,44

89,44

80,00

0,00

329,44

422,99

250,88

350,88

6

360,00

160,00

240,00

249,44

329,44

0,00

140,00

145,60

89,44

7

500,00

300,00

380,00

342,99

422,99

140,00

0,00

172,11

72,11

8

364,02

260,32

260,32

170,88

250,88

145,60

172,11

0,00

100,00

9

449,44

249,44

329,44

270,88

350,88

89,44

72,11

100,00

0,00

Еще два блока совпадают с точностью до транспонирования. Для расчета элемента одного блока (длины кратчайшего маршрута из вершины i 1-й подсети до вершины j 2-й подсети) нужно сравнить оптимальные пути через два моста – ребра 2–6 и 4–8. При общем количестве пар 20 = 5× 4 потребуется 80 сложений и 40 сравнений, итого 269 сложений и 229 сравнений (в сравнении с 93 = 729 сложений и столько же сравнений при непосредственном выполнении алгоритма Флойда–Уоршела.

Для транспортной сети особенно большого размера даже при отсутствии транспортной разобщенности районов можно выполнить формальное разделение ее на «острова» и применить те же приемы, что приведет к значительному уменьшению трудоемкости. Для городов округлой формы при разделении их территории двумя пересекающимися семействами линий, в количестве O(m1/4) каждая, на O(m1/2) «острововах» с примерно одинаковым количеством вершин в каждом при естественных предположениях уменьшает порядок трудоемкости при описанной двухуровневой декомпозиции до O(m5/2). Однако и такая трудоемкость – не самое лучшее, чего можно добиться.

58

Вопросы и упражнения

1.В качестве примера для декомпозиции в задаче о кратчайшей многополюсной сети рассмотрите случай трех островов с количеством вершин m/2, m/3, m/6 и тремя мостами, соединяющими каждую пару островов. Начиная с какого значения m трудоемкость вычисления уменьшится более чем в 4 раза?

2.Будет ли алгоритм Левита иметь преимущество и отличия в порядке расчетов, если веса дуг модифицировать, как описано в разделе 5.4?

3.Выполните алгоритмы Дейкстры и Левита для сети, рассмотренной в разделе 2.3 (рис. 2.3) и пары вершин (1-я, 7-я).

4.Для дорожной сети, характеризующейся табл. 5.13, определить кратчайшие расстояния из указанного города в остальные методами Дейкстры и Левита, представить порядок выполненных расчетов.

 

 

 

Таблица 5.13

 

Расстояния между городами

 

 

 

 

 

Откуда

Куда

 

Расстояние, км

Москва

СПб

 

660

Москва

Орша

 

480

Москва

Тула

 

170

Москва

Киев

 

850

Тула

Харьков

 

560

Тула

Ростов н/Д

 

900

Харьков

Ростов н/Д

 

490

СПб

Орша

 

690

Орша

Киев

 

510

Киев

Харьков

 

490

Киев

Львов

 

540

Киев

Одесса

 

490

СПб

Таллин

 

330

Таллин

Рига

 

310

Рига

Вильнюс

 

290

Вильнюс

Варшава

 

490

Вильнюс

Минск

 

180

Варшава

Минск

 

540

Варшава

Львов

 

390

Львов

Кишенев

 

620

Кишенев

Одесса

 

180

Одесса

Ростов н/Д

 

840

Минск

Орша

 

210

Варианты: 1) Тула; 2) Киев; 3) Таллин; 4) Одесса; 5) Минск; 6) Орша.

59

6. МЕТОД ВЕТВЕЙ И ГРАНИЦ ДЛЯ ПОИСКА КРАТЧАЙШЕГО ПУТИ НА ГРАФЕ. ОБОБЩЕНИЕ НА СЛУЧАЙ СЕТЕЙ

СИЗМЕНЯЮЩИМИСЯ ПАРАМЕТРАМИ

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

6.1.Задача об оптимальной трассе обхода запрещенных областей

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

На плоскости заданы начальная и конечная точка и некоторое количество непересекающихся запрещенных областей в виде выпуклых многоугольников. Требуется найти самую короткую соединяющую их линию (трассу), не пересекающую запрещенные области.

Очевидно, что кратчайшая возможная трасса является прямой. Это и будет искомая кратчайшая трасса, если она не пересекает никакого препятствия (запрещенной области). В противном случае трасса должна обойти хотя бы одну из запрещенных областей. Из неравенства треугольника легко усмотреть (рис. 6.1), что кратчайшая трасса не может ни достигнуть границы запрещенной области, ни

60

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