Текущий алгортим
- Первая фаза
Если изменение ребра меняет расстояние до вершинки, то мы в порядке дейкстры сканируем задетые вершинки, обновляя до них расстояние (читать эти вершинки нельзя, пока их не подтвердит вторая фаза)
- Вторая фаза
В порядке дерева обходим сканированные вершины и, если их не задел чужой скан, то подтверждаем, что расстояние до вершинок актуальное и их можно читать





Дедлок

Можно ли вторую фазу делать быстрее?


Можно ли вторую фазу делать быстрее?
Координатор (граф зависимостей)
Операции:
- добавление серой вершинки
- добавление ребра
- покраска вершинки в зелёную
Инварианты:
- граф ацикличен
- зелёные истоки удаляются

Координатор (граф зависимостей)
- Можно за любую асимптотику, так как граф на порядки меньше исходного
- Lock-free
- Добавления рёбер в разные деревья не должны влиять на друг друга
Координатор (граф зависимостей)
-
Ленивый пересчет
- добавление любого ребра делает все вершинки этого дерева неактуальными
-
Фазовый алгоритм
- добавление рёбер
- всё остальное
-
Сканирующий алгоритм
- перед операцией сканируем задетые вершинки
- если какому-то потоку мешам, то он должен нам помочь
- Euler tour trees
deck
By Dmitry Naumov
deck
- 136