Памяти Сергея Тимофеевича Боброва (24 апреля 1949 г. – 20 ноября 2013 г. )

ЭВРИСТИЧЕСКИЙ АЛГОРИТМ ПОИСКА ПРИБЛИЖЁННОГО РЕШЕНИЯ ЗАДАЧИ ШТЕЙНЕРА,

ОСНОВАННЫЙ НА ФИЗИЧЕСКИХ АНАЛОГИЯХ

Лисин А.В., Файзуллин Р. Т.

Омский государственный технический университет

Аннотация

В статье проводится анализ существующих подходов к решению задачи Штейнера на основе физических аналогий. На основании анализа существующих решений предложен алгоритм поиска минимальных деревьев Штейнера, основанный на физических аналогиях и использующий триангуляцию Делоне для начального приближения. Приводится сравнение результатов работы предложенного алгоритма с результатами алгоритма с экспоненциальной сложностью, дающего оптимальные решения.

Ключевые слова: задача Штейнера, эвристический алгоритм, триангуляция Делоне.

Введение

Задача Штейнера на евклидовой плоскости формулируется следующим образом: пусть дано множество терминальных вершин на плоскости, требуется найти кратчайшую сеть, соединяющую заданное множество вершин. Важным условием является то, что для минимизации длины связывающей сети можно добавлять дополнительные точки, называемые точками Штейне-ра. Кратчайшая сеть, содержащая точки Штейнера, называется деревом Штейнера [1]. Задача поиска деревьев Штейнера играет важную роль в геодезии, проектировании дорожных сетей и т.д.

Задача Штейнера является ЖР-полной. В настоящий момент известно несколько комбинаторных алгоритмов, таких как алгоритмы Мелзака и Кокей-на [2], дающих оптимальное решение задачи Штейнера за экспоненциальное время. Так, например, алгоритм Кокейна уже для множества из восьми терминальных вершин проверяет 105 топологий. Очевидно, что подобные алгоритмы плохо подходят для практического применения для больших объёмов входных данных. В этой связи существует большое количество алгоритмов построения деревьев Штейнера, находящих приближённые решения.

В статье описывается приближённый алгоритм решения задачи Штейнера, основанный на физических аналогиях.

Анализ предыдущих результатов

Введём несколько определений, которые понадобятся для дальнейшего изложения.

Определение 1. Кратчайшей связывающей сетью (КСС) для вершин, принадлежащих множеству, назовём дерево с вершинами в этих точках, имеющее минимальную длину.

Определение 2. Локальным минимальным деревом Штейнера назовём дерево, построенное путём добавления точек Штейнера к заданным точкам, имеющее длину меньшую, чем кратчайшая связывающая сеть.

Использование физических аналогий является одним из популярных подходов для построения алгоритмов и устройств для поиска минимальных деревьев Штейнера. Так, классический эксперимент Куранта и Роббинса с системой из двух параллельных пластин, соединённых неподвижными штырьками, опускаемой в мыльный раствор, описанный в [1], позволяет получать

локальные минимальные деревья Штейнера для некоторых конфигураций терминальных вершин, соответствующих неподвижным штырькам, соединяющим пластины. В недавней статье [3] приводится попытка программной реализации эксперимента с мыльной плёнкой. Описанная в [3] программная реализация также включает в себя некоторые улучшения относительно эксперимента Куранта и Роббинса, связанные с выбором начального положения точек Штейнера.

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

Другой физической аналогией для построения минимальных деревьев Штейнера может случить система гравитирующих тел. Например, в [4] приводится алгоритм построения минимального дерева Штейне-ра, основанный на механических аналогиях и известных фактах о минимальных деревьях, подробно описанных в статье [5]. В [4] дерево интерпретируется как механическая система, потенциальная энергия которой равна сумме расстояний между смежными вершинами. Устойчивое равновесие такой механической системы предположительно соответствует локальному минимальному дереву Штейнера.

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

