1294
правки
Irina (обсуждение | вклад) |
KVN (обсуждение | вклад) |
||
(не показано 16 промежуточных версий 1 участника) | |||
Строка 6: | Строка 6: | ||
Пусть G = (V, E) – неориентированный граф, в котором |V| = n и |E| = m. Реберная связность двух вершин <math>s, t \in V \;</math> , обозначаемая как <math>\lambda (s, t) \;</math> , равняется размеру наименьшего разреза, который разделяет s и t; такой разрез называется минимальным s-t-разрезом. Очевидно, что значения <math>\lambda (s, t) \;</math> для всех пар вершин s и t можно представить в таблице размера <math>O(n^2) \; </math>. Однако из соображений эффективности лучше выбрать более сжатое представление всех значений <math>\lambda (s, t) \;</math>. Деревья Гомори-Ху, также известные как [[динамические деревья]], представляют собой такое сжатое представление линейного (то есть O(n)) объема и с константным (то есть O(1)) временем просмотра. Они имеют еще одно преимущество: помимо представления всех значений <math>\lambda (s, t) \;</math>, они также содержат структурную информацию, на основании которой для любой пары вершин s и t легко может быть получен минимальный s-t-разрез. | Пусть G = (V, E) – неориентированный граф, в котором |V| = n и |E| = m. Реберная связность двух вершин <math>s, t \in V \;</math> , обозначаемая как <math>\lambda (s, t) \;</math> , равняется размеру наименьшего разреза, который разделяет s и t; такой разрез называется минимальным s-t-разрезом. Очевидно, что значения <math>\lambda (s, t) \;</math> для всех пар вершин s и t можно представить в таблице размера <math>O(n^2) \; </math>. Однако из соображений эффективности лучше выбрать более сжатое представление всех значений <math>\lambda (s, t) \;</math>. Деревья Гомори-Ху, также известные как [[динамические деревья]], представляют собой такое сжатое представление линейного (то есть O(n)) объема и с константным (то есть O(1)) временем просмотра. Они имеют еще одно преимущество: помимо представления всех значений <math>\lambda (s, t) \;</math>, они также содержат структурную информацию, на основании которой для любой пары вершин s и t легко может быть получен минимальный s-t-разрез. | ||
Неориентированный граф (слева) и соответствующее дерево Гомори-Ху (справа): | |||
[[Файл:GomoryHuTree.jpg]] | [[Файл:GomoryHuTree.jpg]] | ||
Формально дерево Гомори-Ху T = ( | Формально дерево Гомори-Ху T = (V, F) для неориентированного графа G = (V, E) представляет собой взвешенное неориентированное дерево, определенное на вершинах графа, для которого выполняются следующие свойства: | ||
• Для любой пары вершин <math>s, t \in V \;</math> , <math>\lambda (s, t) \;</math> равно минимальному весу ребра уникального пути, соединяющего s и t в T. | • Для любой пары вершин <math>s, t \in V \;</math> , <math>\lambda (s, t) \;</math> равно минимальному весу ребра уникального пути, соединяющего s и t в T. Обозначим это ребро как e(s, t). Если на пути из s к t в T имеется несколько ребер с минимальным весом, любое из этих ребер обозначается как e(s, t). | ||
• Для любой пары вершин s и t биразбиение вершин на компоненты, получаемые в результате удаления e(s, t) (при наличии нескольких кандидатов на e(s, t) это свойство выполняется для каждого из этих ребер) из T соответствует минимальному s-t-разрезу исходного графа G. | • Для любой пары вершин s и t биразбиение вершин на компоненты, получаемые в результате удаления e(s, t) (при наличии нескольких кандидатов на e(s, t) это свойство выполняется для каждого из этих ребер) из T соответствует минимальному s-t-разрезу исходного графа G. | ||
Строка 24: | Строка 25: | ||
Все предыдущие алгоритмы построения деревьев Гомори-Ху в неориентированных графах использовали подпрограммы нахождения максимального потока. Гомори и Ху показали, как вычислить динамическое дерево T при помощи n – 1 операций вычисления максимального потока и операций сжатия графа. Гусфилд [8] предложил алгоритм, не использующий операций | Все предыдущие алгоритмы построения деревьев Гомори-Ху в неориентированных графах использовали подпрограммы нахождения максимального потока. Гомори и Ху показали, как вычислить динамическое дерево T при помощи n – 1 операций вычисления максимального потока и операций сжатия графа. Гусфилд [8] предложил алгоритм, не использующий операций сжатия графа; все n – 1 операций вычисления максимального потока выполняются на исходном графе. Голдберг и Цюцюликлис [6] выполнили экспериментальное исследование алгоритмов, предложенных Гомори и Ху, а также Гусфилдом, для решения задачи поддержания динамического дерева, и описали эффективные реализации этих алгоритмов. Бенцур [1] привел примеры, демонстрирующие, что динамические деревья с отрезанием не существуют для ориентированных графов. | ||
Любой подход к построению дерева Гомори-Ху, основанный на нахождении максимального потока, будет | Любой подход к построению дерева Гомори-Ху, основанный на нахождении максимального потока, будет выполняться за время, в (n – 1) раз большее времени единичного вычисления максимального потока. До сих пор все более быстрые алгоритмы построения деревьев Гомори-Ху были побочными продуктами более быстрых алгоритмов нахождения максимального потока. Самый быстрый на данный момент алгоритм нахождения максимального потока с временем <math>\tilde{O} (m + n \lambda (s, t))</math> (полилогарифмические сомножители n в <math>\tilde{O}</math>-нотации игнорируются), авторами которого были Каргер и Левайн [10], дает наилучшее ожидаемое время выполнения для алгоритма построения дерева Гомори-Ху на простых невзвешенных графах с n вершинами, равное <math>\tilde{O} (n^3) \; </math>. Балгат и коллеги [2] улучшили эту временную сложность до <math>\tilde{O} (mn) \; </math>. Заметим, что оба вышеупомянутых алгоритма являются рандомизированными алгоритмами Лас-Вегаса. Самый быстрый детерминированный алгоритм для задачи построения дерева Гомори-Ху является побочным продуктом алгоритма нахождения максимального потока Голдберга-Рао [5] и имеет время выполнения <math>\tilde{O} (nm^{1/2} min(m, n^{3/2}))</math>. | ||
== Основные результаты == | == Основные результаты == | ||
Балгат и коллеги [2] рассматривали задачу создания эффективного алгоритма построения дерева Гомори-Ху на невзвешенных неориентированных графах. | Балгат и коллеги [2] рассматривали задачу создания эффективного алгоритма построения дерева Гомори-Ху на невзвешенных неориентированных графах. Центральное место в их работе занимает теорема 1. | ||
'''Теорема 1. Пусть G = (V, E) – простой невзвешенный граф, имеющий m ребер и n вершин. Тогда дерево Гомори=Ху для графа G можно построить за ожидаемое время <math>\tilde{O} (mn)</math>''' | '''Теорема 1. Пусть G = (V, E) – простой невзвешенный граф, имеющий m ребер и n вершин. Тогда дерево Гомори=Ху для графа G можно построить за ожидаемое время <math>\tilde{O} (mn)</math>''' | ||
Скорость их алгоритма всегда на коэффициент | Скорость их алгоритма всегда на коэффициент <math>\tilde{\Omega} (n^{2/9}) \; </math> (полилогарифмические сомножители n в <math>\tilde{\Omega}</math>-нотации игнорируются) выше, чем у предыдущей самой быстрой версии алгоритма. | ||
Вместо подпрограмм нахождения максимального потока они использовали алгоритм связности по Штейнеру. Связность по Штейнеру множества вершин S (называемого множеством Штейнера) в неориентированном графе представляет собой минимальный размер разреза, разделяющего S на две части; такой разрез называется минимальным разрезом Штейнера. Обобщая алгоритм упаковки дерева, предложенный Габовым [4], для целей нахождения реберной связности графа, Коул и Харинаран [3] предложили алгоритм нахождения связности k по Штейнеру для множества вершин в неориентированных или ориентированных невзвешенных Эйлеровых графах за время <math>\tilde{O} (mk^2) \; </math>. ( | Вместо подпрограмм нахождения максимального потока они использовали алгоритм связности по Штейнеру. Связность по Штейнеру множества вершин S (называемого [[множество Штейнера|множеством Штейнера]]) в неориентированном графе представляет собой минимальный размер разреза, разделяющего S на две части; такой разрез называется минимальным разрезом Штейнера. Обобщая алгоритм упаковки дерева, предложенный Габовым в [4], для целей нахождения реберной связности графа, Коул и Харинаран [3] предложили алгоритм нахождения связности k по Штейнеру для множества вершин в неориентированных или ориентированных невзвешенных Эйлеровых графах за время <math>\tilde{O} (mk^2) \; </math>. (На неориентированных графах алгоритм работает несколько быстрее – за время <math>\tilde{O}(m + nk^3) \; </math>.) Балгат и коллеги улучшили этот результат, предложив следующую теорему. | ||
Строка 43: | Строка 44: | ||
Харихаран и коллеги [9] использовали алгоритм из [3] для разработки алгоритма с ожидаемым временем | Харихаран и коллеги [9] использовали алгоритм из [3] для разработки алгоритма с ожидаемым временем выполнения <math>\tilde{O}(m + nk^3) \; </math> для вычисления частичного дерева Гомори-Ху для представления значений <math>\lambda (s, t) \;</math> для всех пар вершин s и t, удовлетворяющих условию <math>\lambda (s, t) \le k \;</math>. Замена алгоритма из [3] новым алгоритмом вычисления связности по Штейнеру позволяет получить частичное дерево Гомори-Ху за ожидаемое время <math>\tilde{O}(m + nk^2) \; </math>. Балгат и коллеги показали, что при помощи более детального анализа этот результат можно улучшить, предложив следующую теорему. | ||
Теорема 3. Частичное дерево Гомори-Ху для невзвешенного неориентированного графа для представления всех значений <math>\lambda (s, t) \;</math>, не превышающих k, может быть построено за ожидаемое время <math>\tilde{O} (mk)</math>. | '''Теорема 3. Частичное дерево Гомори-Ху для невзвешенного неориентированного графа для представления всех значений <math>\lambda (s, t) \;</math>, не превышающих k, может быть построено за ожидаемое время <math>\tilde{O} (mk)</math>.''' | ||
Строка 56: | Строка 57: | ||
== Открытые вопросы == | == Открытые вопросы == | ||
Задача дерандомизации алгоритма, предложенного Балгатом и коллегами [2], с целью создания детерминированного алгоритма построения дерева Гомори-Ху на невзвешенных неориентированных графах с временем | Задача дерандомизации алгоритма, предложенного Балгатом и коллегами [2], с целью создания детерминированного алгоритма построения дерева Гомори-Ху на невзвешенных неориентированных графах с временем выполнения <math>\tilde{O} (mn) \; </math> остается открытой. Еще одна нерешенная задача – расширение результатов работы [2] на взвешенные графы. | ||
== Экспериментальные результаты == | == Экспериментальные результаты == | ||
Голдберг и Цюцюликлис [6] выполнили широкомасштабное экспериментальное исследование алгоритмов, предложенных Гомори и Ху, а также Гусфилдом, для решения задачи поддержания динамического дерева. Они | Голдберг и Цюцюликлис [6] выполнили широкомасштабное экспериментальное исследование алгоритмов, предложенных Гомори и Ху, а также Гусфилдом, для решения задачи поддержания динамического дерева. Они продемонстрировали варианты эффективной реализации этих алгоритмов, а также предложили и оценили эвристики для ускорения их выполнения. Согласно их наблюдениям, алгоритм Гусфилда во многих ситуациях работает быстрее, зато алгоритм Гомори и Ху более надежен. Более детальное описание результатов экспериментов можно найти в [6]. | ||
Для алгоритма, предложенного Балгатом и коллегами [2], экспериментальных результатов пока не получено. [2]. | Для алгоритма, предложенного Балгатом и коллегами [2], экспериментальных результатов пока не получено. [2]. | ||
== См. также == | == См. также == | ||
Строка 86: | Строка 86: | ||
10. Karger, D., Levine, M.: Random Sampling in Residual Graphs. In: Proc. of the 34th Annual ACM Symposium on Theory of Computing 2002, pp. 63-66 | 10. Karger, D., Levine, M.: Random Sampling in Residual Graphs. In: Proc. of the 34th Annual ACM Symposium on Theory of Computing 2002, pp. 63-66 | ||
[[Категория: Совместное определение связанных терминов]] |