Научная статья на тему 'Алгоритм поиска кратчайших путей для разреженных графов большой размерности'

Алгоритм поиска кратчайших путей для разреженных графов большой размерности Текст научной статьи по специальности «Математика»

CC BY
2250
338
i Надоели баннеры? Вы всегда можете отключить рекламу.
Область наук
Ключевые слова
ЗАДАЧА О КРАТЧАЙШИХ ПУТЯХ / РАЗБОРКА ГРАФА / СБОРКА ГРАФА / СЖАТИЕ ГРАФА / РАЗРЕЖЕННЫЕ ГРАФЫ / APSP / GRAPH DISASSEMBLY / GRAPH ASSEMBLY / SPARSE GRAPHS

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

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

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

All-pairs shortest paths algorithm for highdimensional sparse graphs

All-pairs shortest path problem on weighted undirected sparse graphs is considered. "Disassembly and assembly of graph" algorithm is proposed to obtain the solution of the problem for the given graph using the solution of the problem for a small-dimensional graph. The algorithm is compared with one of the fastest classic algorithms on public source data.

Текст научной работы на тему «Алгоритм поиска кратчайших путей для разреженных графов большой размерности»

ПРИКЛАДНАЯ ДИСКРЕТНАЯ МАТЕМАТИКА

2013 Прикладная теория графов №1(19)

УДК 519.178

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

А. Р. Ураков, Т. В. Тимеряев

Уфимский государственный авиационный технический университет, г. Уфа, Россия

E-mail: urakov@ufanet.ru, timeryaev@yandex.ru

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

Ключевые слова: задача о кратчайших путях, APSP, разборка графа, сборка графа, сжатие графа, разреженные графы.

Введение

Задача поиска кратчайших путей между всеми парами вершин графа (APSP — All-Pairs Shortest Path problem) является одной их классических в теории графов. Такой её статус обусловлен тем, что при решении оптимизационных задач на графах из многих областей (задача коммивояжёра, транспортная задача и многие другие) необходимо знать расстояния между всеми вершинами графа. Более того, сама задача представляет большой исследовательский интерес, так как её решение позволяет ответить, например, на такие вопросы:

— Как попасть из любого пункта А в любой пункт Б с наименьшими затратами времени/денежных средств?

— Каков ближайший/самый удалённый пункт для А и каково расстояние до него?

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

Для решения задачи APSP существует множество алгоритмов, но нет способа, получающего решения одинаково быстро для любого вида входов. В связи с этим алгоритмы решения APSP принято делить по типу графов, на которых задача решается. Известны алгоритмы, в которых входами являются направленные графы [1], полные графы [2], взвешенные графы [3], невзвешенные графы [4], разреженные графы [5].

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

1. Постановка задачи и определения

1.1. Термины и определения

Рассматривается задача поиска кратчайших путей на связном ненаправленном разреженном взвешенном графе О = (У,Е,т) с неотрицательными весами рёбер, где V = {у1 ,у2,...,уп} —множество вершин графа; Е = {е1,е2,... ,ет} С V х V — множество рёбер графа; т : Е ^ [0, то) — весовая функция на рёбрах. Ребро между вершинами уі и 'Юз будем обозначать є(уі,уз). Будем рассматривать простые графы — без петель и кратных рёбер.

Граф называется взвешенным (относительно рёбер), если каждому его ребру поставлено в соответствие число — вес ребра. Вес ребра между вершинами уі и у з обозначается т (і,і), для вершин уі и у3-, не связанных ребром, полагается т (і,і) = то. Степень в (юі) вершины уі — количество рёбер графа, инцидентных уі. Граф разреженный, если справедливо т ^ п2.

Путь в графе — чередующаяся последовательность вершин и рёбер у0, е1, у1, ... , Юк-1, &к, у к, каждое ребро которой инцидентно двум вершинам — непосредственно предшествующей ему и непосредственно следующей за ним. Длина пути — сумма весов входящих в него рёбер. Кратчайший путь рЗ = РЗ(уі, у з) между вершинами уі и у з — путь между Уі и Уз минимальной длины. Расстояние т (і, і) между уі и У3 —длина кратчайшего пути между уі и уз- (т (і, і) = 0, і = 1,... ,п). Матрица расстояний графа— матрица Мпхп с элементами тз = т(і,і). Граф связный, если между любыми двумя его вершинами существует путь, то есть тіз < то для всех і, і.