- сильная зависимость результатов от начальных данных. Длина полученного в результате работы алгоритма дерева Штейнера на некоторых начальных конфигурациях точек больше, чем длина кратчайшей связывающей сети;

- изменение «массы» точек слабо влияет на результат;

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

т.к. случайно сгенерированные точки могут попадать за пределы области, ограниченной фиксированными точками, что противоречит результату, приведённому в [5].

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

Постановка задачи Рассмотрим задачу поиска минимального дерева Штейнера для заданного множества терминальных вершин Q = {а1,а2,...,ап} на евклидовой плоскости.

Для нахождения кратчайшей связывающей сети для данных точек можно определить взвешенный неориентированный граф О = Е), где множество рёбер

Е = {(а1,а]) | 0 < I < п,0 < ] < п} . Вес каждого ребра

определяется как расстояние на евклидовой плоскости между точками, представляющими его инцидентные вершины. Для построенного графа кратчайшая связывающая сеть находится с помощью алгоритма Крускала [6].

Для построения алгоритма, находящего минимальное дерево Штейнера для заданного множества терминальных вершин, воспользуемся некоторыми известными свойствами деревьев Штейнера, перечисленных в [5]. Ниже приведён список этих свойств.

I. Угол между любыми двумя рёбрами в дереве Штейнера всегда >120°.

II. Ни одна вершина в дереве Штейнера не может быть инцидентна более чем трём рёбрам.

III. Количество точек Штейнера 5 ^ п - 2 , где п — количество терминальных вершин.

IV. Все точки Штейнера лежат в выпуклой оболочке, образованной вершинами а1,..., а1.

V. Каждая точка Штейнера соединена ребром как минимум с одной терминальной вершиной.

Для нахождения минимального дерева Штейнера воспользуемся механической моделью, аналогичной описанной в [4]. Для этого помимо координат х и у припишем каждой точке начальную массу, т.е. фактически заменим множество Q геометрических точек множеством Q* = {а*,а*,...,а*} материальных точек, где каж-

дому а1 ставятся в соответствие три значения (х, у, М), где М - масса фиксированных материальных точек.

Алгоритм поиска минимального дерева Штейнера состоит из трёх основных стадий:

1. Выбор начального приближения, что эквивалентно выбору начальных координат точек Штейнера.

2. Итеративный пересчёт координат точек Штейнера.

3. Обработка полученного результата.

Генерация точек Штейнера. Выбор начального приближения Итак, помимо присваивания масс терминальным вершинам, в начальный момент времени работы ал-

горитма генерируется некоторое количество точек Штейнера, итеративный пересчёт координат которых приводит к минимизации длины дерева Штейнера.

В соответствии со свойством II, для минимизации длины дерева необходимо сгенерировать максимум п - 2 точки Штейнера. Вопрос о наиболее выгодном начальном расположении этих точек являлся одним из основных вопросов данного исследования, поскольку использованные в других источниках варианты случайной генерации, генерации в прямоугольной области, ограничивающей заданное множество фиксированных точек, и случайная генерация внутри выпуклой оболочки зачастую приводит к результату, в котором длина дерева Штейнера больше длины кратчайшей связывающей сети. Численные эксперименты показали, что использование триангуляции Делоне [7] для определения начального положения точек Штейнера позволяет значительно улучшить результаты работы алгоритма.

Отметим важное свойство триангуляции Делоне: в случае, если Ь точек на плоскости образуют выпуклую оболочку, то количество треугольников в триангуляции не более 2п - 2 - Ь [7]. В частном случае, когда все п терминальных вершин образуют выпуклую оболочку, получаем количество треугольников в триангуляции N = 2п - 2 - п = п - 2, что точно соответствует максимальному количеству точек Штейнера в минимальном дереве.

Учитывая соответствие между количеством треугольников в триангуляции и количеством точек Штейнера в минимальном дереве, поместим дополнительные точки в центры масс полученных в ходе триангуляции треугольников. В этом случае начальные координаты точек Штейнера определяются по формулам:

= Мх1 + Мх2 + Мх3 = Му1 + Му2 + Му3

