WikiDer > Дерево Гомори – Ху

Gomory–Hu tree

В комбинаторная оптимизация, то Дерево Гомори – Ху[1] неориентированного графа с емкостями является взвешенным дерево что представляет собой минимум s-т сокращения для всех s-т пары в графе. Дерево Гомори – Ху можно построить в |V | − 1 максимальный поток вычисления.

Определение

Позволять грамм = ((Vграмм, Eграмм), c) - неориентированный граф с c(ты,v) - емкость ребра (ты,v) соответственно.

Обозначим минимальную вместимость s-т вырезано λул для каждого s, тVграмм.
Позволять Т = (Vграмм, EТ) - дерево, обозначим множество ребер в s-т путь по пул для каждого s, тVграмм.

потом Т считается Дерево Гомори – Ху из грамм, если для каждого s, тVграмм

λул = минe∈Pул c(Sе, Те),

куда

  1. Sе, ТеVграмм две компоненты связности Т∖{е}, и поэтому (Sе, Те) для мужчин s-т врезаться грамм.
  2. c(Sе, Те) - емкость разреза грамм.

Алгоритм

Алгоритм Гомори – Ху

Вход: Взвешенный неориентированный граф G = ((Vграмм, Eграмм), c)
Выход: Дерево Гомори – Ху Т = (VТ, EТ).
1 комплект VТ = {Vграмм} и EТ = ∅.
2. Выберите несколько ИксVТ с | Икс | ≥ 2, если такие Икс существуют. В противном случае переходите к шагу 6.
3. Для каждого связного компонента C = (VC, EC) в ТИкс. Позволять SC = ∪vТ∈VC vТ. Позволять S = { SC | C компонент связности в ТИкс}.
Сожмите компоненты, чтобы сформировать грамм' = ((VГРАММ', EГРАММ'), c'), куда
VГРАММ' = ИксS.
EГРАММ' = Eграмм|Х × Х ∪ {(ты, SC) ∈ Икс×S | (ты,v)∈Eграмм для некоторых vSC} ∪ {(SC1, SC2) ∈ S ×S | (ты,v)∈Eграмм для некоторого u∈SC1 и vSC2}.
c' : VГРАММ'×VГРАММ'р+ функция емкости, определяемая как,
  1. если (ты,SC)∈Eграмм|X × S, c'(ты,SC) = Σv∈SC: (u, v) ∈Eграммc(ты,v),
  2. если (SC1,SC2)∈Eграмм|S × S, c'(SC1,SC2) = Σ(u, v) ∈Eграмм: u∈SC1∧v∈SC2 c(ты,v),
  3. c'(ты,v) = c(ты,v) иначе.
4. Выберите две вершины s, тИкс и найди минимум s-т резать (А',B') в грамм'.
Набор А = (∪SCА'∩S SC) ∪ (А' ∩ Икс) и B = (∪SCB'∩S SC) ∪ (B' ∩ Икс).
5. Установите VТ = (VТИкс) ∪ {АИкс, BИкс}.
Для каждого е = (Икс, Y) ∈ EТ делать
Если YА, набор е' = (АИкс, Y), иначе установите е' = (BИкс, Y).
Набор EТ = (EТ∖{е}) ∪ {е'} и ш(е') = ш(е).
Набор EТ = EТ ∪ {(АИкс, BИкс)}.
Набор ш((АИкс, BИкс)) = c'(А', B').
Переходите к шагу 2.
6. Замените каждый {v} ∈ VТ к v и каждый ({ты},{v}) ∈ EТ к (ты,v). Выход Т.

Анализ

С использованием субмодульный свойство функции емкости c, надо

c(Икс) + c(Y) ≥ c(ИксY) + c(ИксY).

Тогда можно показать, что минимальная s-т врезаться грамм'также минимум s-т врезаться грамм для любого s, тИкс.

Чтобы показать это всем (п, Q) ∈ EТ, ш(п,Q) = λpq для некоторых пп, qQ на протяжении всего алгоритма используется следующая лемма,

Для любого я, j, k в Vграмм, λik ≥ min (λij, λjk).

Лемму можно использовать снова и снова, чтобы показать, что выход Т удовлетворяет свойствам дерева Гомори – Ху.

Пример

Ниже приводится моделирование алгоритма Гомори – Ху, где

  1. зеленый круги являются вершинами Т.
  2. красный и синий круги - это вершины в грамм'.
  3. серый вершины выбраны s и т.
  4. красный и синий окраска представляет собой s-т резать.
  5. пунктирная края являются s-т вырезать набор.
  6. А - это множество вершин, обведенных в красный и B - это множество вершин, обведенных в синий.
