Проблема, которую вы описали, - это полностью динамическая достижимость DAG (также называемая полностью динамическим транзитивным замыканием в DAG). Он называется полностью динамическим, поскольку люди также изучают версии, в которых возможны только удаления (тогда это называется декрементальной достижимостью), и где возможны только вставки (называемые инкрементной достижимостью).
Есть несколько компромиссов между временем обновления и временем запроса. Пусть будет количеством ребер, а количеством вершин. Для групп обеспечения доступности баз данных Деметреску и Итальяно (FOCS'00) дали рандомизированную структуру данных, которая поддерживает обновления (вставку или удаление ребер) за O ( ) запросов времени и достижимости за O ( ) времени (узел) вставки / удаления также поддерживаются, в O (1) раз); этот результат был расширен Санковским (FOCS'04) для работы с общими ориентированными графами. Также для DAG Родитти (SODA'03) показал, что вы можете поддерживать матрицу переходного замыкания за общее время O ( ), где - количество вставок,mnn1.58n0.58mn+I⋅n2+DIDколичество удалений и, конечно, время запроса O ( ).1
Для общих ориентированных графов известны следующие времена (обновление, запрос): (O ( ), O (1)) (Demetrescu и Italiano FOCS'00 (амортизированный), Sankowski FOCS'04 (наихудший случай)), (O ( ), )) (Родитти, Цвик FOCS'02), (O ( ), O ( )) (Родитти, Цвик STOC '04), (O ( ), O ( )) и (O ( ), O ( )) от Sankowski (FOCS'04) ,n2mn−−√O(n−−√m+nlognnn1.58n0.58n1.495n1.495
Получение времени полилогарифмического запроса без чрезмерного увеличения времени обновления является серьезной открытой проблемой даже для групп обеспечения доступности баз данных.