Хшт = 3М ' Ушт = 3М '

где (х1, у1), (х2, у2), (х3.у3) — координаты вершин треугольника, а М — масса терминальной вершины.

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

Итак, в наиболее простом случае, когда заданное множество Q терминальных вершин образует выпуклую оболочку и никакие три точки не лежат на одной прямой, количество треугольников в триангуляции точно равно п - 2 , что соответствует свойству II. На рис. 1 приведён пример начального приближения для семи терминальных вершин, являющихся вершинами выпуклого многоугольника.

В случае, когда количество треугольников в триангуляции N > п - 2 , лишние точки удаляются случайным образом.

Другим преимуществом триангуляции Делоне для определения начального положения точек Штейнера

является отсутствие проблемы поиска выпуклой оболочки, описанной в [4].

С о

Рис. 1. Начальное приближение для выпуклой области, образованной семью терминальными вершинами

Итерационная процедура пересчёта координат точек Штейнера

После определения начального положения каждой точке Штейнера приписывается масса тНТ < М .

На каждой итерации алгоритма происходит пересчёт координат точек Штейнера. Для этого к каждой точке Штейнера р1 применяется следующая процедура:

1. Для р1 выбирается ближайшая к ней точка Штейнера р*.

2. Проверяется условие

ЫЯп[(хА - хв )(ур* - уа ) - (ув - УА )(хр* - ха )] Ф

ф ^п[(хА - хв )(ур, - уа ) - (ув - уа )(хр, - хА )],

где (хА, уА) и (хв, ув) — соответствующие координаты двух вершин треугольника, внутри которого находится точка р,. Приведённое выше условие истинно тогда и только тогда, когда точки р, и р, лежат по разные стороны от прямой, содержащей отрезок [А, в].

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

4. Вычисляются силы, действующие на материальную

точку р1 со стороны материальных точек А , в , и р*.

Сила взаимодействия определяется по формулам

„ тнт -М „ „

= —Нт— (при взаимодействии с фиксированной точ-

кой) и = -

т

(при взаимодействии с другой точкой

Штейнера). В формулах взаимодействия тНТ — масса точек Штейнера, а М — масса фиксированных точек, а г — расстояние между взаимодействующими точками.

_ 3 __

5. Вычисляется результирующая трёх сил Я = ^ р .

к=1

Координаты точки р, пересчитываются по формулам:

Л „ ,Л^2

а 1

х = х +—-, у = у +

р1 пен р, ^ > У р, пен У р,

2

ау А2 2

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

Поясним некоторые особенности работы процедуры пересчёта координат точек Штейнера.

Условие из п. 2 является важным для устранения проблемы, описанной в [4], заключающейся в потере связанности графа из-за «склейки» точек Штейнера. Данная проблема возникает при условии, что на каждой итерации две точки Штейнера выбираются в качестве ближайших друг к другу и при этом для них в качестве ближайших выбираются две одинаковые терминальные вершины. В такой системе точки Штейнера будут бесконечно сближаться друг с другом, пока одна из них не будет «выброшена» за пределы системы действующей на неё силой. Можно оценить максимально возможное сближение точек Штейнера, которое не вызывает аномального поведения, связанного с перемещением точки за пределы оболочки заданного множества терминальных вершин.

Обозначим за Б диаметр множества Q заданных вершин. Ускорение, которое необходимо точке Штейнера для перемещения её на расстояние ^ Б за время Аг, равно

Б <-

аА

Р 2  2Б <—Аг2

т , 1т

^ 2Б <—Аг ^ г <л—Аг.

2 т г V2Б

Выполнение условия из п. 2 гарантирует, что точки Штейнера не будут бесконечно сближаться.

Рис. 2 поясняет первую проблему. Дополнительные точки р ид на каждом шаге выбирают друг

друга в качестве ближайших точек Штейнера и при этом выбирают одинаковые точки и в качестве ближайших терминальных вершин.

£

Рис. 2. «Склеивание» точек Штейнера

