Задачи для самостоятельного решения 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Задачи для самостоятельного решения

Задачи для самостоятельного решения

Найти решения задач о назначениях на узкие места для следующих матриц эффективностей:

1.                                                  2.

                

3.                                             4.

                  

5. ЗАДАЧА КОММИВОЯЖЕРА

Имеется n городов, между которыми существует определенная сеть дорог. Коммивояжер, выходя из некоторого города, должен обойти все остальные города, побывав в каждом из них по одному разу, и вернуться в исходный город. При этом пройденное коммивояжером расстояние должно быть минимально. Расстояния между городами задаются матрицей C = | cij |nxn, у которой элемент cij ≥ 0 равен длине дороги, непосредственно соединяющей i-ый и j-ый города, и равен ∞ при отсутствии дороги, связывающей непосредственно i-ый и j-ый города. Кроме этого cii = ∞,  для запрещения коммивояжеру возвращаться сразу же в город.Для графа G = (V, E ) гамильтоновым называется цикл, содержащий все вершины графа. Если построить граф, вершины которого соответсвуют городам, а дуги (ребра) непосредственно связывающим города дорогам, то приписав дугам длины, совпадающие с длинами дорог, мы получим задачу нахождения гамильтонова цикла минимальной длины.Введем для дуг графа G в рассмотрение переменные Тогда задачу коммивояжера можно сформулировать в виде задачи линейного булевого программирования: Здесь ce - длина дуги e E .Для решения задачи коммивояжера применяется одна из реализаций метода ветвей и границ.5.1. Общая схема метода ветвей и границМетод ветвей и границ - общий метод для нахождения решений задач дискретной и комбинаторной оптимизации. Метод является алгоритмом перебора с отсевом подмножеств допустимых решений, не содержащих оптимальных решений.

Опишем идею метода на примере поиска минимума функции f(x) на конечном множестве допустимых значений Ω. Метод ветвей и границ основан на трех процедурах: ветвление, нахождение оценок (границ), отсев вариантов.

Ветвление состоит в разбиении по некоторому правилу A множества допустимых решений на подмножества . Процедура нахождения оценок заключается в поиске по некоторому правилу B нижних  границ для минимальных значений функции f(x) на . Пусть полученные нижние границы. Очевидно, .

Из полученных подмножеств , выбираем подмножество Ωm, у которого . По правилу A разбиваем  Ωm на подмножества , и вычисляем по правилу B нижние границы для минимальных значений функции f(x) на .

Описанный процесс можно изобразить в виде дерева поиска, корень которого соответсвует исходному множеству допустимых решений Ω, вершины - подмножествам, полученным в результате разбиений по правилу A, дуги идут от вершины-подмножества к вершинам-подмножествам, состовляющим его разбиение.

Общий шаг метода ветвей и границ состоит в выборе из всех висячих вершин дерева поиска вершины с наименьшей границей, разбиении соответствующего подмножества допустимых решений по правилу A, вычислении по правилу B для вновь полученных подмножеств нижних границ с добавлением в дерево поиска вершин и дуг, соответсвующих вновь полученным подмножествам.

В силу конечности множества Ω, за конечное число шагов хотя бы одна из висячих вершин будет соответствовать множеству, состоящему из одного допустимого решения {x*}. Значение функции f *= f(x*) называют рекордом.

Процедура отсева основана на следующем простом принципе: если нижняя граница γ для подмножества Ω дерева поиска не меньше f *, то все допустимые решения из множества Ω могут быть исключены из дальнейшего рассмотрения (вершина Ω в дереве поиска далее не ветвиться).

Если нижние границы для всех висячих вершин дерева поиска не меньше рекорда, то решение найдено:  

Если мы получаем висячую вершину, соответствующую одному допустиму решению {x0}, и f(x0) < f *, то рекорд обновляется f *= f(x0) .

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

5.2. Алгоритм ЛиттлаАлгоритм Литтла является реализацией метода ветвей и границ для задачи коммивояжера. Правило ветвления состоит в разбиении множества рассматриваемых гамильтоновых циклов на два подмножества, одно из которых состоит из циклов, содержащих выбранную дугу e, а другое из циклов, не содержащих этой дуги. Дуга e выбирается среди дуг минимальной длины по условию, что запрет на использование этой дуги должен приводить к максимальному увеличению длины гамильтонова цикла. Правило вычисления нижних границ основано на процедуре приведения матриц расстояний, соответствующих вновь полученным висячим вершинам дерева поиска.Опишем алгоритм Литтла.

