Пред.
След.
Макеты страниц
Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике ДЛЯ СТУДЕНТОВ И ШКОЛЬНИКОВ ЕСТЬ
ZADANIA.TO
§ 54. Метод прогрессивных разделений и оценок (метод ветвления и ограничения)Пусть
Рис. 254. Пусть с помощью свойства вершины, для которых стараемся уточнить нижние границы, и т. д. Заметим, что объединение висячих вершин, получающихся на каждом этапе, дает
В силу этого замечания, если в результате данного процесса мы приходим к висячей вершине, являющейся одноэлементным множеством, то Очевидно, что аналогичные рассуждения можно использовать для получения максимального решения (если оно существует), рассматривая соответствующие верхние границы и стараясь их уменьшить на каждом шаге.
Рис. 255 Этот метод можно назвать «методом оптимизации с помощью решета». Рассматриваются его различные модификации (например, метод динамического программирования). При реализации этого метода существуют выбор свойств и уточнение оценок на каждом этапе. Заметим также, что вместо разбиений на две части можно рассматривать разбиения на Отыскание оптимальных гамильтоновых контуров графа. Алгоритм Литтла. Эта задача, известная под названием «задача о коммивояжере», долгое время оставатась нерешенной. В 1963 г. Литтл (вместе с другими авторами) дал для этой задачи строгий метод оптимизации; мы рассмотрим его на примере. Название этой задачи происходит из того, что гамильтонов контур можно рассматривать как путь коммивояжера, желающего посетить все города в точности по одному разу и возвратиться обратно. Опишем алгоритм Литтла для нахождения минимального гамильтонова контура для графа с А) Находим в каждой строке матрицы нуля, то в каждом из них находим минимальный элемент и вычитаем его из всех элементов этого столбца Таким образом, мы приходим к матрице Б) Суммируем все элементы, которые мы вычитали в А). Очевидно, что эта сумма является нижней границей множества Е решений, которое берется в качестве корня прадерева (см. стр. 299).
Рис. 256 Здесь пара дуг заменена двойной стрелкой
Рис. 257 В) Выбираем дугу
где Рассмотрим свойство Если гамильтонов контур не использует такой дуги Г) Вычисляем Д) Аналогично Г) присоединяем к прадереву вершину, определяемую свойством значения тех дуг, используя которые, получают контуры длины, меньшей Е) Действуем, как в А), с матрицей, получающейся в результате Д). Ж) Действуем, как в 3) Если в результате Д) получают матрицу порядка 1, то процесс заканчивается. В противном случае переходим к И). И) Среди висячих вершин уже построенного прадерева выбираем вершину с наименьшей границей (если таковых несколько, выбираем произвольно).
Рис. 258. К) Если выбранная по И) вершина соответствует свойству то переходим к В). В противном случае переходим к Л), Л) Значение в клетке Пример. Опишем построение прадерева на рис. 259, дающего минимальный гамильтонов контур графа на рис. 256, согласно алгоритму, изложенному выше. A) Из элементов строк 3, 2, 1, 2, 2, 2, 1, а также вычитаем 2 из всех элементов столбца Б) Вычисляем сумму: B) Рассмотрим все нулевые элементы матрицы на рис. 260 (воспроизведенной также на рис. 261 — выкладки для вершины 2 прадерева). Возьмем 0 в клетке (кликните для просмотра скана) Аналогично Г) Изображаем вершину
Рис. 262. Д) Изображаем вершину
Рис. 263.
Рис. 264 Е) Рассматривая матрицу на рис. 262, видим, что нужно только вычесть 2 из строки Ж) Сумма элементов, вычтенных из строк и столбцов по Е), здесь равна 2. Следовательно, для вершины 3) Имеем матрицу порядка 6, поэтому переходим к И). И) Висячая вершина с наименьшим значением, равным 17, есть К) В) Рассматривая матрицу на рис 264 и вычисляя Г) Строим вершину
Рис. 265. Д) Строим вершину Е) Рассматривая матрицу на рис. 265, видим, что из всех элементов столбца
Рис. 266
Рис. 267. Ж) Сумма элементов, вычтенных из строк и столбцов по Е), здесь равна 1. Следовательно, для вершины 3) Имеем матрицу порядка 5, поэтому переходим к И). И) Висячая вершина с наименьшим значением, равным 18, есть К) В) Рассматривая матрицу на рис. 267 и вычисляя Г) Строим вершину Д) Строим вершину
Рис. 268.
Рис. 269. Е) Рассматривая матрицу на рис. 268, видим, что нужно только вычесть 2 из всех элементов столбца
Рис. 270.
Рис. 271 Ж) Сумма элементов, вычтенных из строк и столбцов по Е), здесь равна 2. Следовательно, для вершины 3) Имеем матрицу порядка 4, поэтому переходим к И). И) Висячая вершина с наименьшим значением, равным 19, есть К) Л) В клетку строки В) Рассматривая матрицу на рис. 271 и вычисляя Г) Строим вершину
Рис. 272. Д) Строим вершину Е) Рассматривая матрицу на рис. 272, видим, что в каждой ее строке и каждом столбце есть по крайней мере один нулевой элемент.
Рис. 273.
Рис. 274 Ж) Сумма элементов, вычтенных из строк и столбцов по Е), здесь равна 0. Следовательно, для вершины 3) Имеем матрицу порядка 6, поэтому переходим к И). И) Висячая вершина с наименьшим значением, равным 19, есть К) В) Рассматривая матрицу на рис. 273 и вычисляя Г) Строим вершину Д) Строим вершину Е) Рассматривая матрицу на рис. 274, видим, что нужно только вычесть 1 из строки
Рис. 275.
Рис. 276. Ж) Сумма элементов, вычтенных из строк и столбцов по Е), здесь равна 1 Следовательно, для вершины 3) Имеем матрицу порядка 5, поэтому переходим к И). И) Висячие вершины с наименьшим значением, равным 20, — это К) В) Рассматривая матрицу на рис. 269 (воспроизведенную на рис 276 — выкладки для вершины 7 прадерева) и вычисляя Г) Строим вершину Д) Строим вершину Е) Рассматривая матрицу на рис. 278, видим, что ее элементы либо 0, либо Ж) Сумма элементов, вычтенных из строк и столбцов по Е), здесь равна 0. Следовательно, для вершины 3) Имеем матрицу порядка 3, поэтому переходим к И). И) Висячие вершины с наименьшим значением, равным К)
Рис. 277
Рис. 278 В) Очевидно, что для матрицы на рис. 278 все Г) Строим вершину Д) Строим вершину Вычеркивая строку
Рис. 279
Рис. 280 Е) Рассматривая матрицу на рис. 279, видим, что ее элементы либо 0, либо Ж) Сумма элементов, вычтенных из строк и столбцов по Е), здесь равна 0. Следовательно, для вершины 3) Имеем матрицу порядка 2, поэтому переходим к И). И) Выбираем вершину К) Вершина, выбранная в И), строилась с помощью Переходим В) Очевидно, что для матрицы на рис. 280 все значения
Рис. 281
Рис. 282 Выбираем клетку Г) Строим вершину
Рис. 283.
Рис. 284. Д) Строим вершину Е) Очевидно, что в матрице на рис. 281 ничего вычитать не требуется. Ж) Очевидно, что для вершины в Д) нижняя граница 3) Имеем матрицу порядка 1. Процесс закончен. Для последних двух вершин прадерева имеем нижние границы соответственно Добавляя дугу Найденное решение представлено на рис. 282—284. Это решение не единственно, что получается из-за того, что при построении прадерева выбор вершин в некоторых случаях не однозначен.
Рис. 285. Одно из других решений представлено на рис. 285—287. Замечания. При применении алгоритма Литтла в случае произвольного графа следует приписать символ Изложенный алгоритм позволяет находить некоторые другие решения, например почти оптимальные, т. е. решения, значения которых отличаются от оптимального на величину, не большую некоторого а. Нахождение гамильтонова контура с максимальным значением. Можно видоизменить для этого алгоритм Литтла, но предпочтительнее свести задачу к предыдущей.
Рис. 286
Рис. 287 Припишем символ
где Тогда построим матрицу, элементы которой определяются гак:
и применим к ней алгоритм Литтла. Полученное минимальное решение дает нам максимальное для матрицы Пример. Найдем гамильтонов контур с максимальным значением графа с матрицей стоимостей на рис. 288. Имеем
Матрица с элементами
изображена на рис. 289.
Рис. 288
Рис. 289. Читателю предоставляется возможность провести выкладки, приводящие к построению прадерева на рис. 290 (см. рис. Задача о назначениях. Пусть имеется
Если назначение (кликните для просмотра скана) (кликните для просмотра скана) Для решения этой задачи можно применить алгоритм Литтла, не используя в пункте Д) символа Для графа с матрицей стоимостей на рис. 304 процесс вычислений по этому алгоритму иллюстрируют рис. 305—330. На рис. 331 приведено другое решение. Нахождение минимального гамильтонова пути. Для нахождения минимального гамильтонова пути с фиксированным началом 1) поставить символ 2) в столбце
Рис. 304. Для нахождения минимального гамильтонова пути с нефиксированным началом следует ввести новую вершину Заметим, что если не существует гамильтонова пути, исходящего из заданной вершины, то об этом нас предупредит Пример. Вновь рассмотрим матрицу на рис. 257 и найдем минимальный гамильтонов путь с началом в Этим путем будет Нахождение максимального гамильтонова пути. Оно сводится к задаче отыскания максимального гамильтонова контура. Если начало пути не фиксируется, то достаточно ввести новую вершину 5 и соединить ее с вершинами (кликните для просмотра скана) (кликните для просмотра скана) (кликните для просмотра скана) (кликните для просмотра скана) (кликните для просмотра скана) (кликните для просмотра скана) (кликните для просмотра скана) УПРАЖНЕНИЯ(см. скан) (см. скан)
|
1 |
Оглавление
|