Вторая проблема, указанная в [4], - это появление точек Штейнера инцидентных более чем трём рёбрам, что противоречит свойству II. Вариант решения этой проблемы приведён в следующем разделе.

г

2

г

В [8] также приводятся некоторые частные случаи, для которых гравитационная модель даёт ошибочные результаты (рис. 3а, 36).

Рис. 3а. Дерево Штейнера, полученное с помощью гравитационной модели

Рис. 36. Минимальное дерево Штейнера В [9] приводятся примеры решений задачи поиска минимального дерева для некоторых вариантов начального расположения терминальных точек. Сравнение решений из [9] с решениями, полученными с помощью предлагаемого алгоритма, показывает, что для многих частных случаев гравитационная модель позволяет получить оптимальное или близкое к оптимальному решение. На рис. 4 приведён пример решения для структуры «лестница», полученный с помощью гравитационного алгоритма. Топология полученного решения совпадает с топологией оптимального решения.

Рис. 4. Решение для структуры «лестница» полученное с помощью гравитационной модели

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

Полученное на выходе множество вершин Н = 2 и £, где £ — множество точек Штейнера, можно попарно соединить рёбрами с весами, равными евклидову расстоянию между инцидентными этим рёбрам вершинами, определив тем самым полный взвешенный граф О* = (Н, Е*). Кратчайшее дерево

Штейнера, являющееся подграфом графа О*, легко находится с помощью алгоритма Крускала.

В общем случае, однако, полученный подграф не удовлетворяет условиям кратчайшего дерева Штей-нера из [5]. Одной из часто встречающихся проблем являются точки Штейнера, смежные более чем 3 вершинам. Для устранения подобных аномалий предлагается следующая простая процедура, применяемая к каждой вершине из множества £ :

1. Подсчитывается количество смежных вершин.

2. В случае, когда количество смежных вершин больше трёх, вершина удаляется.

3. С помощью алгоритма Крускала строится новое кратчайшее дерево.

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

Одна из типичных проблем изображена на рис. 5. Вершина ^ удовлетворяет условиям дерева Штейнера, однако не смежна ни с одной вершиной из множества 2 терминальных вершин. После первого применения процедуры удаления лишних вершин вершина 52 будет отброшена. После второго применения процедуры отброшенной окажется также точка ^, поскольку она перестаёт удовлетворять свойству V из [5].

Рис. 5. Устранение «висячей» вершины

Определим условия, при которых процедура удаления лишних вершин будет вызвана п - 2 раза, т.е. рассмотрим случай, при котором все вершины из множества £ не удовлетворяют условиям Штейнера.

Понятно, что при самом неблагоприятном исходе на каждой итерации будет отброшена лишь одна вершина. Таким образом, на первой итерации имеется лишь одна вершина 50, не удовлетворяющая условиям из [5]. Очевидно также, что вершина смежна с одной и только одной другой вершиной Штейнера. В противном случае процедура либо завершилась бы после первой итерации, либо на следующей итерации было бы удалено сразу две вершины.

Таким образом, на каждом / -м шаге появляется лишь одна вершина Штейнера -1 со степенью 2. При этом её удаление не приводит к образованию ребра, соединяющего вершину s¡ с какой-либо вершиной из множества 2 терминальных вершин.

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

Оценка качества алгоритма

В соответствии с [6] приближённый алгоритм, используемый для решения оптимизационной задачи, характеризуется величиной р(п), которую мы будем называть коэффициентом аппроксимации, если для произвольных входных данных размера п выполняется неравенство:

C С тах( — ^) < Р(п) ,

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

Важно отметить что поскольку задача Штейнера принадлежит к классу АР-полных, значение C может быть получено лишь с помощью алгоритмов с экспоненциальным временем работы, дающих оптимальное решение для заданного набора терминальных вершин.

Несмотря на это, известен факт, позволяющий судить о нижней оценке длины минимального дерева Штейнера.

Приведённая в [5] и доказанная в [10] гипотеза, получившая название гипотезы Джилберта-Поллака, говорит о том, что минимальная длина дерева Штей-нера не может быть короче, чем

