Полностью динамическая связность: верхняя и нижняя границы: различия между версиями

Перейти к навигации Перейти к поиску
нет описания правки
(Новая страница: «Полностью динамическая связность: верхняя и нижняя границы Ключевые слова и синонимы Д…»)
 
Нет описания правки
Строка 1: Строка 1:
Полностью динамическая связность: верхняя и нижняя границы
== Ключевые слова и синонимы ==
[[динамически связные компоненты]]; [[динамические остовные леса]]


Ключевые слова и синонимы
Динамически связные компоненты; динамические остовные леса


Постановка задачи
== Постановка задачи ==
Задача заключается в эффективной поддержке информации о связности в динамически меняющемся графе. Динамический алгоритм на графе поддерживает заданное свойство P графа, подверженного динамическим изменениям – таким как вставка дуги, удаление дуги и обновление веса дуги. Динамический алгоритм должен быстро обрабатывать запросы о свойстве P, а также выполнять операции обновления быстрее, чем вычислять то же самое с нуля при помощи самого быстрого статического алгоритма. Алгоритм называется полностью динамическим, если он поддерживает как вставку дуг, так и удаление дуг. Частично динамический алгоритм поддерживает либо вставку, либо удаление дуг; инкрементный алгоритм поддерживает только вставку дуг, декрементный – только удаление.
Задача заключается в эффективной поддержке информации о связности в динамически меняющемся графе. Динамический алгоритм на графе поддерживает заданное свойство P графа, подверженного динамическим изменениям – таким как вставка дуги, удаление дуги и обновление веса дуги. Динамический алгоритм должен быстро обрабатывать запросы о свойстве P, а также выполнять операции обновления быстрее, чем вычислять то же самое с нуля при помощи самого быстрого статического алгоритма. Алгоритм называется полностью динамическим, если он поддерживает как вставку дуг, так и удаление дуг. Частично динамический алгоритм поддерживает либо вставку, либо удаление дуг; инкрементный алгоритм поддерживает только вставку дуг, декрементный – только удаление.


В задаче полностью динамической связности нам требуется поддержка неориентированного графа G = (V, E) и выполнение последовательности следующих операций в различном порядке:
В задаче полностью динамической связности нам требуется поддержка неориентированного графа G = (V, E) и выполнение последовательности следующих операций в различном порядке:
Connected(u, v): возвращает значение «истинно», если вершины u и v принадлежат к одной и той же связной компоненте графа, в противном случае возвращает значение «ложно». Insert(x, y): вставляет новую дугу между вершинами x и y. Delete(x, y): удаляет дугу между вершинами x и y.
Connected(u, v): возвращает значение «истинно», если вершины u и v принадлежат к одной и той же связной компоненте графа, в противном случае возвращает значение «ложно». Insert(x, y): вставляет новую дугу между вершинами x и y. Delete(x, y): удаляет дугу между вершинами x и y.


Основные результаты
 
== Основные результаты ==
Здесь представлено высокоуровневое описание алгоритма для решения задачи полностью динамической связности в неориентированных графах, описанной в [ ]: алгоритм, разработанный Холмом, де Лихтенбергом и Торупом, отвечает на вопрос о связности за время O(log n/log log n) в наихудшем случае и поддерживает вставку и удаление дуг за амортизированное время O(log2 n).
Здесь представлено высокоуровневое описание алгоритма для решения задачи полностью динамической связности в неориентированных графах, описанной в [ ]: алгоритм, разработанный Холмом, де Лихтенбергом и Торупом, отвечает на вопрос о связности за время O(log n/log log n) в наихудшем случае и поддерживает вставку и удаление дуг за амортизированное время O(log2 n).
Алгоритм поддерживает остовный лес F на динамически меняющемся графе G. Дуги в F называются древесными дугами. Пусть e – древесная дуга леса F; пусть T – дерево из F, содержащее эту дугу. При удалении дуги e деревья T1 и T2, полученные из T в результате удаления e, могут быть связаны вновь в том и только том случае, если существует недревесная дуга в G, одна конечная точка которой располагается в T1, а другая – в T2. Такая дуга называется дугой замены для e. Иными словами, если имеется дуга замены для e, T восстанавливает связность при помощи этой дуги замены; в противном случае удаление e создает новую компоненту связности в графе G.
Алгоритм поддерживает остовный лес F на динамически меняющемся графе G. Дуги в F называются древесными дугами. Пусть e – древесная дуга леса F; пусть T – дерево из F, содержащее эту дугу. При удалении дуги e деревья T1 и T2, полученные из T в результате удаления e, могут быть связаны вновь в том и только том случае, если существует недревесная дуга в G, одна конечная точка которой располагается в T1, а другая – в T2. Такая дуга называется дугой замены для e. Иными словами, если имеется дуга замены для e, T восстанавливает связность при помощи этой дуги замены; в противном случае удаление e создает новую компоненту связности в графе G.