грамм'Т
Гоморы – Ху Г.svgГомори – Ху Т.svg
1 комплект VТ = {Vграмм} = {{0, 1, 2, 3, 4, 5}} и EТ = ∅.
2. Поскольку VТ имеет только одну вершину, выберите Икс = Vграмм = {0, 1, 2, 3, 4, 5}. Обратите внимание, что | Икс | = 6 ≥ 2.
1.Гомори – Ху Gp1.svgГомори – Ху T1.svg
3. Поскольку ТИкс = ∅, сжатия нет и, следовательно, грамм' = грамм.
4. Выберите s = 1 и т = 5. Минимум s-т резать (А', B') равно ({0, 1, 2, 4}, {3, 5}) с c'(А', B') = 6.
Набор А = {0, 1, 2, 4} и B = {3, 5}.
5. Установите VТ = (VТИкс) ∪ {АИкс, BИкс} = { {0, 1, 2, 4}, {3, 5} }.
Набор EТ = { ({0, 1, 2, 4}, {3, 5}) }.
Набор ш( ({0, 1, 2, 4}, {3, 5}) ) = c'(А', B') = 6.
Переходите к шагу 2.
2. Выберите Икс = {3, 5}. Обратите внимание, что | Икс | = 2 ≥ 2.
2.Гомори – Ху Gp2.svgГомори – Ху T2.svg
3. {0, 1, 2, 4} - компонент связности в ТИкс и поэтому S = { {0, 1, 2, 4} }.
Контракт {0, 1, 2, 4} для формирования грамм', куда
c'( (3, {0, 1, 2 ,4}) ) = c( (3, 1) ) + c( (3, 4) ) = 4.
c'( (5, {0, 1, 2, 4}) ) = c( (5, 4) ) = 2.
c'( (3, 5)) = c( (3, 5) ) = 6.
4. Выберите s = 3, т = 5. Минимум s-т резать (А', B') в грамм'равно ({{0, 1, 2, 4}, 3}, {5}) с c'(А', B') = 8.
Набор А = {0, 1, 2, 3, 4} и B = {5}.
5. Установите VТ = (VТИкс) ∪ {АИкс, BИкс} = { {0, 1, 2, 4}, {3}, {5} }.
С (Икс, {0, 1, 2, 4}) ∈ EТ и {0, 1, 2, 4} ⊂ А, замените его на (АИкс, Y) = ({3}, {0, 1, 2 ,4}).
Набор EТ = {({3}, {0, 1, 2, 4}), ({3}, {5})} с
ш(({3}, {0, 1, 2 ,4})) = ш((Икс, {0, 1, 2, 4})) = 6.
ш(({3}, {5})) = c'(А', B') = 8.
Переходите к шагу 2.
2. Выберите Икс = {0, 1, 2, 4}. Обратите внимание, что | Икс | = 4 ≥ 2.
3.Гомори – Ху Gp3.svgГоморы – Ху T3.svg
3. {{3}, {5}} - компонент связности в ТИкс и поэтому S = { {3, 5} }.
Контракт {3, 5} на формирование грамм', куда
c'( (1, {3, 5}) ) = c( (1, 3) ) = 3.
c'( (4, {3, 5}) ) = c( (4, 3) ) + c( (4, 5) ) = 3.
c'(ты,v) = c(ты,v) для всех ты,vИкс.
4. Выберите s = 1, т = 2. Минимальный s-т резать (А', B') в грамм'is ({1, {3, 5}, 4}, {0, 2}) с c'(А', B') = 6.
Набор А = {1, 3, 4, 5} и B = {0, 2}.
5. Установите VТ = (VТИкс) ∪ {АИкс, BИкс} = { {3}, {5}, {1, 4}, {0, 2} }.
С (Икс, {3}) ∈ EТ и {3} ⊂ А, замените его на (АИкс, Y) = ({1, 4}, {3}).
Набор EТ = {({1, 4}, {3}), ({3}, {5}), ({0, 2}, {1, 4})} с
ш(({1, 4}, {3})) = ш((Икс, {3})) = 6.
ш(({0, 2}, {1, 4})) = c'(А', B') = 6.
Переходите к шагу 2.
2. Выберите Икс = {1, 4}. Обратите внимание, что | Икс | = 2 ≥ 2.
4.Гомори – Ху Gp4.svgГоморы – Ху T4.svg
3. {{3}, {5}}, {{0, 2}} - компоненты связности в ТИкс и поэтому S = { {0, 2}, {3, 5} }
Контракт {0, 2} и {3, 5} для формирования грамм', куда
c'( (1, {3, 5}) ) = c( (1, 3) ) = 3.
c'( (4, {3, 5}) ) = c( (4, 3) ) + c( (4, 5) ) = 3.
c'( (1, {0, 2}) ) = c( (1, 0) ) + c( (1, 2) ) = 2.
c'( (4, {0, 2}) ) = c( (4, 2) ) = 4.
c'(ты,v) = c(ты,v) для всех ты,vИкс.
4. Выберите s = 1, т = 4. Минимум s-т резать (А', B') в грамм'равно ({1, {3, 5}}, {{0, 2}, 4}) с c'(А', B') = 7.
Набор А = {1, 3, 5} и B = {0, 2, 4}.
5. Установите VТ = (VТИкс) ∪ {АИкс, BИкс} = { {3}, {5}, {0, 2}, {1}, {4} }.
С (Икс, {3}) ∈ EТ и {3} ⊂ А, замените его на (АИкс, Y) = ({1}, {3}).
С (Икс, {0, 2}) ∈ EТ и {0, 2} ⊂ B, замените его на (BИкс, Y) = ({4}, {0, 2}).
Набор EТ = {({1}, {3}), ({3}, {5}), ({4}, {0, 2}), ({1}, {4})} с
ш(({1}, {3})) = ш((Икс, {3})) = 6.
ш(({4}, {0, 2})) = ш((Икс, {0, 2})) = 6.
ш(({1}, {4})) = c'(А', B') = 7.
Переходите к шагу 2.
2. Выберите Икс = {0, 2}. Обратите внимание, что | Икс | = 2 ≥ 2.
5.Гоморы – Ху Gp5.svgГоморы – Ху T5.svg
3. {{1}, {3}, {4}, {5}} - компонент связности в ТИкс и поэтому S = { {1, 3, 4, 5} }.
Контракт {1, 3, 4, 5} на формирование грамм', куда
c'( (0, {1, 3, 4, 5}) ) = c( (0, 1) ) = 1.
c'( (2, {1, 3, 4, 5}) ) = c( (2, 1) ) + c( (2, 4) ) = 5.
c'( (0, 2) ) = c( (0, 2) ) = 7.
4. Выберите s = 0, т = 2. Минимальный s-т резать (А', B') в грамм'равно ({0}, {2, {1, 3, 4, 5}}) с c'(А', B') = 8.
Набор А = {0} и B = {1, 2, 3 ,4 ,5}.
5. Установите VТ = (VТИкс) ∪ {АИкс, BИкс} = { {3}, {5}, {1}, {4}, {0}, {2} }.
С (Икс, {4}) ∈ EТ и {4} ⊂ B, замените его на (BИкс, Y) = ({2}, {4}).
Набор EТ = {({1}, {3}), ({3}, {5}), ({2}, {4}), ({1}, {4}), ({0}, {2} ) } с
ш(({2}, {4})) = ш((Икс, {4})) = 6.
ш(({0}, {2})) = c'(А', B') = 8.
Переходите к шагу 2.
2. Не существует ИксVТ с | Икс | ≥ 2. Переходите к шагу 6.
6.

