Это очень интересный вопрос. На высоком уровне вы спрашиваете, можно ли предварительно обработать граф таким образом, чтобы запросы по кратчайшему пути стали независимыми от плотности графа, без использования большого дополнительного пространства - интересно, но, как вы говорите, не решено.
Если вы довольны приблизительными расстояниями, вот способ получить приближение. Пусть G - взвешенный неориентированный граф с n узлами и m ребрами. В следующей статье показано, что для приближенных дистанционных запросов проектирование структур данных для графов с m ребрами не сложнее, чем для графов, в которых каждый узел имеет степень, ограниченную m / n :2Gnmmm/n
Р. Агарвал, П. Б. Годфри, С. Хар-Пелед, Приближенные дистанционные запросы и компактная маршрутизация в разреженных графах, INFOCOM 2011
Итак, предположим, что - ограниченный граф с m / n- степенью. Выборка α = O ( m / n ) узлов равномерно случайным образом; Назовите эти ориентиры. Во время фазы предварительной обработки сохраняйте расстояние от каждого узла ориентира до каждого другого узла на графике; это требует O ( м ) пространства. Для каждого узла u сохраните его ближайший ориентир ℓ ( u ) . Кроме того, храните график в структуре данных, скажем, как список смежности.Gm/nα=O(m/n)O(m)uℓ(u)
Когда запрашивается расстояние между и v , растут шары вокруг обоих узлов - шар узла w определяется как набор узлов, которые строго ближе к w, чем к его ближайшему ориентиру, например, ℓ ( w ) . Можно ожидать, что размер каждого шарика O ( n 2 / m ) , в ожидании. Пусть Γ ( u ) = B ( u ) ∪ N ( B ( u ) ) , где B ( uuvwwℓ(w)O(n2/m)Γ(u)=B(u)∪N(B(u)) - шар узла u, а N ( B ( u ) ) - множество соседей узлов в B ( u ) . Можноожидать,что размер Γ ( u ) равен O ( n ) в ожидании.B(u)uN(B(u))B(u)Γ(u)O(n)
Отвечая на вопрос: если , вернуть min x ∈ Γ ( u ) ∩ Γ ( v ) { d ( u , x ) + d ( v , x ) } ; иначе, если d ( u , ℓ ( u ) ) ≤ d ( v , ℓ ( v)Γ(u)∩Γ(v)≠∅minx∈Γ(u)∩Γ(v){d(u,x)+d(v,x)} , вернуть d ( u , ℓ ( u ) ) + d ( ℓ ( u ) , v ) ; иначе вернуть d ( v , ℓ ( v ) ) + d ( ℓ ( v ) , u ) . Нетрудно показать, что это 2- приближение.d(u,ℓ(u))≤d(v,ℓ(v))d(u,ℓ(u))+d(ℓ(u),v)d(v,ℓ(v))+d(ℓ(v),u)2
С точки зрения времени запроса, обратите внимание, что растущим шарам требуется времени для графа с m / n- градусной степенью ; построение Γ ( u ) и Γ ( v ) с учетом соответствующих шаров занимает O ( n ) времени (поскольку в структуре данных хранятся соседи); и проверка того, является ли Γ ( u ) ∩ Γ ( v ) пустой или нет, также занимает O ( n ) время.O(n)m/nΓ(u)Γ(v)O(n)Γ(u)∩Γ(v)O(n)
Вышеуказанные границы находятся в ожидании; Я думаю, что это легко дерандомизировать конструкцию. К сожалению, этот метод не позволяет получить приближение лучше, чем . Это очень интересный вопрос, хотя ....2