Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kursovoy_proekt_MM.docx
Скачиваний:
6
Добавлен:
24.08.2019
Размер:
262.88 Кб
Скачать

2.2 Решение задачи с помощью программы «Нахождение оптимального маршрута»

2.3 Решение задачи с помощью сайта Semestr.Ru

Возьмём в качестве произвольного маршрута:

X0 = (1,2);(2,3);(3,4);(4,5);(5,1)

Тогда F(X0) = 10 + 10 + 20 + 15 + 10 = 65

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

di = min(j) dij

табл. 2.3.1

i j

1

2

3

4

5

di

1

M

10

25

25

10

10

2

1

M

10

15

2

1

3

8

9

M

20

10

8

4

14

10

24

M

15

10

5

10

8

25

27

M

8

Затем вычитаем di из элементов рассматриваемой строки. В связи с этим во вновь полученной матрице в каждой строке будет как минимум один ноль.

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

dj = min(i) dij

табл. 2.3.2

i j

1

2

3

4

5

1

M

0

15

15

0

2

0

M

9

14

1

3

0

1

M

12

2

4

4

0

14

M

5

5

2

0

17

19

M

dj

0

0

9

12

0

После вычитания минимальных элементов получаем полностью редуцированную матрицу, где величины di и dj называются константами приведения.

табл. 2.3.3

i j

1

2

3

4

5

1

M

0

6

3

0

2

0

M

0

2

1

3

0

1

M

0

2

4

4

0

5

M

5

5

2

0

8

7

M

Шаг №1.

Определяем ребро ветвления и разобьем все множество маршрутов относительно этого ребра на два подмножества (i,j) и (i*,j*).

табл. 2.3.4

i j

1

2

3

4

5

di

1

M

0(0)

6

3

0(1)

0

2

0(0)

M

0(5)

2

1

0

3

0(0)

1

M

0(2)

2

0

4

4

0(4)

5

M

5

4

5

2

0(2)

8

7

M

2

dj

0

0

5

2

1

0

Наибольшая сумма констант приведения равна (0 + 5) = 5 для ребра (2,3), следовательно, множество разбивается на два подмножества (2,3) и (2*,3*). Нижняя граница гамильтоновых циклов этого подмножества:

H(2*,3*) = 58 + 5 = 63

табл. 2.3.5

i j

1

2

3

4

5

di

1

M

0

6

3

0

0

2

0

M

M

2

1

0

3

0

1

M

0

2

0

4

4

0

5

M

5

0

5

2

0

8

7

M

0

dj

0

0

5

0

0

5

В результате получим другую сокращенную матрицу (4 x 4), которая подлежит операции приведения.

Сумма констант приведения сокращенной матрицы:

∑di + ∑dj = 0

После операции приведения сокращенная матрица будет иметь вид:

табл. 2.3.6

i j

1

2

4

5

di

1

M

0

3

0

0

3

0

M

0

2

0

4

4

0

M

5

0

5

2

0

7

M

0

dj

0

0

0

0

0

Нижняя граница подмножества (2,3) равна:

H(2,3) = 58 + 0 = 58 < 63

Поскольку нижняя граница этого подмножества (2,3) меньше, чем подмножества (2*,3*), то ребро (2,3) включаем в маршрут.

Шаг №2.

Определяем ребро ветвления и разобьем все множество маршрутов относительно этого ребра на два подмножества (i,j) и (i*,j*).

табл. 2.3.6

i j

1

2

4

5

di

1

M

0(0)

3

0(2)

0

3

0(2)

M

0(3)

2

0

4

4

0(4)

M

5

4

5

2

0(2)

7

M

2

dj

2

0

3

2

0

Наибольшая сумма констант приведения равна (4 + 0) = 4 для ребра (4,2), следовательно, множество разбивается на два подмножества (4,2) и (4*,2*). Нижняя граница гамильтоновых циклов этого подмножества:

H(4*,2*) = 58 + 4 = 62

табл. 2.3.7

i j

1

2

4

5

di

1

M

0

3

0

0

3

0

M

0

2

0

4

4

M

M

5

4

5

2

0

7

M

0

dj

0

0

0

0

4

В результате получим другую сокращенную матрицу (3 x 3), которая подлежит операции приведения.

Сумма констант приведения сокращенной матрицы:

∑di + ∑dj = 2

После операции приведения сокращенная матрица будет иметь вид:

табл. 2.3.8

i j

1

4

5

di

1

M

3

0

0

3

0

0

2

0

5

2

7

M

2

dj

0

0

0

2

Нижняя граница подмножества (4,2) равна:

H(4,2) = 58 + 2 = 60 < 62

Чтобы исключить подциклы, запретим следующие переходы: (3,4). Поскольку нижняя граница этого подмножества (4,2) меньше, чем подмножества (4*,2*), то ребро (4,2) включаем в маршрут.

Шаг №3.

Определяем ребро ветвления и разобьем все множество маршрутов относительно этого ребра на два подмножества (i,j) и (i*,j*).

табл. 2.3.9

i j

1

4

5

di

1

M

0(2)

0(2)

0

3

0(2)

M

2

2

5

0(2)

2

M

2

dj

0

2

2

0

Наибольшая сумма констант приведения равна (0 + 2) = 2 для ребра (1,4), следовательно, множество разбивается на два подмножества (1,4) и (1*,4*).

Нижняя граница гамильтоновых циклов этого подмножества:

H(1*,4*) = 60 + 2 = 62

табл. 2.3.10

i j

1

4

5

di

1

M

M

0

0

3

0

M

2

0

5

0

2

M

0

dj

0

2

0

2

В результате получим другую сокращенную матрицу (2 x 2), которая подлежит операции приведения.

Сумма констант приведения сокращенной матрицы:

∑di + ∑dj = 2

После операции приведения сокращенная матрица будет иметь вид:

табл. 2.3.11

i j

1

5

di

3

0

2

0

5

0

M

0

dj

0

2

2

Нижняя граница подмножества (1,4) равна:

H(1,4) = 60 + 2 = 62 < 62

Поскольку нижняя граница этого подмножества (1,4) меньше, чем подмножества (1*,4*), то ребро (1,4) включаем в маршрут.

В соответствии с этой матрицей включаем в гамильтонов маршрут ребра (3,5) и (5,1).

В результате по дереву ветвлений гамильтонов цикл образуют ребра:

(2,3), (3,5), (5,1), (1,4), (4,2),

Длина маршрута равна F(Mk) = 65

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