Здесь было несколько вопросов ( 1 , 2 , 3 ) о транзитивном завершении, которые заставили меня задуматься, возможно ли что-то подобное:
Предположим, мы получили входной ориентированный граф и хотел бы ответить на запросы типа "? ", т.е. спрашивает, существует ли ребро между двумя вершинами в транзитивном завершении графа ? (эквивалентно, "есть ли путь от в в ? ").
Предположим, что дано вам разрешено выполнять предварительную обработку во времени а затем требуется ответить на запросы вовремя ,
Очевидно, если (т.е. никакая предварительная обработка не разрешена), лучшее, что вы можете сделать, это ответить на запрос вовремя , (запустить DFS из в и верните true, если существует путь).
Другой тривиальный результат заключается в том, что если Вы можете вычислить транзитивное замыкание и затем ответить на вопросы в ,
Как насчет чего-то посередине? Если вам позволят, скажем время предварительной обработки, вы можете отвечать на запросы быстрее, чем ? Может быть, улучшить это, чтобы?
Другой вариант: предположим, у вас есть время предварительной обработки, но только пространство, можете ли вы использовать предварительную обработку, чтобы ответить на запросы более эффективно, чем ?
Можем ли мы вообще сказать что-нибудь о компромисс, который позволяет отвечать на такие запросы?
Несколько похожая структура компромисса рассматривается в системах GPS, где хранение полной таблицы маршрутизации всех парных расстояний между местоположениями невозможно, поэтому используется идея оракулов расстояния, в которой хранится неполная таблица, но допускается значительное ускорение запросов при вычислении расстояния целого график (обычно дает только приблизительное расстояние между точками).