Аноним

Нижняя граница для динамической связности: различия между версиями

Материал из WEGA
(Новая страница: «== Ключевые слова и синонимы == Динамические деревья (''Dynamic trees'') == Постановка задачи == Задача о динамической связности требует поддержки структуры графа G следующими операциями: insert(u, v): вставка неориентированного ребра (u, v) в граф; delete(u, v): удаление ребр...»)
 
Строка 5: Строка 5:
Задача о динамической связности требует поддержки структуры графа G следующими операциями:
Задача о динамической связности требует поддержки структуры графа G следующими операциями:


insert(u, v): вставка неориентированного ребра (u, v) в граф;
'''insert'''(u, v): вставка неориентированного ребра (u, v) в граф;


delete(u, v): удаление ребра (u ,v) из графа;
'''delete'''(u, v): удаление ребра (u ,v) из графа;


connected(u; v): проверка, находятся ли u и v в одной и той же связной компоненте.
'''connected'''(u, v): проверка, находятся ли u и v в одной и той же связной компоненте.




Пусть m – верхняя граница количества ребер в графе. В данной статье обсуждаются нижние границы клеточного зонда для этой задачи. Обозначим за tu сложность вставки и удаления, а за tq – сложность запроса.
Пусть <math>m</math> – верхняя граница количества ребер в графе. В данной статье обсуждаются нижние границы клеточного зонда для этой задачи. Обозначим за <math>t_u</math> сложность вставки и удаления, а за <math>t_q</math> – сложность запроса.




'''Задача о частных суммах'''
'''Задача о частных суммах'''


Нижние границы для задачи о динамической связности тесно связаны с нижними границами для другой классической задачи – поддержки частных сумм. Формально, задача состоит в том, чтобы поддерживать массив A[1::n], выполняя следующие операции:
Нижние границы для задачи о динамической связности тесно связаны с нижними границами для другой классической задачи – поддержки частных сумм. Формально, задача состоит в том, чтобы поддерживать массив A[1..n], выполняя следующие операции:


updated, A): пусть A [k] <-    .
'''update'''(k, <math>\Delta</math>: обновление <math>A[k] \leftarrow \Delta</math>;


sum(k): возвращает частную сумму Pki=1 A[i].  
'''sum'''(k): возвращает частную сумму <math>\sum^k_{i=1} A[i]</math>.  


testsum(/c,cr): возвращает булево значение, указывающее, является ли sum(k) = ст.
'''testsum'''(k, <math>\sigma</math>): возвращает булево значение, указывающее, верно ли, что <math>sum(k) = \sigma</math>.




4817

правок