Гомори – Ху output.svg

6. Заменить VТ = {{3}, {5}, {1}, {4}, {0}, {2}} на {3, 5, 1, 4, 0, 2}.
Заменять EТ = {({1}, {3}), ({3}, {5}), ({2}, {4}), ({1}, {4}), ({0}, {2} )} на {(1, 3), (3, 5), (2, 4), (1, 4), (0, 2)}.
Выход Т. Обратите внимание, что именно |V | - 1 = 6 - 1 = 5 раз выполняется расчет min-cut.

Реализации: последовательные и параллельные

Алгоритм Гасфилда можно использовать для поиска дерева Гомори – Ху без сжатия вершин при той же временной сложности, что упрощает реализацию построения дерева Гомори – Ху.[2]

Эндрю В. Гольдберг и К. Циутсиуликлис реализовали алгоритм Гомори-Ху и алгоритм Гусфилда и выполнили экспериментальную оценку и сравнение.[3]

Cohen et al. сообщить результаты двух параллельных реализаций алгоритма Гасфилда с использованием OpenMP и MPI соответственно.[4]

Связанные понятия

В планарные графы, дерево Гомори – Ху двойственно минимальному весу основа цикла, в том смысле, что разрезы дерева Гомори – Ху двойственны набору циклов в двойственный граф которые составляют основу цикла минимального веса.[5]

Смотрите также

Рекомендации

  1. ^ Гоморы, Р.Э.; Ху, Т. С. (1961). «Многотерминальные сетевые потоки». Журнал Общества промышленной и прикладной математики. 9 (4): 551–570. Дои:10.1137/0109047.
  2. ^ Гасфилд, Дэн (1990). «Очень простые методы анализа потоков в сети для всех пар». SIAM J. Comput. 19 (1): 143–155. Дои:10.1137/0219009.
  3. ^ Гольдберг, А. В .; Циутсиуликлис, К. (2001). «Алгоритмы вырезания дерева: экспериментальное исследование». Журнал алгоритмов. 38 (1): 51–83. Дои:10.1006 / jagm.2000.1136.
  4. ^ Cohen, J .; Л. А. Родригес; Ф. Сильва; Р. Кармо; А. Гуэдес; Э. П. Дуарте младший (2011). "Параллельные реализации алгоритма дерева разрезов Гасфилда". Конспект лекций по информатике (LNCS). 7016. Springer. 7016 (11-я Международная конференция «Алгоритмы и архитектуры для параллельной обработки» (ICA3PP)): 258–269. Дои:10.1007/978-3-642-24650-0_22. ISBN 978-3-642-24649-4. ISSN 0302-9743.
  5. ^ Hartvigsen, D .; Мардон, Р. (1994). «Задача минимального разреза всех пар и проблема базиса минимального цикла на плоских графах». SIAM J. Дискретная математика. 7 (3): 403–418. Дои:10.1137 / S0895480190177042..