4551
правка
Irina (обсуждение | вклад) (Новая страница: «Ключевые слова и синонимы Полностью динамическая реберная связность; полностью динамич…») |
Irina (обсуждение | вклад) Нет описания правки |
||
Строка 1: | Строка 1: | ||
Ключевые слова и синонимы | == Ключевые слова и синонимы == | ||
Полностью динамическая реберная связность; полностью динамическая вершинная связность | [[Полностью динамическая реберная связность]]; [[полностью динамическая вершинная связность]] | ||
== Постановка задачи == | |||
Задача заключается в эффективной поддержке информации о реберной и вершинной связности в динамически меняющемся графе. | |||
Пусть даны неориентированный граф G = (V, E) и целое число к > 2. Пара вершин hu; vi называется k-реберно-связной, если при удалении любых (k — 1) ребер графа G вершины u и v остаются связанными. Нетрудно заметить, что в данном случае имеет место отношение эквивалентности: вершины графа G этим отношением разбиваются на классы эквивалентности, называемые k-реберно-связными компонентами. Граф G называется k-реберно-связным, если при удалении любых (k — 1) ребер G сохраняет связность. Согласно этим определениям, граф G является k-реберно-связным в том и только том случае, если любые две вершины G являются k-реберно-связными. Множество ребер E0 С E является реберным разрезом для вершин x и y, если удаление всех ребер, входящих в E0, разбивает G на два графа, один из которых содержит x, а другой – y. Множество ребер E0 С E является реберным разрезом для G, если удаление всех ребер, входящих в E0, разбивает G на два графа. Реберный разрез E0 графа G (для x и y, соответственно) является минимальным, если удаление любого ребра из E0 восстанавливает связность G (x и y, соответственно). Мощность реберного разреза E0, обозначаемая jE0j, задается числом ребер в E0. Реберный разрез E0 графа G (вершин x и y, соответственно) называется реберным разрезом минимальной мощности или, вкратце, реберным разрезом связности, если не существует другого реберного разреза E00 графа G (x и y, соответственно), такого, что \E"\ < jE0j. Реберные разрезы связности, разумеется, являются минимальными реберными разрезами. Заметим, что G является k-реберно-связным в том и только том случае, если реберный разрез связности для G содержит не менее k ребер, а вершины x и y являются k-реберно-связными в том и только том случае, если реберный разрез связности для x и y содержит не менее k ребер. Реберный разрез связности, мощность которого равна 1, называется мостом. | Пусть даны неориентированный граф G = (V, E) и целое число к > 2. Пара вершин hu; vi называется k-реберно-связной, если при удалении любых (k — 1) ребер графа G вершины u и v остаются связанными. Нетрудно заметить, что в данном случае имеет место отношение эквивалентности: вершины графа G этим отношением разбиваются на классы эквивалентности, называемые k-реберно-связными компонентами. Граф G называется k-реберно-связным, если при удалении любых (k — 1) ребер G сохраняет связность. Согласно этим определениям, граф G является k-реберно-связным в том и только том случае, если любые две вершины G являются k-реберно-связными. Множество ребер E0 С E является реберным разрезом для вершин x и y, если удаление всех ребер, входящих в E0, разбивает G на два графа, один из которых содержит x, а другой – y. Множество ребер E0 С E является реберным разрезом для G, если удаление всех ребер, входящих в E0, разбивает G на два графа. Реберный разрез E0 графа G (для x и y, соответственно) является минимальным, если удаление любого ребра из E0 восстанавливает связность G (x и y, соответственно). Мощность реберного разреза E0, обозначаемая jE0j, задается числом ребер в E0. Реберный разрез E0 графа G (вершин x и y, соответственно) называется реберным разрезом минимальной мощности или, вкратце, реберным разрезом связности, если не существует другого реберного разреза E00 графа G (x и y, соответственно), такого, что \E"\ < jE0j. Реберные разрезы связности, разумеется, являются минимальными реберными разрезами. Заметим, что G является k-реберно-связным в том и только том случае, если реберный разрез связности для G содержит не менее k ребер, а вершины x и y являются k-реберно-связными в том и только том случае, если реберный разрез связности для x и y содержит не менее k ребер. Реберный разрез связности, мощность которого равна 1, называется мостом. | ||
Следующая теорема, которую предложили Форд и Фулкерсон, а также Элиас, Файнштайн и Шеннон [ ], дает еще одну характеристику k-реберной-связности. | Следующая теорема, которую предложили Форд и Фулкерсон, а также Элиас, Файнштайн и Шеннон [ ], дает еще одну характеристику k-реберной-связности. | ||
Теорема 1 (Форд и Фулкерсон; Элиас, Файнштайн и Шеннон). Пусть даны граф G и две вершины x и y, принадлежащие G. x и y являются k-реберно-связными в том и только том случае, если между x и y имеется не менее k путей с непересекающимися ребрами. | Теорема 1 (Форд и Фулкерсон; Элиас, Файнштайн и Шеннон). Пусть даны граф G и две вершины x и y, принадлежащие G. x и y являются k-реберно-связными в том и только том случае, если между x и y имеется не менее k путей с непересекающимися ребрами. | ||
Подобным же образом, множество вершин V0 С V — {x, yg называется вершинным разрезом для вершин x и y, если удаление всех вершин V0 разрывает связь между x и y. V0 С V является вершинным разрезом для вершин графа G, если удаление всех вершин V0 разбивает G. | Подобным же образом, множество вершин V0 С V — {x, yg называется вершинным разрезом для вершин x и y, если удаление всех вершин V0 разрывает связь между x и y. V0 С V является вершинным разрезом для вершин графа G, если удаление всех вершин V0 разбивает G. | ||
Мощность вершинного разреза V0, обозначаемая jV0j, задается числом дуг в V0. Вершинный разрез V0 для x и y называется вершинным разрезом минимальной мощности или, вкратце, вершинным разрезом связности, если не существует другого вершинного разреза V00 для x и y, такого, что \V"\ < jV0j. Тогда x и y являются k-вершинно-связными в том и только том случае, если вершинный разрез связности для x и y содержит не менее k вершин. Граф G называется k-вершинно-связным, если все его пары вершин являются k-вершинно-связными. Вершинный разрез связности, мощность которого равна 1, называется точкой сочленения; вершинный разрез связности мощности 2 называется парой разделителей. Заметим, что для связности по вершинам уже неверно утверждение о том, что вершинный разрез связности разбивает граф G на два множества вершин. | Мощность вершинного разреза V0, обозначаемая jV0j, задается числом дуг в V0. Вершинный разрез V0 для x и y называется вершинным разрезом минимальной мощности или, вкратце, вершинным разрезом связности, если не существует другого вершинного разреза V00 для x и y, такого, что \V"\ < jV0j. Тогда x и y являются k-вершинно-связными в том и только том случае, если вершинный разрез связности для x и y содержит не менее k вершин. Граф G называется k-вершинно-связным, если все его пары вершин являются k-вершинно-связными. Вершинный разрез связности, мощность которого равна 1, называется точкой сочленения; вершинный разрез связности мощности 2 называется парой разделителей. Заметим, что для связности по вершинам уже неверно утверждение о том, что вершинный разрез связности разбивает граф G на два множества вершин. | ||
Следующая теорема, предложенная Менгером [7], дает еще одну характеристику k-вершинной связности. | Следующая теорема, предложенная Менгером [7], дает еще одну характеристику k-вершинной связности. | ||
Теорема 2 (Менгер). Пусть даны граф G и две вершины x и y, принадлежащие G. x и y являются k-вершинно-связными в том и только том случае, если между x и y имеется не менее k вершинно-непересекающихся путей. | Теорема 2 (Менгер). Пусть даны граф G и две вершины x и y, принадлежащие G. x и y являются k-вершинно-связными в том и только том случае, если между x и y имеется не менее k вершинно-непересекающихся путей. | ||
Динамический алгоритм на графе поддерживает заданное свойство P графа, подверженного динамическим изменениям – таким как вставка дуги, удаление дуги и обновление веса дуги. Динамический алгоритм должен быстро обрабатывать запросы о свойстве T, а также выполнять операции обновления быстрее, чем вычислять то же самое с нуля при помощи самого быстрого статического алгоритма. Алгоритм является полностью динамическим, если он поддерживает как вставку дуг, так и удаление дуг. Частично динамический алгоритм поддерживает либо вставку, либо удаление дуг; инкрементный алгоритм поддерживает только вставку дуг, декрементный – только удаление. В полностью динамической задаче k-реберной связности нам требуется поддержка неориентированного графа G = (V, E) и выполнение последовательности следующих операций в различном порядке: | Динамический алгоритм на графе поддерживает заданное свойство P графа, подверженного динамическим изменениям – таким как вставка дуги, удаление дуги и обновление веса дуги. Динамический алгоритм должен быстро обрабатывать запросы о свойстве T, а также выполнять операции обновления быстрее, чем вычислять то же самое с нуля при помощи самого быстрого статического алгоритма. Алгоритм является полностью динамическим, если он поддерживает как вставку дуг, так и удаление дуг. Частично динамический алгоритм поддерживает либо вставку, либо удаление дуг; инкрементный алгоритм поддерживает только вставку дуг, декрементный – только удаление. В полностью динамической задаче k-реберной связности нам требуется поддержка неориентированного графа G = (V, E) и выполнение последовательности следующих операций в различном порядке: | ||
• k-EdgeConnected(u, v): возвращает значение «истинно», если вершины u и v принадлежат к одной и той же k-реберно-связной компоненте графа, в противном случае возвращает значение «ложно». | • k-EdgeConnected(u, v): возвращает значение «истинно», если вершины u и v принадлежат к одной и той же k-реберно-связной компоненте графа, в противном случае возвращает значение «ложно». | ||
• Insert(x, y): вставляет новую дугу между вершинами x и y. | • Insert(x, y): вставляет новую дугу между вершинами x и y. | ||
• Delete(x,y): удаляет дугу между вершинами x и y. | • Delete(x,y): удаляет дугу между вершинами x и y. | ||
В полностью динамической задаче k-вершинной связности нам требуется поддержка неориентированного графа G = (V, E) и выполнение последовательности следующих операций в различном порядке: | В полностью динамической задаче k-вершинной связности нам требуется поддержка неориентированного графа G = (V, E) и выполнение последовательности следующих операций в различном порядке: | ||
• k-VertexConnected(u, v): возвращает значение «истинно», если вершины u и v принадлежат к одной и той же k-вершинно-связной компоненте графа, в противном случае возвращает значение «ложно». | • k-VertexConnected(u, v): возвращает значение «истинно», если вершины u и v принадлежат к одной и той же k-вершинно-связной компоненте графа, в противном случае возвращает значение «ложно». | ||
• Insert(x, y): вставляет новую дугу между вершинами x и y. | • Insert(x, y): вставляет новую дугу между вершинами x и y. | ||
• Delete(x,y): удаляет дугу между вершинами x и y. | • Delete(x,y): удаляет дугу между вершинами x и y. | ||
Основные результаты | |||
== Основные результаты == | |||
Наиболее эффективные на данный момент полностью динамические алгоритмы вычисления k-реберной и k-вершинной связности были предложены в работах [3] и [12]. Время исполнения характеризуется следующими теоремами. | Наиболее эффективные на данный момент полностью динамические алгоритмы вычисления k-реберной и k-вершинной связности были предложены в работах [3] и [12]. Время исполнения характеризуется следующими теоремами. | ||
Теорема 3. Полностью динамическая задача k-реберной связности может быть решена за время: | Теорема 3. Полностью динамическая задача k-реберной связности может быть решена за время: | ||
1. O(log n) на одно обновление и O(log n) на один запрос | |||
для k = 2 | 1. O(log n) на одно обновление и O(log n) на один запрос для k = 2 | ||
2. O(n2/3) на одно обновление и один запрос для k = 3 | 2. O(n2/3) на одно обновление и один запрос для k = 3 | ||
3. O(na(n)) на одно обновление и один запрос для k = 4 | 3. O(na(n)) на одно обновление и один запрос для k = 4 | ||
4. O(n log n) на одно обновление и один запрос для k > 5. | 4. O(n log n) на одно обновление и один запрос для k > 5. | ||
Теорема 4. Полностью динамическая задача k-вершинной связности может быть решена за время: | Теорема 4. Полностью динамическая задача k-вершинной связности может быть решена за время: | ||
1. O(log n) на одно обновление и O(log n) на один запрос | |||
для k = 2 | 1. O(log n) на одно обновление и O(log n) на один запрос для k = 2 | ||
2. O(n) на одно обновление и один запрос для k = 3 | 2. O(n) на одно обновление и один запрос для k = 3 | ||
3. O(na(n)) на одно обновление и один запрос для k = 4. | 3. O(na(n)) на одно обновление и один запрос для k = 4. | ||
Применение | |||
== Применение == | |||
Задачи вершинной и реберной связности часто возникают в вопросах, связанных с надежностью и живучестью сетей. В компьютерных сетях вершинная связность графов, лежащих в их основе, соответствует наименьшему числу узлов, падение которых еще не приведет к потере связности всей сети. Подобным же образом, реберная связность графов соответствует наименьшему числу связей, падение которых еще не вызовет потери связности всей сети. Аналогично, если две вершины являются k-вершинно-связными, они останутся связанными даже при отказе до (k – 1) других вершин, а если они являются k-реберно-связными, они «переживут» отказ до (k – 1) связей. Важно изучать динамические версии этих задач в контекстах, где сети динамически меняются – например, в случаях, когда связи могут нарушаться и восстанавливаться из-за отказов и ремонтов. | Задачи вершинной и реберной связности часто возникают в вопросах, связанных с надежностью и живучестью сетей. В компьютерных сетях вершинная связность графов, лежащих в их основе, соответствует наименьшему числу узлов, падение которых еще не приведет к потере связности всей сети. Подобным же образом, реберная связность графов соответствует наименьшему числу связей, падение которых еще не вызовет потери связности всей сети. Аналогично, если две вершины являются k-вершинно-связными, они останутся связанными даже при отказе до (k – 1) других вершин, а если они являются k-реберно-связными, они «переживут» отказ до (k – 1) связей. Важно изучать динамические версии этих задач в контекстах, где сети динамически меняются – например, в случаях, когда связи могут нарушаться и восстанавливаться из-за отказов и ремонтов. | ||
Открытые вопросы | |||
== Открытые вопросы == | |||
Эппстайн и коллеги [], а также Холм и коллеги [12] поднимают интересные вопросы. Во-первых, если эффективные динамические алгоритмы вычисления k-реберной связности для общих значений k известны, то для вычисления k-вершинной связности при k > 5 эффективных полностью динамических алгоритмов еще не создано – более того, нет даже статических. Во-вторых, полностью динамические задачи 2-реберной и 2-вершинной связности могут быть решены за полилогарифмическое время на одно обновление, тогда как наилучшие известные границы обновления для реберной и вершинной связности более высоких степеней являются полиномиальными. Остается открытым вопрос, можно ли сократить этот разрыв – иначе говоря, можно ли разработать полилогарифмические алгоритмы для полностью динамических задач 3-реберной и 3-вершинной связности. | Эппстайн и коллеги [], а также Холм и коллеги [12] поднимают интересные вопросы. Во-первых, если эффективные динамические алгоритмы вычисления k-реберной связности для общих значений k известны, то для вычисления k-вершинной связности при k > 5 эффективных полностью динамических алгоритмов еще не создано – более того, нет даже статических. Во-вторых, полностью динамические задачи 2-реберной и 2-вершинной связности могут быть решены за полилогарифмическое время на одно обновление, тогда как наилучшие известные границы обновления для реберной и вершинной связности более высоких степеней являются полиномиальными. Остается открытым вопрос, можно ли сократить этот разрыв – иначе говоря, можно ли разработать полилогарифмические алгоритмы для полностью динамических задач 3-реберной и 3-вершинной связности. | ||
Литература | == См. также == | ||
* ''[[Динамические деревья]] | |||
* ''[[Полностью динамический алгоритм нахождения кратчайших путей между всеми парами]] | |||
* ''[[Полностью динамическая связность]] | |||
* ''[[Полностью динамическая высокая связность в планарных графах]] | |||
* ''[[Полностью динамические минимальные остовные деревья]] | |||
* ''[[Полностью динамическая проверка на планарность]] | |||
* ''[[Полностью динамическое транзитивное замыкание]] | |||
== Литература == | |||
1. Dinitz, E.A.: Maintaining the 4-edge-connected components of a graph on-line. In: Proc. 2nd Israel Symp. Theory of Computing and Systems, 1993, pp. 88-99 | 1. Dinitz, E.A.: Maintaining the 4-edge-connected components of a graph on-line. In: Proc. 2nd Israel Symp. Theory of Computing and Systems, 1993, pp. 88-99 | ||
2. Dinitz, E.A., Karzanov A.V., Lomonosov M.V.: On the structure of the system of minimal edge cuts in a graph. In: Fridman, A.A. (ed) Studies in Discrete Optimization, pp. 290-306. Nauka, Moscow (1990). In Russian | 2. Dinitz, E.A., Karzanov A.V., Lomonosov M.V.: On the structure of the system of minimal edge cuts in a graph. In: Fridman, A.A. (ed) Studies in Discrete Optimization, pp. 290-306. Nauka, Moscow (1990). In Russian | ||
Строка 68: | Строка 97: | ||
7. Henzinger, M.R.: Fully dynamic biconnectivity in graphs. Algorithmica 13(6), 503-538 (1995) | 7. Henzinger, M.R.: Fully dynamic biconnectivity in graphs. Algorithmica 13(6), 503-538 (1995) | ||
8. Henzinger, M.R.: Improved data structures for fully dynamic biconnectivity. SIAM J. Comput. 29(6), 1761 -1815 (2000) | 8. Henzinger, M.R.: Improved data structures for fully dynamic biconnectivity. SIAM J. Comput. 29(6), 1761 -1815 (2000) | ||
10. Henzinger, M., King V.: Fully dynamic biconnectivity and transitive closure. In: Proc. 36th IEEE Symposium on Foundations of Computer Science (FOCS'95), 1995, pp. 664-672 | 10. Henzinger, M., King V.: Fully dynamic biconnectivity and transitive closure. In: Proc. 36th IEEE Symposium on Foundations of Computer Science (FOCS'95), 1995, pp. 664-672 |
правка