Научная статья на тему 'О возможности сокращения перебора в алгоритме Балаша'

О возможности сокращения перебора в алгоритме Балаша Текст научной статьи по специальности «Математика»

CC BY
439
47
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
АЛГОРИТМ БАЛАША / НЕВЯЗКА / ТУПИКОВАЯ ТОЧКА / BALASH''S ALGORITHM / DISCREPANCY / DEADLOCK POINT

Аннотация научной статьи по математике, автор научной работы — Анашкина Наталия Викторовна

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

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по математике , автор научной работы — Анашкина Наталия Викторовна

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

About possibility of reduction of sort out in Balash''s algorithm

An optimization of Balash's algorithm using particular feature of geometric structure of deadlock point's environs is presented.

Текст научной работы на тему «О возможности сокращения перебора в алгоритме Балаша»

ПРИЛОЖЕНИЕ

Сентябрь 2013

Секция 6

ВЫЧИСЛИТЕЛЬНЫЕ МЕТОДЫ В ДИСКРЕТНОЙ МАТЕМАТИКЕ

УДК 519.688

О ВОЗМОЖНОСТИ СОКРАЩЕНИЯ ПЕРЕБОРА В АЛГОРИТМЕ БАЛАША

Н. В. Анашкина

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

Ключевые слова: алгоритм Балаша, невязка, тупиковая точка.

Широкий класс задач дискретной математики сводится к анализу и решению систем нелинейных уравнений. Известны методы сведения этих систем [1, 2] к системам линейных ограничений вида

где , Ъг — целые числа; хг € {0,1}, г = 1,... ,т, ] = 1,... ,п.

Для нахождения решения (1) можно использовать как методы, работающие в действительной области, так и методы, позволяющие искать целочисленное решение [2-4]. Одним из таких алгоритмов является алгоритм Балаша, который предназначен для решения задач целочисленного программирования с булевыми переменными [1, 3, 5].

Для изложения алгоритма определим невязку системы (1) формулой

где х = (х1,...,хп); р(х, Ьг) —расстояние от вершины п-мерного куба х до плоскости Ьг, задаваемой г-м уравнением системы. Невязка ^(х) характеризует близость точки х к невыполнившимся неравенствам.

С геометрической точки зрения неравенства системы (1) задают разделяющие плоскости в п-мерном пространстве и введённая невязка представляет собой сумму расстояний от вершины х до отсекающих её плоскостей.

Алгоритм Балаша является локальным детерминированным траекторным алгоритмом. В качестве начального приближения хо берётся вектор (0,... , 0). В процессе поиска решения опробуются ближайшие к текущему векторы, на них вычисляется значение невязки системы, и следующим текущим становится вектор, на котором значение невязки минимально. Процесс продолжается до тех пор, пока не получим решение (нулевую невязку) или не попадём в тупиковую точку. Тупиковая точка характеризуется тем, что опробование всех векторов, отличающихся от полученного на

(1)

Мх) = Е p(x,Li),

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

Для некоторых классов систем вычислительная сложность работы алгоритма линейна [2, 3, 6]. При решении произвольной системы неравенств не всегда удаётся избежать попадания в тупиковую точку, в этом случае число итераций алгоритма зависит от количества встретившихся тупиковых точек. Естественно, что оптимизирующие модификации алгоритма должны тем или иным способом вести к уменьшению их количества. Одним из вариантов возможных модификаций является изменение критерия выбора приоритетного направления перемещения по вершинам п-мерного куба на основании учёта геометрических особенностей расположения плоскостей в окрестностях тупиковых точек.

Анализ причин попадания в тупиковые точки в процессе поиска решения с помощью алгоритма Балаша позволяет выявить в процессе работы алгоритма направления, продвижения в сторону которых приведёт к попаданию в тупиковую точку. Предположим, что на г-м шаге алгоритма при текущем векторе хг минимальная невязка достигается на векторе х, получаемом изменением ]-й координаты хг, и при этом вектор х не является решением. Далее опробуются смежные с х векторы у1, . . . , у к, полученные заменой одной из его нулевых координат на 1. Рассмотрим следующие случаи расположения некоторой плоскости и вершин х, у1,... , у к:

1) плоскость отсекает вершину х и у1,... , у к;

2) плоскость отсекает у1,..., у к.

Переход в вершину х при выполнении одного из условий обязательно приведёт в тупиковую ситуацию. Поэтому вершина х не может стать текущей, даже если невязка для неё минимальна при опробовании на предыдущем шаге всех непройденных и смежных с вершиной хг вершин. Из изложенного можно сделать вывод о том, что ]-я координата вектора-решения равна нулю. Такой подход позволяет расставлять не только единицы, но и нули, строя приближение к вектору решений.

