Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по методам оптимизации.doc
Скачиваний:
181
Добавлен:
02.05.2014
Размер:
1.18 Mб
Скачать

Задача о кратчайшем пути на сети. Метод минти

Постановка задачи о кратчайшем пути на сети.

На сети, что задается графом (I,U), где И — множество вершин, U — множество дуг, с определенной на ней функцией стоимости сіj ((і,j) — дуга с U), для фиксированных i1и isнайти путь

L = ((i1,i2),(i2,i3)...,(is-1,is))

из вершины i1в вершину is, длина которого

наименьшая.

Алгоритм метода Минти.

Методом Минти решается задача построения дерева кратчайших путей на сети с корнем в фиксированной вершине i1.

Алгоритм состоит из конечного числа шагов, на каждом из которых отражаются вершины сети и выделяются некоторые ее дуги.

Пусть Pr — множество вершин, обозначенных на шаге r, а Ir — множество вершин, обозначенных при r шагах.

ШАГ 0. Корень дерева (вершина i1) отражается постоянной h1=0; i1(h1)=i1(0). После нулевогошагаP0={i1(0)}, I0={i1(0)}.

Пусть выполнено r шагов, за которые построенное множество

Ir={i1(0),...,ik(hk),...}

обозначенных вершин ik(hk), каждой из которых поставлено в соответствие число hk (численно ровное длине кратчайшего пути из вершины i1в вершину ik).

ШАГ r+1. Строится разрез сети, который порождается множеством обозначенных вершин Ir, и определяется множество Jr={...,im,...} необозначенных вершин imсети, в которые заходят дуги разреза. Для каждой дуги (ik,im) разреза вычисляют суммуhk++ и помечают те из дуг, для которых эта сумма минимальная. Потом выделяют обозначенные дуги так, чтобы в каждую необозначенную вершину множества Jr, в которое заходят обозначенные дуги разреза, заходила бы только одна выделенная дуга. После выделения дуг помечают вершины — концы выделенных дуг. Величина отметки ровная минимальной из сумм hk++, вычисленных для всех дуг разреза. Объединяя множество Irс множеством Pr+1вершин, обозначенных на (r+1) -м шаге, получают множество Ir+1вершин, обозначенных при (r+1) шагах. Переходят к следующему шагу, если существует разрез, что порождается множеством Ir+1.

Указанный процесс продолжают до тех пор, пока возможное расширение множества обозначенных вершин.

Если некоторая вершина in сети осталась необозначенной по окончании процедуры Минти, то пути, что начинается в вершине i1 и заканчивается в вершине in, не существует.

Программное обеспечение.

Обучающий модуль, с помощью которого задача о кратчайшем пути на сети Решается в диалоге с пользователем за выложенным алгоритмом, вызывается из раздела «ЛИНЕЙНОЕ ПРОГРАММИРОВАНИЕ» главного меню пакета ПОМО.

Задание.

Решить методом Минти задачи о кратчайшем пути на сети, условия которых задаются модулем с помощью команды «Данные» главного меню (задачи №1№9), а также следующие задачи, в каждой из которых сеть задается числом вершин N и матрицей L, что описывает множество дуг сети (каждый столбец этой матрицы отвечает существующей дуге сети, при этом, первый элемент столбца есть начало дуги, второе — конец дуги, третий — длина дуги):

1) N = 10, L =

1

1

1

2

2

2

3

3

4

4

5

5

5

6

6

7

7

8

9

2

3

4

3

5

6

4

6

6

7

8

9

10

5

9

6

9

10

10

5

10

20

5

20

17

12

17

5

4

10

6

20

7

5

1

5

11

15

2) N = 10, L =

1

1

2

2

3

3

3

4

4

5

5

6

6

7

7

7

8

8

9

9

2

3

4

5

2

7

8

3

7

9

10

5

10

6

8

9

4

9

6

10

20

12

9

20

12

20

7

20

2

10

18

10

18

1

7

16

18

17

20

8

3) N = 10, L =

1

1

1

2

2

2

3

4

4

4

4

5

5

6

7

7

7

8

8

9

2

3

4

3

5

6

5

3

5

7

9

6

7

8

6

8

9

9

10

10

18

20

19

8

2

11

2

7

1

6

12

9

5

12

6

15

6

16

2

4

4)N = 10,L=

1

1

1

2

2

2

3

3

4

4

4

5

5

5

6

6

7

8

9

2

3

4

4

5

6

2

4

5

7

8

7

9

10

5

9

8

10

10

15

2

20

9

20

17

13

12

15

8

5

4

3

7

7

11

5

6

4

5) N = 10, L =

1

1

2

2

2

3

3

3

3

4

4

5

5

6

6

7

7

8

9

10

2

3

4

5

6

2

6

7

8

5

9

6

9

7

9

9

10

7

10

8

13

2

8

18

2

11

13

20

20

10

20

4

20

20

20

11

20

11

14

5

6) N = 10, L =

1

1

1

1

2

2

3

3

3

3

4

4

5

5

6

7

7

8

8

9

2

3

4

5

3

6

4

6

7

10

7

8

4

8

10

9

10

7

9

10

10

18

20

20

8

15

9

7

17

12

8

10

7

15

5

10

19

20

10

2

Лабораторная работа 8.