2. Алгоритм перебора L - классов
В
[?] и других работах развивается подход к анализу и решению задач
целочисленного программирования, основанный на регулярных разбиениях
пространства Rn. Много результатов было получено с помощью L-разбиения.
Дадим
определение L-разбиения. Пусть
,
- символы
лексикографического порядка. Точки
являются
L-эквивалентными, если не существует
, такой что
. Это
отношение разбивает любое множество
на классы
эквивалентности, которые называются L-классами. L-разбиение обладает рядом
важных свойств.
1)
Каждая точка
образует
отдельный L - класс. Остальные классы состоят только из нецелочисленных точек и
называются дробными.
2)
Если X ограниченное множество, то фактор-множество X/L - конечно.
3)
L - разбиение согласовано с лексикографическим порядком, то есть для любого X
все элементы X/L могут быть линейно упорядочены следующим образом:
для всех
.
Если
X ограничено, то X/L можно представить в виде

Рангом
L - класса V называется число
, если V
дробный L - класс и r(V) = n+1 для любой целой точки.
Алгоритм
перебора L - классов основан на идее поиска элемента L - разбиения, непосредственно следующего за данным L - классом в порядке лексикографического
возрастания (для задачи на минимум).
Пусть
. Рассмотрим
этот метод более подробно для многогранника
. Задача
булева программирования (БП) имеет вид:

|
|
|
(5)
|
Соответствующая
задача линейного программирования (ЛП) состоит в нахождении лексикографически
минимального элемента множества M.
Пусть
и известен
некоторый представитель
. Сначала мы
ищем соседний к V дробный элемент V' такой, что
где r - ранг
класса V, и x - некоторая точка из V'. Если V' будет найден, продолжаем процесс
для V' вместо V.
В
противном случае мы ищем V' такой, что
, - ранг V',
. Если V' не
может быть найден, мы уменьшаем (если это возможно) r' на 1 и продолжаем просмотр.
Если V' будет найден, мы возвращаемся к началу процедуры и V' становится
исходным L - классом.
Если
не существует соседнего дробного L-класса, то либо мы получаем оптимум задачи
БП, либо приходим к выводу, что задача не имеет решения. Процесс является
конечным, так как M ограничено.
Опишем
алгоритм перебора L - классов. Для простоты номер итерации будем опускать.
Шаг
0. Решаем исходную задачу ЛП. Если она не имеет решения или ее решение
целочисленное, процесс завершается. В противном случае идем на шаг 1.
Шаг
1. Обозначим через
оптимальное
решение задачи ЛП, которая рассматривалась на предыдущем шаге. Находим