Seja um gráfico não direcionado não ponderado com vértices e arestas. É possível pré-processar e produzir uma estrutura de dados do tamanho para que possa responder a consultas da forma "distância entre e " no tempo O (n)?
O problema parece básico demais para ser resolvido.
Respostas:
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 :2 G n m m m/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.G m/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 ( uu v w w ℓ(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) u N(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
fonte
O que você precisa é chamado de "oráculo à distância". Infelizmente, eu não estou muito familiarizado com oráculos a distância, então só posso encaminhá-lo ao artigo seminal devido a Thorup e Zwick:
Mikkel Thorup e Uri Zwick. Oráculos de distância aproximada. STOC '01, 2001.
Aqui está um trecho do resumo:
Seja um gráfico ponderado não direcionado com | V | = N e | E | = m . Seja k um número inteiro. Mostramos que G = ( V , E ) pode ser pré-processado em O ( k m n 1 / k ) tempo esperado, construindo uma estrutura de dados de tamanho O ( k n 1 + 1 / kG=(V,E) |V|=n |E|=m k G=(V,E) O(kmn1/k) , de modo que qualquer consulta de distância subseqüente possa ser respondida aproximadamente em O ( k ) time. A distância aproximada retornada é de extensão no máximo 2 k - 1 , ou seja, o quociente obtido dividindo a distância estimada pela distância real fica entre 1 e 2 k - 1 . O requisito de espaço do nosso algoritmo é [...] essencialmente ideal.O(kn1+1/k) O(k) 2k−1 2k−1
De acordo com os resultados, o que você solicita é basicamente factível, mesmo para gráficos ponderados: escolher gera um oráculo de distância do tamanho O ( n 2 ) obtido no tempo esperado O ( m n ) , que pode responder às consultas de caminho mais curto com 1 -estique em O ( 1 ) tempo!k=1 O(n2) O(mn) 1 O(1)
Oráculos a distância é um campo muito bem pesquisado, então você poderá cavar mais, acredito.
fonte