Шаг 1. Приведение матрицы расстояний. Находим в каждой i-ой строке матрицы  минимальный элемент αi и вычитаем его из всех элементов этой строки. В полученной матрице в каждом j-ом столбце находим минимальный элемент βj и вычитаем его из всех элементов данного столбца. После проделанных операций получим матрицу , каждая строка и каждый столбец которой содержит, по крайней мере, один нуль.

Шаг 2. Вычисляем сумму приводящих констант . Очевидно, что γ является нижней границей для всего множества решений , которое берется в качестве корня дерева поиска и текущего множества решений.

Шаг 3. Для каждого нулевого элемента cij = 0 матрицы  находим штраф за неиспользование  (сумма минимальных элементов в строке и столбце, на пересечении которых стоит нуль, без учета самого нулевого элемента).

Шаг 4. Выбираем нулевой элемент с максимальным штрафом . Разбиваем текущее множество всех гамильтоновых циклов  на два подмножества: Ω1 - “не включающие дугу (i, j)” и Ω2 - “включающие дугу (i,j)”. Присоединяем соответсвующие вершины к дереву поиска.

Шаг 5. Вычисляем нижнюю границу γ1 = γ + θij для гамильтоновых циклов подмножества Ω1 .Строим соответсвующую Ω1 матрицу расстояний C1. Для этого значение элемента cij заменяем на  и приводим полученную матрицу (неприведенными могут быть только i-ая строка и j-ый столбец, поэтому сумма приводящих констант равна θij) .

Шаг 6. Вычисляем нижнюю границу для гамильтоновых циклов подмножества  Ω2. Для этого удаляем из матрицы  i-ю строку и j-й столбец, сохраняя исходную нумерацию для оставшихся строк и столбцов, и заменяем на  значение элементов, соответсвующих дугам, использование каждой из которых с уже включенными в гамильтонов цикл дугами, приводит к образованию цикла с числом дуг меньше n. Приводим полученную матрицу, обозначаем ее C2 и добавляем сумму приводящих констант к нижней границе γ множества решений . Получаем нижнюю границу γ2 .

Шаг 7. Если в результате шага 6 получаем матрицу C2 порядка два  и ее нижняя граница не превышает границ висячих вершин дерева поиска, то процесс заканчивается, решение найдено, преходим к шагу 11. В противном случае переходим к шагу 8.

Шаг 8. Среди висячих вершин построенного дерева поиска выбираем вершину с наименьшей границей (если таких вершин несколько, выбираем любую из них).

Шаг 9. Если выбранная на шаге 8 вершина соответствует свойству “включающие дугу (i,j)”, то соответствующую ей матрицу расстояний C2, полученную на шаге 6, берем за Си переходим к шагу 3. В противном случае переходим к шагу 10.

Шаг 10. Выбранная на шаге 8 вершина соответствует свойству “не включающие дугу (i, j)”). Соответствующую ей матрицу расстояний C1, полученную на шаге 5, берем за Си переходим к шагу 3.

Шаг 11. Строим гамильтонов цикл минимальной длины. Для этого включаем в гамильтонов цикл дуги соответствующие нулевым элементам 2x2-матрицы расстояний C2 , полученной на шаге 7. Далее двигаемся от висячей вершины к корню дерева поиска по единственному обратному пути. При прохождении обратной дуги дерева поиска, соответствующей переходу от множества решений к его подмножеству по свойству “ включающие дугу (i, j)”, дугу (i, j) включаем в гамильтонов цикл.

Пример. Решить задачу коммивояжера со следующей матрицей расстояний C

¥

¥

¥

¥

¥

 

Приведем матрицу по строкам. Имеем: α1 = 2 , α2 = 3 , α3 = 2 , α4 = 2 , α5 = 1 . Получим матрицу

¥

¥

¥

¥

¥

Приведем матрицу по столбцам. Имеем: β1 = 0, β2 = 0, β3 = 0, β4 = 1, β5 = 0 . Получим матрицу C

