Предполагая m = |E|
и n = |V|
.
Алгоритм Дейкстры с кучей Фибоначчи выполняется в O(m + n log n)
. Итак, вы хотите рассмотреть дополнительное ограничение, не увеличивая окончательную временную сложность.
Если запрос о том, находится ли вершина в X, не может быть выполнен за постоянное время, вам сначала нужно сделать это, построив хэш-набор X в O(n)
. Последующие запросы, использующие этот хэш-набор, будут выполняться за постоянное время.
Теперь, удалив из графа ребра между парами вершин в X, просто добавим еще O(m)
. Затем вы можете запустить программу Дейкстры на этом новом графе с удаленными ребрами, и все это займет всего O(m + n log n)
времени.