Ветвь и Связанное объяснение

9

У меня есть тест на ветвь и связанный алгоритм. Я теоретически понимаю, как работает этот алгоритм, но я не смог найти примеров, иллюстрирующих, как этот алгоритм может быть реализован практически.

Я нашел несколько примеров, таких как этот, но я все еще смущен этим. Я также искал проблему коммивояжера и не мог ее понять.

Что мне нужно, так это некоторые проблемы и как можно решить эти проблемы с помощью ветвления и привязки.

MR.NASS
источник
1
Что было трудно понять? ты пытался вернуться назад?
Да, я попробовал это. Проблема с B & B заключается в том, что если у меня возникает проблема, которую можно решить с помощью B & B, я не знаю, как получить нижнюю границу для каждого узла, а также как получить целевую функцию. Кроме того, что является первым значением bestsofar, которое я сравниваю с каждой нижней границей?
MR.NASS
2
@ MR.NASS Я не уверен, что именно вы говорите в своем последнем комментарии. Позвольте мне попытаться объяснить. B & B - это метод сокращения дерева поиска. Это может быть применено к задачам, которые должны оптимизировать целевую функцию. Обычно применяется для дискретных или комбинаторных задач оптимизации. На каждом шаге вы пытаетесь найти нижнюю границу целевой функции для всех оставшихся возможных решений. Если нижняя граница выше текущего наилучшего решения, вы можете остановить поиск и вернуться назад (обрезать дерево поиска), поскольку не может быть решения с более низким счетом.
Джордж
2
Обычно для решения нижней оценки решают упрощенную версию задачи. Для смешанных целочисленных программ это обычно релаксация линейного программирования.
Opt
2
@ MR.NASS Это зависит от целевой функции. Как сказал Сид, вы обычно решаете расслабленную версию данной проблемы. Обычно хочется использовать расслабленную версию, которая дает хорошее приближение к исходной проблеме и может быть эффективно решена. Обратите внимание, что для правильной работы расслабленная версия должна давать нижнюю границу, которая максимально равна истинной нижней границе. Другой пример: предположим, что вы хотите решить MAXSAT методом B & B. Для данного частичного присвоения правды вы можете легко вычислить количество удовлетворенных предложений. Верхняя граница (поскольку это проблема максимизации) ...
Джордж

Ответы:

10

Давайте применим Branch и Bound к ранцу , надеюсь, это прояснит вам концепцию.

n1nviiwiT

v1n1v1n1

iinO(2n)

Tn/2n/2+1nn/2+1n2n/2

dO(2d)

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

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

Обратите внимание, что Branch and Bound обычно дает вам только увеличение скорости на практике, но не в теории: трудно сказать, сколько именно дерева поиска вырезано с использованием вашей эвристики. Об этом свидетельствует количество различных эвристик, используемых на практике для решения таких задач. Если вам не повезло, оставшееся дерево поиска остается огромным, даже с большим количеством ограничений.

Алекс тен Бринк
источник
4

Рассмотрите планирование , задачу назначения заданий с определенной продолжительностью и сроками для машин. Мы предполагаем дискретное время. Многие такие проблемы являются NP (O) -hard.

1riLmax

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

Версия решения этой проблемы NP-трудна; это можно увидеть по сокращению от 3PARTITION .

Интересно, что если мы допустим приоритетное вытеснение , то есть замену активных заданий, проблема может быть решена за квадратичное время с помощью эвристики «Самый ранний срок исполнения» («Измененные сроки исполнения»). Нетрудно видеть, что оптимальное решение этого варианта может быть не хуже оптимального решения исходной задачи.

Теперь, чтобы применить Branch & Bound к этой проблеме, нам нужно исправить некоторые параметры:

  • Мы вычисляем нижние границы, допуская приоритет и используя EDD.
  • Мы осуществляем ветвление, исправляя каждую из незапланированных работ как следующую.
  • Сначала мы идем к ребенку с нижней границей.

Вы должны сделать это для каждого приложения B & B.


Для конкретного примера рассмотрим этот экземпляр :1riLmax

i1234pi4265ri0135di8121110

с время обработки заданий, даты выпуска и сроки исполнения.piridi

При выполнении B & B, как указано выше, это происходит:

алгоритм
Этот GIF не зацикливается. Перезагрузите его в новой вкладке, чтобы увидеть с самого начала.
[ источник ] [ статическая версия ]

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

Рафаэль
источник