Между двумя вершинами графа может существовать несколько кратчайших путей. Этот аспект в данной работе не является существенным, поэтому при всех упоминаниях кратчайшего пути будем подразумевать любой кратчайший путь. Матрица предшествования — матрица Рпхп, элемент р^ которой представляет собой метку вершины, которая предшествует вершине уз в кратчайшем пути от уі до уз . То есть элементы матрицы Р определяются по формуле

С использованием матрицы Р кратчайший путь р3 для вершин уг = У3 в связном графе может быть определён по рекурсивной формуле

Обозначим через 5 и будем называть сжимающей граф О0 = (У0, Е0,т0) последовательность графов 5 = О1,О2,... ,Ог, где Ор = (Ур, Ер, тр); Vp = \у{,уР, ... , уП^ >;

Ер = |е1, Ср,... , еРт(р)^• Каждый следующий граф Ор+\ последовательности получается из предыдущего Ор удалением к вершин и инцидентных им рёбер, добавлением новых рёбер и пересчётом весов рёбер между вершинами, смежными с удалёнными.

нием вершин ур,ур,... ,укр и инцидентных им рёбер из графа Ор, будем обозначать Ор+1 = Яр (у1р,ур,... , ур). Для такого графа справедливо: тр+1 (і,і) = тр(і,і) для

РЗ (уі,Різ) ,е (Різ,уз) ,уз, Різ = уі, уі,є (уі,уз) ,уз, Різ = уі.

Різ = у і.

Для таких графов справедливо |^| > |^р+1|, Р = 0,... ,г — 1. Будем обозначать ур+1 вершину графа Ор+1, соответствующую вершине ур графа Ор, и ер+1 ( ) — реб-

ро графа Ср+1, соответствующее ребру ер (уР,ук) графа Ор. Граф, полученный удале-

всех i,j, таких, что vip+1,vjp+1 Є Vp+1. Расстояние между вершинами vp и vj графа Gp будем обозначать mp(i,j), а его матрицу расстояний — Mp = (mpj). Наконец, обозначим Ap множество всех смежных с Vp вершин в графе Gp.

1.2. Постановка задачи

Задача. Дан связный ненаправленный разреженный простой взвешенный граф G = (V, E, w) с неотрицательной вещественной весовой функцией на ребрах

w : E ^ [O, то). Необходимо для всех пар вершин графа найти кратчайший путь между вершинами в паре, т. е. найти матрицу расстояний M и матрицу предшествования P.

2. Алгоритм поиска решения 2.1. Общая идея

Принцип предлагаемого алгоритма состоит в сведении задачи на исходном графе большой размерности к задаче на графе малой размерности. Алгоритм можно разделить на три этапа:

1) сжатие — замена исходного графа графом меньшей размерности;

2) микрорешение — решение задачи о кратчайших путях на графе меньшей размерности с использованием существующих методов;

3) восстановление — перенос решения с графа меньшей размерности на исходный граф; пересчёт кратчайших расстояний для части вершин исходного графа.

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

Алгоритм, использующий похожие идеи, опубликован, например, в [б].

Для разреженных графов предлагается алгоритм «разборки и сборки графа». На этапе разборки из графа последовательно удаляются вершины, далее производится поиск решения на малом графе, после чего исходный граф собирается с получением искомых кратчайших расстояний. Отличие предлагаемого алгоритма от уже известных алгоритмов со сжатием или подменой рёбер состоит в том, что он достаточно прост, выполняет расчёт кратчайших путей сразу между всеми вершинами, при этом гарантированно находит точное решение (не является эвристическим). В частности, в [б] решается задача поиска кратчайшего пути от источника до пункта назначения (point-to-point), одной из основных целей которой является уменьшение времени запроса, тогда как время решения задачи APSP для графов большой размерности таким алгоритмом может быть весьма велико.

2.2. Р а з б о р к а