С алгоритмической точки зрения попадания в тупиковую ситуацию в ряде случаев можно избежать, анализируя состояние системы в момент перехода в следующую вершину. При этом достаточно ввести для опробуемых и текущей вершин векторы-индикаторы выполнившихся неравенств. С их помощью легко выявить возникновение в ходе работы алгоритма случаев 1 и 2. Модификация алгоритма требует дополнительной емкостной сложности О(т) и вычислительной сложности О(п).

Проиллюстрируем работу модифицированного алгоритма на примере решения следующей системы линейных ограничений:

х1 + х2 + 2х3 + 5х5 — 6х6 + х7 ^ -5,

— 3х1 — х2 — 2х3 — — 2х5 — Жб — х7 ^ —3,

х1 + 2ж2 + 3ж3 — 7ж4 + 5ж5 + 2жб + ж7 ^ —3,

< —Ж1 — 3x2 + 4жз + 2Ж4 + 6Ж5 + 5x6 + 8x7 ^ 4, (2)

Ж11 + Ж2 + 4хз — 3x4 + 2x5 + 5хб + 6x7 ^ 3,

—Xl + 7x2 + xз + 8x4 + 2x5 + 3x6 + 8x7 ^ 12, x2 — ж3 + x4 — 2ж5 + xб — 4x7 ^ 0.

Традиционный алгоритм Балаша стартует из вершины ж0 = (0, 0, 0, 0, 0, 0, 0), в которой невязка системы ^^о) = 19. Опробование одной проставленной единицы даёт минимальное значение невязки, равное 8, на векторе ж1 = (0,0, 0, 0, 0,0,1).

Из этого вектора, в свою очередь, последовательно переходим в ж2 = (0,1, 0,0, 0, 0,1) с ^(ж2) = 3, ж3 = (0,1, 0, 0, 0,1,1) с ^(ж3) = 2, ж4 = (0,1,0,1,0, 0,1) с ^(ж4) = 2 и попадаем в тупиковую точку. Эта ветвь алгоритма потребовала проведения 25 вычислений невязок и так и не привела к успеху.

Предложенный модифицированный алгоритм уже на первом шаге устанавливает запрет на проставление единицы в первой и седьмой координатах вектора и присваивает шестой координате значение 1: ж1 = 0, ж7 = 0 и жб = 1. Отметим, что срабатывают первый и второй случаи стратегии запрета перехода в следующую вершину и блокируются возможности расстановки единиц соответственно по переменным ж7 и ж1, при этом ^(0, 0, 0, 0,0, 0,1) = 8 и является минимальной из всех посчитанных на первом шаге. В результате ж1 = (0, 0,0, 0, 0,1, 0). На втором шаге запрещается присваивание единицы переменным ж3 и ж5, переменной ж2 даётся значение 1 и получается вектор ж2 = (0,1, 0, 0, 0,1, 0). Присваивание единицы четвёртой координате приводит к нахождению решения ж3 = (0,1,0,1, 0,1,0). При этом модифицированная версия алгоритма потребовала вычисления невязки всего 11 раз.

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

ЛИТЕРАТУРА

1. Балакин Г. В., Никонов В. Г. Методы сведения булевых уравнений к системам пороговых соотношений // Обозрение прикладной и промышленной математики. 1994. Т. 1. Вып.3. С.389-401.

2. Рыбников К. К., Никонов Н. В. Прикладные задачи, сводящиеся к анализу и решению систем линейных неравенств. Метод разделяющих плоскостей // Вестник Московского государственного университета леса —Лесной вестник. 2002. №2(22). С.191-195.

3. Анашкина Н. В. Использование алгоритма Балаша для нахождения решения системы линейных ограничений специального вида // Вестник Московского государственного университета леса —Лесной вестник. 2004. №4(35). С. 176-179.

4. Кофман А, Анри-Лабордер А. Методы и модели исследования операций. М.: Мир, 1977. 432 с.

5. Анашкина Н. В. Обзор методов решения систем линейных неравенств // Вестник Московского государственного университета леса —Лесной вестник. 2004. №1(32). С. 144-148.

6. Гришухин В. П. Среднее число итераций в алгоритме Балаша // Сб. статей. Численные методы в линейном программировании. М.: Наука, 1973. С. 31-38.

УДК 519.688

СРАВНИТЕЛЬНЫЙ АНАЛИЗ НЕКОТОРЫХ АЛГОРИТМОВ РАСПОЗНАВАНИЯ ГЛАДКИХ ЧИСЕЛ

Д. С. Арбузов, Л. И. Туктарова

Приводятся результаты экспериментальных исследований трёх алгоритмов нахождения чисел, разложимых в заданной факторной базе: просеивания (с делением и логарифмического) и Бернштейна.

Ключевые слова: гладкие числа, просеивание, алгоритм Бернштейна.

i Надоели баннеры? Вы всегда можете отключить рекламу.