Esta é uma questão muito interessante. Em um nível alto, você está perguntando se é possível pré-processar um gráfico de forma que as consultas de caminho mais curto se tornem independentes da densidade do gráfico, sem usar muito espaço extra - interessante, mas, como você diz, não resolvido.
Se você estiver satisfeito com as distâncias aproximadas, aqui está uma maneira de obter uma aproximação . Deixe L ser um grafo não-dirigido ponderado com n nodos e m bordas. É mostrado no artigo a seguir que, para consultas de distância aproximada, projetar estruturas de dados para gráficos com m arestas não é mais difícil do que gráficos nos quais cada nó tem grau limitado por m / n :2Gnmmm/n
R. Agarwal, PB Godfrey, S. Har-Peled, consultas de distância aproximada e roteamento compacto em gráficos esparsos, INFOCOM 2011
Portanto, assuma que é um gráfico delimitado por m / n . Amostra α = O ( m / n ) nós uniformes aleatoriamente; chame esses nós de referência. Durante a fase de pré-processamento, armazene a distância entre cada nó de referência e o outro nó no gráfico; isso requer espaço O ( m ) . Para cada nó u , armazene seu nó de referência mais próximo ℓ ( u ) . Além disso, armazene o gráfico na estrutura de dados, como uma lista de adjacência.Gm/nα=O(m/n)O(m)uℓ(u)
Quando consultada a distância entre e v , aumente as bolas ao redor dos dois nós - a bola do nó w é definida como o conjunto de nós que são estritamente mais próximos de w do que o nó de referência mais próximo, digamos ℓ ( w ) . Pode-se mostrar que o tamanho de cada bola é O ( n 2 / m ) , na expectativa. Seja Γ ( u ) = B ( u ) ∪ N ( B ( u ) ) , onde B ( uuvwwℓ(w)O(n2/m)Γ(u)=B(u)∪N(B(u)) é a bola do nó u e N ( B ( u ) ) é o conjunto de vizinhos dos nós em B ( u ) . Pode-se mostrar que o tamanho de Γ ( u ) é O ( n ) , na expectativa.B(u)uN(B(u))B(u)Γ(u)O(n)
Respondendo à consulta: se , retorne min x ∈ Γ ( u ) ∩ Γ ( v ) { d ( u , x ) + d ( v , x ) } ; caso contrário, se d ( u , ℓ ( u ) ) ≤ d ( v , ℓ ( vΓ(u)∩Γ(v)≠∅minx∈Γ(u)∩Γ(v){d(u,x)+d(v,x)} , retornar d ( u , ℓ ( u ) ) + d ( ℓ ( u ) , v ) ; caso contrário, retorne d ( v , ℓ ( v ) ) + d ( ℓ ( v ) , u ) . É fácil mostrar que essa é umaaproximação 2 .d(u,ℓ(u))≤d(v,ℓ(v))d(u,ℓ(u))+d(ℓ(u),v)d(v,ℓ(v))+d(ℓ(v),u)2
Em termos de tempo de consulta, observe que o crescimento de bolas leva tempo para um gráfico delimitado em m / n ; construir Γ ( u ) e Γ ( v ) dadas as respectivas esferas leva O ( n ) tempo (uma vez que os vizinhos são armazenados na estrutura de dados); e verificar se Γ ( u ) ∩ Γ ( v ) está vazio ou não também leva tempo O ( n ) .O(n)m/nΓ(u)Γ(v)O(n)Γ(u)∩Γ(v)O(n)
Os limites acima estão na expectativa; Eu acho que é fácil derandomizar a construção. Infelizmente, essa técnica não parece permitir uma aproximação melhor que . É uma pergunta muito interessante embora ....2