Этап разборки графа является многоступенчатым и состоит в последовательном приближении исходного графа G0 = (V0, E0,w0) графами сжимающей G0 последовательности S = {G1, G2,... , Gr}. Будем рассматривать частный случай, когда каждый следующий граф Gp+1 последовательности S получается из предыдущего графа Gp удалением одной вершины.

Пусть удаляемая вершина vp графа Gp имеет степень k, т. е. с ней смежны вершины v1^z, z = 1,...,k. Если какой-то из кратчайших путей графа проходит через вершину Vp (не считая путей от и до самой Vp), то этот путь обязательно содержит подпуть вида vp., ep(vp. ,vp),vp, ep(vp ,v1pi ),vPt, j,l Є {1, 2,... ,k}. Таким образом, при уда-

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

Р

между вершинами, смежными с щ.

Обозначим и(1^,ц) = шт (ир (г^,д) + ир (д,г{)) минимальную сумму

д=1,2,...,Н

весов двух рёбер, соединяющих вершины УР, и Ур1 и проходящих через одну из вершин ур,ур,... ,урр графа Ор. Для сохранения расстояний достаточно для всех пар вершин щР, ,ур^, смежных с ур в следующем графе ОР+1 последовательности, положить

Гшт (и™(г) (%з, ц) ,ир (ц ,гг)\ , если и™^ (^, ц) < и(г,),г1) , иР+1 (Ъ,г1)=\ ; (1)

\<ир (%з,г{) иначе.

В начале алгоритма вводится матрица Рпхп с элементами р^ = то. Для сохранения информации о путях элементы матрицы Р , для соответствующих номеров которых справедливо щГ^ (г^ ,ц) < шт ^иР (г3,гг) (г3,%\)^, изменяются по формуле

'Ріі і,

РІЦ>

у і, если рііі = то,

' ' /

Ріі, , Ріі, = то.

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

В качестве параметров на этапе разборки выступают /ітах — максимальная степень удаляемых вершин, птіп — число вершин в самом малом графе Ог и 1тах — ограничение на рост числа рёбер при удалении вершины. Вопрос совместного определения /ітах, Птт и 1тах является весьма объёмным, поэтому его рассмотрение остаётся вне рамок данной работы.

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

р ,1 (ур) + I, если тр (%з, ц) = то & тРГ^ (іі ,іі) < (іі, іі),

(Щ * I (ур) иначе. ()

Таким образом получим число, на которое изменится количество рёбер в графе ОР+1 по сравнению с ОР после удаления вершины уР. Если I (уР) > 0, число рёбер увеличится, иначе — уменьшится или останется неизменным. Использование формулы (3) предполагает применение ограничения 1тах на рост числа рёбер при удалении вершины: удаляются лишь те вершины ур, для которых выполняется неравенство I (ур) ^ 1тах.

В процессе разборки просмотр вершин — претендентов на удаление — происходит следующим образом. Так как при dmax ^ 2 вершины степени меньше 3 удаляются в любом случае, то рассмотрение вершин происходит в порядке роста их степеней от 1 до dmax. Это позволяет уменьшить степени оставшихся вершин и ускорить работу алгоритма за счёт меньшего числа просмотров вершин со степенями, близкими к dmax. После удаления вершины ур степени смежных с ней вершин могут измениться. Поэтому для того чтобы обеспечить удаление всех вершин со степенью d (ур) ^ dmax, после

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

Алгоритм 1. Разборка графа

Вход: граф Со = (Уо,Ео,щ), |Уо| = п; dmax, Птт, 1т«; Кхп = (Рр, Р= то для всех

г,3 = 1,...,п.

Шаг 0. Подготовка

dc = 1, г = 0, пс = п, р = 0.

Шаг 1. Выбор вершины 1: Если пс = птп, то 2: конец алгоритма,

3: иначе

4: Если Зур е Ур (з>г & d (уР) = dc), то

5: г = ], переход к шагу 2,

6: иначе

7: Если dc < dmax, то

8: dc = dc + 1, г = 0 и переход к шагу 1,

9: иначе

10: конец алгоритма.

Ш!аг 2. Проверка и удаление вершины 11: Проверка и удаление вершины (уР, пс, Imax, dmax, птП,р, Р ), переход к шагу 1. 12: Выход: граф Сг = СР.

2.3. Микрорешение

На этом этапе решается задача АРБР для графа Ог последовательности Б, полученного на этапе разборки. Результатом является матрица расстояний Мг графа Ог. Вводится матрица Мг = Мг и производится изменение матрицы Р по формулам

Р

і]

р

Рр

ІЗ’

Ріі

РІз

то & рРг З = то, то & рРг 3 = то;

Р

із

Р

ІРр

із’

тг (і, і) > тЗ & р'рг з = то, иг (і, і) > тг3 & ррг з = то,

(5)

где рЗ — элементы матрицы предшествования Рг графа Ог. Найденные на этом этапе пути между вершинами графа Ог будут гарантированно кратчайшими, так как удаление вершин, произведённое на этапе разборки, сохраняет расстояния. То есть справедливо тЗз = тЗ = т0з для всех і,і, таких, что у\,уг Є Уг.

Если Ог содержит всего одну вершину | УГ | = 1, то данный этап алгоритма пропускается и сразу выполняется сборка графа.

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

2.4. Сборка

До начала работы данного этапа (алгоритма 3) определена последовательность графов Б = (Со, 0\,... , Сг}. Здесь С0 —исходный граф, ОГ —наименьший граф последовательности, у которого на этапе микрорешения найдены кратчайшие пути между

т-З

г

Алгоритм 2. Вспомогательный алгоритм проверки и удаления вершины

Вход: вершина vp, текущее количество вершин nc, Imax, dmax, nmin, p, P'.

Шаг 1. Проверка вершины 1: Если d (vp) < 3, то 2: переход к шагу 2,

3: иначе

4: I (vip) = —d (vP). Рассматриваются все пары вершин множества Ap и изменяется

значение I (vP) по формуле (3).

5: Если I (vp) ^ Imax, ТО

6: переход к шагу 2,

7: иначе

8: конец алгоритма.

Ш!аг 2. Удаление вершины 9: Формируется новый граф Gp+\ = Rp (vp).

10: Пересчитываются веса рёбер между вершинами графа Gp+\, соответствующими вершинам множества Ap, по формуле (1).

11: Элементы матрицы P изменяются по формуле (2), nc = nc — 1, t = p, p = p +1.

12: Если nc = nmin, то 13: конец алгоритма,

14: иначе

15: Пока nc > nmin

16: для вершин vPl, таких, что d (v\j) < d (v\), выполняем

17: Проверка и удаление вершины (vp ,nc, Imax,dmin,nmin,p, P').

всеми вершинами. На этапе сборки производится обратный ход от Сг к С0 через графы Сг—1, Сг—2,... ,С1 с расчётом кратчайших путей на каждом шаге р для вершин уг р,

Г-р+1 Л т г г—р _ тг

таких, что у3 Є УГ—Р+і и уі Є Уг—р.

Вершина уГ—1, «добавляемая» на первом шаге к графу С г при переходе к Сг—1, соединена ребрами с вершинами уГ— 1, г = 1,... ,к, графа С г—1. У Сг вычислены кратчайшие пути, т. е. известна матрица Мг = Мг. Поэтому чтобы найти матрицу расстояний Мг_ 1 графа Сг —1, надо вычислить кратчайшие пути от вершины уг3 — 1 до всех вершин графа С г—1, положив остальные элементы матрицы Мг_ 1 равными соответствующим элементам М'г: тЗг1—1 = шЗЦ для всех уг ,уТ Є У г.

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

mr 1 (i,l) = min (wr_1 (i,iz)+ mr (iz,l)) .

z€{1,...,fc} V /

Формулы расчёта матрицы расстояний М'г—р при переходе от графа Сг—р+1 к графу Сг—р с добавлением вершины у[ р выглядят следующим образом:

тГ = т-,—р+1- у'—р+1. уГР+1 Є Уг—р+ї. (6)

тІі —р = ті’г—р = шіп Пиг-р (і, і*)+ т. г—р+1 (і;Л)\ , у[—р+2 Є Уг-р+і. (7)

*Є\1,...,к} V /

Обозначим х(1) номер гх для I, на котором достигается минимум формулы (7).

Элементы матрицы Р , для вершин которых либо иг-Р(г, I) > тЦ Р V иг-Р(1,г) > т^ либо р%1 = то V рн = то, изменяются по формулам

' г—р

Ріі

,

>, Рх(і)і

' ' / {рх(і)і, рх(і)і = то;

Ріі =

уЬ Рх(і )і = TO,

<Рх(і)І, рх(і)і = то.

Алгоритм 3. Сборка графа

Вход: Б = (Со, 01,..., Сг}, М'г, Р 1: р =1.

2: Пока р ^ г

3: расчёт матрицы Мг—р по формулам (6), (7) и матрицы Р по формулам (8) и (9);

р = р +1.

4: Выход: матрица М0, матрица Р .

2.5. Корректность алгоритма

Утверждение 1. Предложенные алгоритмы «сборки и разборки графа» являются корректным, т. е. найденные в результате сборки матрицы М0 и Р являются соответственно матрицами расстояний и предшествования исходного графа С0.

Доказательство. Сначала докажем корректность относительно матрицы Мд. Производимое на этапе разборки графа удаление вершин сохраняет расстояния между оставшимися вершинами, это следует из формулы (1). На втором этапе алгоритма находятся кратчайшие (относительно графа С0) расстояния: т^ = т3°1 для всех уг ,у\ Є Уг. На этапе сборки вычисляются кратчайшие расстояния между всеми вершинами графа; для доказательства этого достаточно показать, что при переходе от графа Сг к Сг—1 находятся кратчайшие расстояния в графе Сг—1 (в силу формулы (6) достаточно доказать это для расстояний от «добавляемой» вершины уг-1 до всех остальных вершин графа Сг—1). Это справедливо в силу сохранения расстояний для графа Сг—1 и того, что кратчайшие пути от любой вершины проходят через смежные с ней вершины, т. е. в силу формулы (7).

Теперь докажем корректность относительно матрицы Р'. Покажем, что на этапе микрорешения для всех вершин графа Сг находятся корректные элементы матрицы Р . В силу сохранения расстояний в графе Сг кратчайший путь р/ (уз,уі) от у3 до уі содержит подпуть рЗ,... , уі. Согласно формуле (2), если ррг 3 = то, то рв (рЗ ,уз)

не содержит вершин, кроме рЗ и уз, т. е. рз = рЗ. Если же р'рг з = то, то, согласно (2), Ря (рТз,уз) = Рз,... ,ррг.3,е(рргз,уз),уз, т. е. рз = рргзз. Расчёт по формулам (4), (5) производится для тех р3і, уг ,у\ Є Уг, которые либо ещё не известны, либо определены неверно. Для р3і = то и тг(і,1) = т^ в силу (2) значения уже определены верно на этапе разборки и не требуют пересчёта, т. е. рц = рзі для всех уз ,уг Є Уг.

По индукции, для доказательства корректности матрицы Р' достаточно показать, что при переходе от графа Сг к Сг—1 корректно определяются элементы матрицы Р для «добавляемой» вершины уг-1. Это следует из сохранения расстояний для Сг—1,

корректности P для vr ,Vr Е Vr и того, что кратчайшие пути от любой вершины проходят через смежные с ней вершины, т. е. в силу формул (8), (9). ■

3. Результаты эксперимента

Все тесты проводились на компьютере с процессором Intel Core 2 Duo E8400 с частотой 3ГГц и объемом памяти 2 Гбайт в 32-разрядной версии Windows XP. Программный код написан на языке C+—+ с использование среды разработки Borland C+—+ Builder 6. В качестве тестовых данных использовались взвешенные графы дорожных сетей США из открытого доступа (G1-G10) [7]. Из графов G1-G10 были получены связные подграфы размерностью от 103 до 104 в количестве 10 шт. для каждой размерности. Еще одним набором тестовых данных были графы дорожных сетей городов России (GR, подробные характеристики см. в [8]). Характеристики тестовых графов представлены в табл. 1.

Таблица 1

Характеристики тестовых графов

Группа Среднее кол-во Среднее кол-во Средняя Макс.

графов вершин рёбер степень вершин степень вершин

G1 103 2,5 • 103 2,48 6

G2 2 • 103 5,21 • 103 2,6 5

G3 3 • 103 7, 8 00 1 О и 2,62 6

G4 4 • 103 1,07 • 104 2,68 6

G5 5 • 103 1, 3 СО 1 О 2,66 6

G6 6 • 103 1,58 • 104 2,63 7

G7 7 • 103 1,85 • 104 2,64 6

G8 8 • 103 2, 0 00 1 О 2,6 6

G9 9 • 103 0 1 6 ,3 2, 2,62 7

G10 104 0 1 2 ,7 2, 2,72 7

2,1 • 103 6 • 103 2,86 14

Графов

10

20

Тестирование проводилось при = 1тах = то, ит\п = 1. То есть при разборке удаляются вершины с любой степенью до тех пор, пока в наименьшем графе Ог не останется лишь одна вершина. Соответственно второй этап алгоритма — микрорешение — не выполняется. Разработанный алгоритм (обозначение БП) сравнивался с одним из быстрейших алгоритмов для разреженных графов — алгоритмом Дейкстры в реализации с двоичной кучей (обозначение ДД, [4]), выполняемым для всех вершин тестовых графов. Результаты тестов приведены в табл. 2.

Использование предлагаемого алгоритма позволяет ускорить вычисление кратчайших путей графа в среднем в 47 раз в сравнении с алгоритмом Дейкстры. На всех тестовых графах алгоритм БП оказался быстрее алгоритма Дейстры, наибольшее по всем группам графов время счёта БП оказалось в 34 раза меньше аналогичного времени ДД. Рост максимальной степени вершины в графах последовательности Б = (0\, 02,... , Ог) во время работы алгоритма явился допустимым и не превысил 17, что говорит о невысоком росте сложности процедуры удаления вершины на этапе разборки для исследованных графов.

Таблица 2

Результаты тестов

Группа графов БП, среднее время, с ДД, среднее время, с БП, макс. время, с ДД, макс. время, с Среднее ускор. БП/ДД, раз БП, макс. степень удал. верш.

G1 0,03 1,5 0,05 1,7 50 11

G2 0,13 6,7 0,14 7,1 52 12

G3 0,31 16 0,33 17 52 12

G4 0,67 30 0,88 32 45 22

G5 1,1 48 1,2 52 44 16

G6 1,5 72 1,8 82 48 20

G7 2,1 97 2,2 104 46 17

G8 2,6 131 2,8 145 50 21

G9 3,7 177 4,7 189 48 24

G10 5,4 218 6,4 230 40 23

GR 0,17 7,5 0,4 18,8 45 17

Заключение

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

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

ЛИТЕРАТУРА

1. Bellman R. On a routing problem // Quarter. Appl. Math. 1958. No. 16. P. 87-90.

2. Floyd R. W. Algorithm 97: Shortest Path // Comm. ACM. 1962. No 5(6). P. 345.

3. Dijkstra E. W. A note on two problems in connexion with graphs // Numer. Math. 1959. No. 1. P. 269-271.

4. Кормен Т. Х. и др. Алгоритмы: построение и анализ. М.: Вильямс, 2006. 1296 с.

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

5. Johnson D. B. Efficient algorithms for shortest paths in sparse graph // J. ACM. 1977. No. 24. P. 1-13.

6. Geisberger R., Sanders P., et al. Contraction hierarchies: faster and simpler hierarchical routing in road networks // International Workshop on Experimental Algorithms (WEA 2008). Provincetown: Springer, 2008. P. 319-333.

7. http://www.dis.uniroma1.it/challenge9/download.shtml — 9th DIMACS Implementation Challenge — Shortest Paths (дата обращения: ноябрь 2012).

8. Ураков А. Р., Тимеряев Т. В. Использование особенностей взвешенных графов для более быстрого определения их характеристик // Прикладная дискретная математика. 2012. №2. C. 95-99.

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