БНТ ^ 2 КСС '

где ЬКСС — длина кратчайшей связывающей сети. Таким образом, минимальное дерево Штейнера не может быть более чем на 13,4 % короче длины кратчайшей связывающей сети.

Если не рассматривать вырожденный случай, когда все терминальные вершины лежат на одной прямой (и, соответственно, ЬКСС = Ь£НТ), то любой приближённый алгоритм, выдающий деревья Штейнера, длины которых попадают в полуинтервал

2

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

С другой стороны, известно некоторое количество точных решений, полученных с использованием ком-

бинаторных алгоритмов с экспоненциальным време-

нем работы. Так, в 80-е г. в США с помощью алгоритма Кокейна было получено решение задачи Штейнера для соединения сетью телефонных кабелей 29 городов [9]. Используя входные данные, для которых известны точные решения, в качестве входных данных для приближённых алгоритмов, можно оценить коэффициент аппроксимации последних.

Данные для задачи о связи 29 городов были использованы для оценки коэффициента аппроксимации предлагаемого алгоритма.

Другими критериями в оценке качества работы предлагаемого алгоритма являлись: а) количество полученных деревьев Штейнера, удовлетворяющих условию (2) для многократных запусков над случайными начальными данными и б) схожесть топологий приближённого и оптимального решений для задачи о 29 городах.

[ ^ 1КСС ,1КСС ) ,

На рис. 6 приведена гистограмма распределения

длин деревьев Штейнера для шести тысяч запусков

на данных задачи о 29 городах.

Количество деревьев 600 —-——

500 400 300 200 100 0

Длина КСС

ТПТть-п-и^-

1360

1380

1400 1420 Длина дерева

Рис. 6. Гистограмма длин минимальных деревьев,

полученных с помощью предлагаемого алгоритма

Поскольку предлагаемый алгоритм содержит несколько варьируемых параметров (массы точек, время взаимодействия между точками), длина получаемого дерева Штейнера может колебаться в зависимости от их значений. Полезно оценить минимальную длину дерева Штейнера, которую можно получить при многократных запусках, используя конкретные значения варьируемых параметров. Для оценки длины минимального дерева аппроксимируем распределение длин деревьев Штейнера аналитической функцией. Эта длина может быть использована в качестве стоимости С приближённого решения для неравенства (1). Известное же оптимальное решение, в свою очередь, может быть использовано в качестве параметра С*.

Аппроксимацию функции распределения длин деревьев Штейнера будем искать в виде Р (х) = а + Ьх + ох2 + йХ + вх4

по методу наименьших квадратов [6]. Базисные функции, соответственно, равны /0 (х) = 1, Л (х) = х, /2 (х) = х2, Л (х) = х3, /4 (х) = х4.

Поиск аппроксимирующей функции будем вести для части гистограммы, находящейся слева от значения длины КСС.

Найдём неизвестные коэффициенты по методу наименьших квадратов. Полученная аппроксимирующая функция выражается полиномом четвёртой степени:

Р (х) = -7,26-10'0 + 2,13-108 х - 2,34-108 х2 +

+1,14-103х3 -2.09-10-2х4.

График аппроксимирующей функции (3) в окрестности её пересечения с осью абсцисс изображён на рис. 7.

Функция (3) пересекает ось абсцисс в точке х = 1357,37. Эту длину дерева Штейнера можно считать минимальной из всех длин, которые можно получить, запуская алгоритм поиска для заданного множества терминальных вершин. Её значение можно присвоить параметру С из (1). Оптимальное же решение для задачи о 29 городах, соответствующее С , равно 1298,23. Это означает, что коэффициент аппроксимации алгоритма можно оценить как