¥

¥

¥

¥

¥

Текущая нижняя граница γ = 11 .

Находим штрафы для нулевых элементов: θ13 = 1, θ21 = 0, θ23 = 0, θ32 = 3, θ34 = 1, θ45 = 4, θ51 = 1. Максимальный штраф θ45 = 4.

Разбиваем множество всех гамильтоновых циклов  на два подмножества Ω1 - “не включающие дугу (4,5)” и Ω2 - “включающие дугу (4,5)”. Для первого подмножества нижняя граница γ1 = 15, а соответствующую матрицу расстояний C1 получим из матрицы C, положив c45 =  и приведя результат.

¥

¥

¥

¥

¥

¥

Для второго подмножества матрица расстояний C2 получается из C удалением 4-ой строки и пятого столбца, причем для запрещения образования цикла 4->5->4, полагаем c54 = , полученный результат приводим.

 

¥

¥

¥

¥

Сумма приводящих констант равна 0, следовательно, γ2 = 11.

Минимальную нижнюю границу имеет множество Ω2. Поэтому в матрице C2 вычисляем штрафы для нулевых элементов: θ13 = 1, θ21 = 0, θ23 = 0, θ32 = 3, θ34 = 1, θ51 = 1. Максимальный штраф θ32 = 3. Разбиваем множество Ω2 на два подмножества Ω21 - “не включающие дугу (3,2)” и Ω22 - “включающие дугу (3,2)”. Для подмножества Ω21 нижняя граница γ21 = 14. Матрицу расстояний C21 получим из матрицы C2, положив c32 =  и проведя процедуру приведения.

 

¥

¥

¥

¥

¥

Для подмножества Ω22 матрицу расстояний C22 получаем из C2, удаляя третью строку и второй столбец, затем для запрещения образования цикла 3->2->3, полагаем c23= , полученный результат приводим.

 

 

¥

¥

¥

Сумма приводящих констант равна 1, следовательно, γ22 = 12.

В дереве поиска висячие вершины соответсвуют подмножествам Ω1, Ω21, Ω22. Минимальную нижнюю границу имеет множество Ω22. Поэтому в матрице C22 вычисляем штрафы для нулевых элементов: θ13 = 1, θ14 = 0, θ21 = 0, θ24 = 0, θ51 = 1. В результате сравнения мы получили два одинаковых максимальных штрафа равных 1.

Возьмем θ13 = 1. Разбиваем множество Ω22 на два подмножества Ω221 - “не включающие дугу (1,3)” и Ω222 - “включающие дугу (1,3)”. Для подмножества Ω221 нижняя граница γ221 = 13 . Матрицу расстояний C221 получим из матрицы C22, положив c13 =  и проведя процедуру приведения.

 

¥

¥

¥

¥

Для подмножества Ω222 матрицу расстояний C222 получаем из C22, удаляя первую строку и третий столбец, затем для запрещения образования цикла 1->3->2->1, полагаем c21= , полученный результат приводим. Сумма приводящих констант равна 0, следовательно, γ222 = 12.

 

¥

¥

В дереве поиска висячие вершины соответсвуют подмножествам Ω1, Ω21 , Ω221 , Ω222 . Минимальную нижнюю границу имеет множество Ω222.

Соответсвующая матрица C222 имеет размерность 2x2. Следовательно, решение найдено.

Переходим к постоению гамильтонового цикла. Включаем в гамильтонов цикл дуги (2,4), (5,1), как соответствующие нулевым элементам матрицы C222. Затем, двигаясь по дереву поиска к корню, включаем дуги (1,3), (3,2), (4,5).  Дерево поиска приведено на рисунке 13.

 

 

γ=11


γ1=15

Ω1

Ω2

γ2=11


           

                                       

γ22=12

γ21=14

Ω22

Ω21

                                                              

              

γ222=12

γ221=13

Ω222

Ω221

                             


                                                                   

                             

Рис. 13.

Гамильтонов цикл минимальной длины состоит из дуг (5,1), (1,3), (3,2), (2,4), (4,5).



Поделиться:


Последнее изменение этой страницы: 2024-07-06; просмотров: 38; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.128 (0.01 с.)