Для выполнения систематического поиска дуг замены алгоритм присваивает каждой дуге e уровень i(e) и на основе этих уровней поддерживает множество под-лесов остовного дерева F: для каждого уровня i лес Fi является под-лесом, порожденным древесными дугами уровня выше i. Обозначив за L максимальный уровень дуги, получаем следующее:
Для выполнения систематического поиска дуг замены алгоритм присваивает каждой дуге e уровень i(e) и на основе этих уровней поддерживает множество под-лесов остовного дерева F: для каждого уровня i лес Fi является под-лесом, порожденным древесными дугами уровня выше i. Обозначив за L максимальный уровень дуги, получаем следующее:
F = F0 2 F1 2 F2 2 • • • 2 FL :
F = F0 2 F1 2 F2 2 • • • 2 FL :
Вначале все дуги имеют уровень 0; затем уровни прогрессивно увеличиваются, но никогда не уменьшаются. Изменения уровней дуг выполняются таким образом, чтобы поддерживать следующие инварианты, которые очевидным образом выполняются в начале процесса.
Вначале все дуги имеют уровень 0; затем уровни прогрессивно увеличиваются, но никогда не уменьшаются. Изменения уровней дуг выполняются таким образом, чтобы поддерживать следующие инварианты, которые очевидным образом выполняются в начале процесса.
Инвариант (1): F – максимальный остовный лес графа G, если уровни дуг интерпретировать как их веса.
Инвариант (1): F – максимальный остовный лес графа G, если уровни дуг интерпретировать как их веса.
Инвариант (2): Число вершин каждого дерева Fi не превышает n/2i.
Инвариант (2): Число вершин каждого дерева Fi не превышает n/2i.
Инвариант (1) следует интерпретировать следующим образом. Пусть (u, v) – недревесная дуга уровня l(u, v); пусть u ■ ■ ■ v – уникальный путь между u и v в F (такой путь существует, поскольку F является остовным лесом графа G). Пусть e – любая дуга из пути u ■ ■ ■ v, а l(e) – уровень этой дуги. В силу инварианта (1), l(e) > l(u, v). Поскольку это выполняется для каждой дуги пути, а по построению F^U;V) содержит все древесные дуги уровня более l(u, v), то весь путь содержится в F^U;V); иначе говоря, u и v являются связанными в F^uv).
Инвариант (1) следует интерпретировать следующим образом. Пусть (u, v) – недревесная дуга уровня l(u, v); пусть u ■ ■ ■ v – уникальный путь между u и v в F (такой путь существует, поскольку F является остовным лесом графа G). Пусть e – любая дуга из пути u ■ ■ ■ v, а l(e) – уровень этой дуги. В силу инварианта (1), l(e) > l(u, v). Поскольку это выполняется для каждой дуги пути, а по построению F^U;V) содержит все древесные дуги уровня более l(u, v), то весь путь содержится в F^U;V); иначе говоря, u и v являются связанными в F^uv).
Из инварианта (2) следует, что максимальное число уровней равно L < blog2 nc.
Из инварианта (2) следует, что максимальное число уровней равно L < blog2 nc.
Заметим, что при вставке новой дуги ей присваивается уровень 0. Затем ее уровень может быть увеличен не более bl°g2 раз вследствие последовательности удалений дуг. Когда удаляется дуга e = (v, w) уровня i(e), алгоритм ищет дугу замены с максимально высоким уровнем, если такая существует. В силу инварианта (1) такая дуга замены имеет уровень I < l{e). Следовательно, процедура замены Replace((u, w),l(e)) вызывается с параметрами e и l(e). Далее будут вкратце описаны операции, выполняемые этой процедурой.
Заметим, что при вставке новой дуги ей присваивается уровень 0. Затем ее уровень может быть увеличен не более bl°g2 раз вследствие последовательности удалений дуг. Когда удаляется дуга e = (v, w) уровня i(e), алгоритм ищет дугу замены с максимально высоким уровнем, если такая существует. В силу инварианта (1) такая дуга замены имеет уровень I < l{e). Следовательно, процедура замены Replace((u, w),l(e)) вызывается с параметрами e и l(e). Далее будут вкратце описаны операции, выполняемые этой процедурой.
Replace((u, w), I) находит дугу замены самого высокого уровня l< £, если такая существует. Если на уровне I такой дуги не существует, имеет место один из двух вариантов: если £ > 0, алгоритм рекурсивно переходит на уровень I — 1; в противном случае 1 = 0, и удаление дуги (v, w) разделяет деревья v и w в графе G.
Replace((u, w), I) находит дугу замены самого высокого уровня l< £, если такая существует. Если на уровне I такой дуги не существует, имеет место один из двух вариантов: если £ > 0, алгоритм рекурсивно переходит на уровень I — 1; в противном случае 1 = 0, и удаление дуги (v, w) разделяет деревья v и w в графе G.
Во время поиска на уровне I подходящим образом выбранные древесные и недревесные дуги могут быть перемещены на более высокий уровень следующим образом. Пусть Tv и Tw – деревья в лесу Fi, полученные после удаления дуги (v, w), и пусть, без ограничения общности, Tv меньше Tw. Тогда Tv содержит не более и/2 вершин, поскольку Tv [ Tw [ f(v, w)g было деревом на уровне I и выполняется инвариант (2). Следовательно, дуги уровня I в Tv могут быть перемещены на уровень I + 1 с сохранением инвариантов. Наконец, одна за дугой посещаются недревесные дуги, инцидентные Tv: если дуга соединяет Tv и Tw, то дуга замены найдена и поиск останавливается; в противном случае ее уровень увеличивается на 1.
Во время поиска на уровне I подходящим образом выбранные древесные и недревесные дуги могут быть перемещены на более высокий уровень следующим образом. Пусть Tv и Tw – деревья в лесу Fi, полученные после удаления дуги (v, w), и пусть, без ограничения общности, Tv меньше Tw. Тогда Tv содержит не более и/2 вершин, поскольку Tv [ Tw [ f(v, w)g было деревом на уровне I и выполняется инвариант (2). Следовательно, дуги уровня I в Tv могут быть перемещены на уровень I + 1 с сохранением инвариантов. Наконец, одна за дугой посещаются недревесные дуги, инцидентные Tv: если дуга соединяет Tv и Tw, то дуга замены найдена и поиск останавливается; в противном случае ее уровень увеличивается на 1.
Деревья каждого леса поддерживаются таким образом, что базовые операции, необходимые для реализации вставки и удаления дуг, могут быть выполнены за время O(log n). Имеются несколько вариантов базовых структур данных, которые могут выполнить такую задачу; например, для этой цели можно использовать деревья Эйлерова пути (ET-деревья), впервые предложенные в [    ].
Деревья каждого леса поддерживаются таким образом, что базовые операции, необходимые для реализации вставки и удаления дуг, могут быть выполнены за время O(log n). Имеются несколько вариантов базовых структур данных, которые могут выполнить такую задачу; например, для этой цели можно использовать деревья Эйлерова пути (ET-деревья), впервые предложенные в [    ].
Помимо вставки и удаления дуг из леса, ET-деревья также могут поддерживать такие операции, как нахождение в лесу дерева, содержащего заданную вершину, вычисление размера дерева и, что еще более важно, нахождение древесных дуг уровня I в дереве Tv и недревесных дуг уровня I, инцидентных Tv. Это можно сделать за счет дополнения ET-деревьев константным количеством информации для каждой вершины; подробнее об этом – в [11].
Помимо вставки и удаления дуг из леса, ET-деревья также могут поддерживать такие операции, как нахождение в лесу дерева, содержащего заданную вершину, вычисление размера дерева и, что еще более важно, нахождение древесных дуг уровня I в дереве Tv и недревесных дуг уровня I, инцидентных Tv. Это можно сделать за счет дополнения ET-деревьев константным количеством информации для каждой вершины; подробнее об этом – в [11].
Используя идею амортизации на базе изменений уровня, можно доказать заявленную границу времени обновления в размере O(log2 n). В частности, вставка дуги и повышение ее уровня требуют времени O(log n). Поскольку это может случиться O(log n) раз, полная амортизированная стоимость вставки, включающая повышение уровня, составляет O(log 2n). Что касается удалений дуг, полная стоимость операций обрезания и связывания леса O(log n) составляет O(log 2n); кроме того, имеется O(log n) рекурсивных вызовов процедуры Replace, каждый из них стоимостью O(log n), плюс амортизированная стоимость операций повышений уровня. ET-деревья над F0 = F позволяют получать ответы на запросы о связности за время O(log n) в наихудшем случае. Как было показано в [11], это время может быть уменьшено до O(log n/loglog n) в случае использования @(log n)-арной версии ET-деревьев.
Используя идею амортизации на базе изменений уровня, можно доказать заявленную границу времени обновления в размере O(log2 n). В частности, вставка дуги и повышение ее уровня требуют времени O(log n). Поскольку это может случиться O(log n) раз, полная амортизированная стоимость вставки, включающая повышение уровня, составляет O(log 2n). Что касается удалений дуг, полная стоимость операций обрезания и связывания леса O(log n) составляет O(log 2n); кроме того, имеется O(log n) рекурсивных вызовов процедуры Replace, каждый из них стоимостью O(log n), плюс амортизированная стоимость операций повышений уровня. ET-деревья над F0 = F позволяют получать ответы на запросы о связности за время O(log n) в наихудшем случае. Как было показано в [11], это время может быть уменьшено до O(log n/loglog n) в случае использования @(log n)-арной версии ET-деревьев.


Теорема 1. Динамический граф G с n вершинами может поддерживать вставку и удаление дуг за амортизированное время O(log2 n) на одно обновление и отвечать на запросы о связности за время O(log n/loglog n) в наихудшем случае.
Теорема 1. Динамический граф G с n вершинами может поддерживать вставку и удаление дуг за амортизированное время O(log2 n) на одно обновление и отвечать на запросы о связности за время O(log n/loglog n) в наихудшем случае.


Позднее Торуп [ ] предложил еще одну структуру данных, которая позволяет обеспечить несколько иные временные границы:
Позднее Торуп [ ] предложил еще одну структуру данных, которая позволяет обеспечить несколько иные временные границы:


Теорема 2. Динамический граф G с n вершинами может поддерживать вставку и удаление дуг за амортизированное время O(log n • (loglog n)3) на одно обновление и отвечать на запросы о связности за время O(log n/ log log log n).
Теорема 2. Динамический граф G с n вершинами может поддерживать вставку и удаление дуг за амортизированное время O(log n • (loglog n)3) на одно обновление и отвечать на запросы о связности за время O(log n/ log log log n).


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


Наилучшая известная нижняя граница для задачи динамической связности имеет место при использовании вычислительной модели битового зонда (bit-probe model); ее предложили Патраку и Тарнифа [ ]. Модель битового зонда представляет собой вариант модели клеточного зонда (cell-probe model) с однобитными клетками. В этой модели память организована в виде клеток, и алгоритм может производить чтение из клетки или запись в нее за константное время. Количество клеточных зондов рассматривается в качестве меры сложности. Формальное определение этой модели можно найти в [13].
Наилучшая известная нижняя граница для задачи динамической связности имеет место при использовании вычислительной модели битового зонда (bit-probe model); ее предложили Патраку и Тарнифа [ ]. Модель битового зонда представляет собой вариант модели клеточного зонда (cell-probe model) с однобитными клетками. В этой модели память организована в виде клеток, и алгоритм может производить чтение из клетки или запись в нее за константное время. Количество клеточных зондов рассматривается в качестве меры сложности. Формальное определение этой модели можно найти в [13].


Теорема 3. Рассмотрим реализацию битового зонда для задачи динамической связности, в которой операции обновления выполняются за амортизированное время tu, а запросы – за ожидаемое время tq. Тогда для среднего случая распределения входных данных tu = Q (log2n/log2(tu + tq)). В частности,
Теорема 3. Рассмотрим реализацию битового зонда для задачи динамической связности, в которой операции обновления выполняются за амортизированное время tu, а запросы – за ожидаемое время tq. Тогда для среднего случая распределения входных данных tu = Q (log2n/log2(tu + tq)). В частности,
Строка 42: Строка 59:
((  log n
((  log n
\\ log log n
\\ log log n


Для модели битового зонда наилучшая верхняя граница на одну операцию достигается при использовании алгоритма теоремы 2; она составляет O(log2 n/ log log log n). Следовательно, разрыв между верхней и нижней границами ограничен дважды логарифмическим множителем.
Для модели битового зонда наилучшая верхняя граница на одну операцию достигается при использовании алгоритма теоремы 2; она составляет O(log2 n/ log log log n). Следовательно, разрыв между верхней и нижней границами ограничен дважды логарифмическим множителем.


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


Открытые вопросы
 
== Открытые вопросы ==
Исследования в области динамической связности оставляют открытые и довольно интересные вопросы. Первый из них заключается в том, можно ли сократить разрыв между верхней и нижней границами. Заметим, что нижняя граница, обозначенная теоремой 3, говорит о том, что возможны различные соотношения между запросами и обновлениями; можем ли мы разработать структуру данных с временем выполнения одного обновления o(log n) и временем выполнения одного запроса O(poly(log n))? Это должно быть особенно интересно для приложений, в которых число запросов значительно превышает число обновлений.
Исследования в области динамической связности оставляют открытые и довольно интересные вопросы. Первый из них заключается в том, можно ли сократить разрыв между верхней и нижней границами. Заметим, что нижняя граница, обозначенная теоремой 3, говорит о том, что возможны различные соотношения между запросами и обновлениями; можем ли мы разработать структуру данных с временем выполнения одного обновления o(log n) и временем выполнения одного запроса O(poly(log n))? Это должно быть особенно интересно для приложений, в которых число запросов значительно превышает число обновлений.
Наконец, возможно ли разработать алгоритм с совпадающими границами для обновлений и запросов O(log n) для графов общего вида? Заметим, что это возможно для специального случая планарных графов [5].
Наконец, возможно ли разработать алгоритм с совпадающими границами для обновлений и запросов O(log n) для графов общего вида? Заметим, что это возможно для специального случая планарных графов [5].


Экспериментальные результаты
 
== Экспериментальные результаты ==
Обстоятельное эмпирическое исследование динамических алгоритмов связности было проведено в работах [1,12].
Обстоятельное эмпирическое исследование динамических алгоритмов связности было проведено в работах [1,12].


Наборы данных
Наборы данных также описаны в [1, 12].


См. также
== См. также ==
Динамические деревья
* ''[[Динамические деревья]]
Полностью динамический алгоритм нахождения кратчайших путей между всеми парами
* ''[[Полностью динамический алгоритм нахождения кратчайших путей между всеми парами]]
Полностью динамическая высокая связность
* ''[[Полностью динамическая высокая связность]]
Полностью динамическая высокая связность в планарных графах
* ''[[Полностью динамическая высокая связность в планарных графах]]
Полностью динамические минимальные остовные деревья
* ''[[Полностью динамические минимальные остовные деревья]]
Полностью динамическая проверка на планарность
* ''[[Полностью динамическая проверка на планарность]]
Полностью динамическое транзитивное замыкание
* ''[[Полностью динамическое транзитивное замыкание]]
 
Литература
 
== Литература ==
 
1. Alberts, D., Cattaneo, G., Italiano, G.F.: An empirical study of dynamic graph algorithms. ACM J. Exp. Algorithmics 2 (1997)
1. Alberts, D., Cattaneo, G., Italiano, G.F.: An empirical study of dynamic graph algorithms. ACM J. Exp. Algorithmics 2 (1997)
2. Beame, P., Fich, F.E.: Optimal bounds for the predecessor problem and related problems. J. Comp. Syst. Sci. 65(1), 38-72 (2002)
2. Beame, P., Fich, F.E.: Optimal bounds for the predecessor problem and related problems. J. Comp. Syst. Sci. 65(1), 38-72 (2002)
3. Eppstein, D.: Dynamic Connectivity in Digital Images. Inf. Process. Lett. 62(3), 121-126 (1997)
3. Eppstein, D.: Dynamic Connectivity in Digital Images. Inf. Process. Lett. 62(3), 121-126 (1997)
4. Eppstein, D., Galil, Z., Italiano, G.F., Nissenzweig, A.: Sparsification - a technique for speeding up dynamic graph algorithms. J. Assoc. Comp. Mach. 44(5), 669-696 (1997)
4. Eppstein, D., Galil, Z., Italiano, G.F., Nissenzweig, A.: Sparsification - a technique for speeding up dynamic graph algorithms. J. Assoc. Comp. Mach. 44(5), 669-696 (1997)
5. Eppstein, D., Italiano, G.F., Tamassia, R.,Tarjan, R.E., Westbrook, J., Yung, M.: Maintenance of a minimum spanning forest in a dynamic planegraph. J. Algorithms 13, 33-54 (1992)
5. Eppstein, D., Italiano, G.F., Tamassia, R.,Tarjan, R.E., Westbrook, J., Yung, M.: Maintenance of a minimum spanning forest in a dynamic planegraph. J. Algorithms 13, 33-54 (1992)
6. Eyal, E., Halperin, D.: Improved Maintenance of Molecular Surfaces Using Dynamic Graph Connectivity. in: Proc. 5th International Workshop on Algorithms in Bioinformatics (WABI 2005), Mallorca, Spain, 2005, pp.401-413
6. Eyal, E., Halperin, D.: Improved Maintenance of Molecular Surfaces Using Dynamic Graph Connectivity. in: Proc. 5th International Workshop on Algorithms in Bioinformatics (WABI 2005), Mallorca, Spain, 2005, pp.401-413
7. Frederickson, G.N.: Data structures for on-line updating of minimum spanning trees. SIAM J. Comp. 14, 781-798 (1985)
7. Frederickson, G.N.: Data structures for on-line updating of minimum spanning trees. SIAM J. Comp. 14, 781-798 (1985)
8. Frederickson, G.N.: Ambivalent data structures for dynamic 2-edge-connectivity and k smallest spanning trees. In: Proc. 32nd Symp. Foundations of Computer Science, 1991, pp. 632-641
8. Frederickson, G.N.: Ambivalent data structures for dynamic 2-edge-connectivity and k smallest spanning trees. In: Proc. 32nd Symp. Foundations of Computer Science, 1991, pp. 632-641
9. Henzinger, M.R., Fredman, M.L.: Lower bounds for fully dynamic connectivity problems in graphs. Algorithmica 22(3), 351-362(1998)
9. Henzinger, M.R., Fredman, M.L.: Lower bounds for fully dynamic connectivity problems in graphs. Algorithmica 22(3), 351-362(1998)
10. Henzinger, M.R., King, V.: Randomized fully dynamic graph algorithms with polylogarithmic time per operation. J. ACM 46(4),502-516(1999)
10. Henzinger, M.R., King, V.: Randomized fully dynamic graph algorithms with polylogarithmic time per operation. J. ACM 46(4),502-516(1999)
11. Holm, J., de Lichtenberg, K.,Thorup, M.: Poly-logarithmic deterministic fully-dynamic algorithms for connectivity, minimum spanning tree, 2-edge, and biconnectivity. J. ACM 48, 723-760 (2001)
11. Holm, J., de Lichtenberg, K.,Thorup, M.: Poly-logarithmic deterministic fully-dynamic algorithms for connectivity, minimum spanning tree, 2-edge, and biconnectivity. J. ACM 48, 723-760 (2001)
12. Iyer, R., Karger, D., Rahul, H.,Thorup, M.: An Experimental Study of Polylogarithmic, Fully Dynamic, Connectivity Algorithms. ACM J. Exp. Algorithmics 6 (2001)
12. Iyer, R., Karger, D., Rahul, H.,Thorup, M.: An Experimental Study of Polylogarithmic, Fully Dynamic, Connectivity Algorithms. ACM J. Exp. Algorithmics 6 (2001)
13. Miltersen, P.B.: Cell probe complexity-a survey. In: 19th Conference on the Foundations of Software Technology and Theoretical Computer Science (FSTTCS), Advances in Data Structures Workshop, 1999
13. Miltersen, P.B.: Cell probe complexity-a survey. In: 19th Conference on the Foundations of Software Technology and Theoretical Computer Science (FSTTCS), Advances in Data Structures Workshop, 1999
14. Miltersen, P.B., Subramanian, S., Vitter, J.S., Tamassia, R.: Complexity models for incremental computation. In: Ausiello, G., Italiano, G.F. (eds.) Special Issue on Dynamic and On-line Algorithms. Theor. Comp. Sci. 130(1), 203-236 (1994)
14. Miltersen, P.B., Subramanian, S., Vitter, J.S., Tamassia, R.: Complexity models for incremental computation. In: Ausiello, G., Italiano, G.F. (eds.) Special Issue on Dynamic and On-line Algorithms. Theor. Comp. Sci. 130(1), 203-236 (1994)
15. Patrascu, M., Demain, E.D.: Lower Bounds for Dynamic Connectivity. In: Proc. 36th ACM Symposium on Theory of Computing (STOC), 2004, pp. 546-553
15. Patrascu, M., Demain, E.D.: Lower Bounds for Dynamic Connectivity. In: Proc. 36th ACM Symposium on Theory of Computing (STOC), 2004, pp. 546-553
16. Patrascu, M., Tarnija, C.: On Dynamic Bit-Probe Complexity, Theoretical Computer Science, Special Issue on ICALP'05. In: Italiano, G.F., Palamidessi, С (eds.) vol. 380, pp. 127-142 (2007)
16. Patrascu, M., Tarnija, C.: On Dynamic Bit-Probe Complexity, Theoretical Computer Science, Special Issue on ICALP'05. In: Italiano, G.F., Palamidessi, С (eds.) vol. 380, pp. 127-142 (2007)
A preliminary version in Proc. 32nd International Colloquium on Automata, Languages and Programming (ICALP'05), 2005, pp. 969-981
A preliminary version in Proc. 32nd International Colloquium on Automata, Languages and Programming (ICALP'05), 2005, pp. 969-981
17. Tarjan, R.E., Vishkin, U.: An efficient parallel biconnectivity algorithm. SIAM J. Comp. 14,862-874 (1985)
17. Tarjan, R.E., Vishkin, U.: An efficient parallel biconnectivity algorithm. SIAM J. Comp. 14,862-874 (1985)
18. Thorup, M.: Near-optimal fully-dynamic graph connectivity. In: Proc. 32nd ACM Symposium on Theory of Computing (STOC), 2000, pp. 343-350
18. Thorup, M.: Near-optimal fully-dynamic graph connectivity. In: Proc. 32nd ACM Symposium on Theory of Computing (STOC), 2000, pp. 343-350
4430

правок

Навигация