( С С \ ( 1357,37 1298,23',

тах I —^,— I = тах I-,-| = 1,045 .

^С С ) ^ 1298,23 1357,37 ,

Количество деревьев б

Рис. 7. Аппроксимация функции распределения длин ДШ Важно отметить, что помимо непосредственно множества терминальных вершин входными параметрами алгоритма являются также их массы, мас-

сы точек Штейнера и время взаимодействия между точками.

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

Рис. 8 позволяет сравнить топологии известного решения для проблемы 29 городов и топологии лучшего результата, полученного с помощью предлагаемого алгоритма. Жирными линиями на рисунке обозначены совпадающие с известным решение рёбра, пунктиром — несовпадения. Разница между точным решением и лучшим решением, полученным в ходе эксперимента, составляет около 4,5 %. При этом оптимальное решение сокращает кратчайшую связывающую сеть на 6,01 %.

Рис. 8. Сравнение результата работы алгоритма с точным решением

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

Многократный запуск алгоритма над случайными входными данными демонстрирует нормальный характер распределения относительных длин получаемых решений по сравнению с длиной КСС.

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

В процессе работы алгоритм вызывает несколько подпроцедур, таких как поиск минимального остов-

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

Процедура Трудоёмкость Количество вызовов

Поиск минимального ос-товного дерева (алгоритм Крускала) О( Е 1см( Е)) 1

Триангуляция заданного множества точек О(п 1см(п)) 1

Пересчёт координат точек Штейнера О(п - 2)(п - 3) Задаётся в качестве входного параметра

Удаление точек, не удовлетворяющих условиям кратчайшего дерева Штейнера О(п) + О(Е 1оя( Е)) От 1 до п - 2

Из таблицы видно, что наибольшее время отнимает пересчёт координат точек Штейнера. При этом большую часть времени занимает процедура поиска ближайших точек (для каждой точки проверяются остальные n - 3 точек). Таким образом, трудоёмкость алгоритма можно грубо оценить как O(n2 ). Стоит заметить, что процедуру поиска ближайших точек можно значительно ускорить, запоминая промежуточные результаты поиска, однако задача оптимизации алгоритма не была приоритетной в контексте данной работы.

Заключение

В статье описан эвристический алгоритм поиска приближённого решения задачи Штейнера, основанный на физических аналогиях, использующий триангуляцию Делоне в качестве начального приближения.

Представленный алгоритм обладает следующими достоинствами :

- лёгкость программной реализации;

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

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

К недостаткам следует отнести:

- возможное появление решений, длина которых больше, чем длина кратчайшей связывающей сети;

- корректность работы лишь для евклидовой метрики.

Литература

1. Courant, R. What is Mathematics / R. Courant, H. Rob-bins. - Oxford University Press, 199б. - 55б p.

2. Hwang, F. The Steiner Tree Problem / F.K. Hwang, D.S. Richards, P. Winter // Annals of Discrete mathematics. - 1992. - Vol. 53.

3. Yang, Z.-X. Geometry Experiment Algorithm Steiner Minimal Tree Problem / Z.-X. Yang, X.-Y. Kia, J.-Y. Hao, Y.-P. Gao // Journal of Applied Mathematics. - 2013. -Vol. 2013. - P. 1-10.

4. Богаченко, Н.Ф. Механические аналогии в задаче Штейнера / Н.Ф. Богаченко, Р.Т. Файзуллин // Математические структуры и моделирование. - 2002. - № 9. - С. 1-S.

5. Gilbert, E.N. Steiner Minimal Trees / E.N. Gilbert, H.O. Pol-lak // Journal on Applied Mathematics. - 1968. - Vol. 16. -P. 323-345.

6. Кормен, Т. Алгоритмы. Построение и анализ / Т. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн. - 2-е изд. - М.: Издательский дом «Вильямс», 2012. - 1296 с.

7. Скворцов, А. В. Триангуляция Делоне и её применение / А.В. Скворцов. - Томск: Издательство Томского университета, 2002. - 128 с.

8. Marcelo, Z.N. An Interactive Programme for Steiner trees [Электронный ресурс]. URL: http://arxiv.org/abs/1210.7788 (дата обращения 28.08.2013).

9. Берн, М.У. / Поиск кратчайших сетей / М.У. Берн, Р. Л. Грэм // В мире науки. - 1989. - № 3.

10. Du, D.Z. An approach for proving lower bounds: Solution of Gilbert-Pollak's conjuncture on Steiner ratio / D.Z. Du, F.K. Hwang // Proc. 31-st Annual Symp. On Found. Of Comput. Sci. - 1990. - P. 76-85.

References

1. Courant, R. What is Mathematics / R. Courant, H. Robbins. - Oxford University Press, 1996. - 556 p.

2. Hwang, F. The Steiner Tree Problem / F.K. Hwang, D.S. Richards, P. Winter // Annals of Discrete mathematics. - 1992. - Vol. 53.

3. Yang, Z.-X. Geometry Experiment Algorithm Steiner Minimal Tree Problem / Z.-X. Yang, X.-Y. Kia, J.-Y. Hao, Y.-P. Gao // Journal of Applied Mathematics. - 2013. -Vol. 2013. - P. 1-10.

4. Bogachenko, N.F. Mechanical analogies in Steiner problem / N.F. Bogachenko, R.T. Faizullin // Mathematical structures and modeling. - 2002. - Vol. 9. - P. 1-8. - (In Russian).

5. Gilbert, E.N. Steiner Minimal Trees / E.N. Gilbert, H.O. Pol-lak // Journal on Applied Mathematics. - 1968. - Vol. 16. -P. 323-345.

6. Cormen, T. Introduction to Algorithms, / T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein. - 2nd edition. - Moscow: "Williams" Publisher, 2012. -1296 p. - (In Russian).

7. Skvortsov, A.V. Delaunay Triangulation and its Applications / A.V. Skvortsov. - Tomsk: "Tomsk University Press" Publisher, 2002. - 128 p. - (In Russian).

8. Marcelo, Z.N. An Interactive Pro-gramme for Steiner trees [Electronic resource]. URL: http://arxiv.org/abs/1210.7788

9. Bern, M.W. The Shortest-Network Problem / M.W. Bern, R.L. Graham // In the World of Science. - 1989. - Vol. 3 -(In Russian).

10. Du, D.Z. An approach for proving lower bounds: Solution of Gilbert-Pollak's conjuncture on Steiner ratio. / D.Z. Du, F.K. Hwang // Proc. 31-st Annual Symp. On Found. Of Comput. Sci. - 1990. - P. 76-85.

HEURISTIC ALGORITHM FOR FINDING APPROXIMATE SOLUTION OF STEINER PROBLEM BASED ON PHYSICAL ANALOGIES

A.V. Lisin, R.T. Faizullin Omsk State Technical University

Abstract

The article contains analyze of existent methods for solving Steiner problem that use physical analogies. Algorithm for construction of minimal Steiner trees based on existent solutions and De-launay triangulation for initial approximation is suggested. Done comparison of suggested algorithm output and one with exponential complexity, which produces exact results.

Key words: steiner problem, heuristic algorithm, Delaunay triangulation.

Сведения об авторах

Лисин Андрей Владимирович, аспирант Омского государственного технического университета кафедры комплексной защиты информации. Область научных интересов: математическое моделирование, численные методы, визуализация данных, теория алгоритмов.

E-mail: andrey.lisin@gmail.com .

Andrey Vladimirovich Lisin, a graduate school student at Omsk State Technical University of "Complex Information Protection" Department. Research interests: mathematical modeling, numerical methods, data visualization, theory of algorithms.

Файзуллин Рашит Тагирович, доктор технических наук (1999 г.), профессор Омского государственного технического университета кафедры комплексной защиты информации. В списке научных работ Р.Т. Файзуллина более 100 статей, 2 монографии.

E-mail: _ frt@omstu.ru .

Rashit Tagirovich Faizullin, Doctor of Technical Sciences (1999), Professor of Omsk State Technical University of "Complex Protection of Information" Department. He is co-author of more when 100 scientific papers, 2 monographs.

Поступила в редакцию 14 сентября 2013 г.