Estrutura de dados para caminhos mais curtos

19

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)?GnmGmpolylog(n)uv

O problema parece básico demais para ser resolvido.

ilyaraz
fonte
11
Em resposta à sua observação final sobre “básico demais para não ser resolvido”: se a consulta deve ser respondida em um tempo constante, ela é realmente bem estudada. Mas o objetivo da sua pergunta é que você permita O (n) tempo para uma consulta (em vez de O (1) ou O (m) trivial). Embora eu pense que é uma pergunta interessante, não acho que seja de fundamental importância.
Tsuyoshi Ito
11
@TsuyoshiIto - Não vejo por que a pergunta perde sua "importância fundamental" se permite um tempo de consulta super-constante, mas sub-linear. Por exemplo, suponha que eu possa resolver o problema acima com a restrição de que as consultas à distância possam ser respondidas no tempo por alguns , e o tempo de processamento seja no máximo - isso não me daria um algoritmo sub-cúbico para calcular caminhos mais curtos? Pessoalmente, acho que essa é uma pergunta muito interessante. ε > 0 O ( n 3 - ε )O(n1ε)ε>0O(n3ε)
Rachit
Eu não sei se existe uma maneira geral ou não, mas há uma boa maneira nos gráficos de largura da árvore delimitada, consulte Consulta de caminho mais curto nos gráficos de largura da árvore limitada
Saeed
Além disso, se m=Ω(n2) você pode criar uma árvore de caminho mais curto (iniciando em cada nó) e, em seguida, responder à consulta de caminho mais curto (por raiz relacionada) em O(n) , ou de maneira semelhante, você pode construir um dado estrutura com menos tamanho de memória.
Saeed

Respostas:

9

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

Rachit
fonte
A técnica acima não explora o fato de seu gráfico de entrada não ter peso; pode haver algo interessante que você possa fazer explorando esse fato, mas não consigo pensar em uma maneira de recuperar distâncias exatas. Por exemplo, é possível reduzir o tempo de consulta para e obter a distância delimitada por 2 d + 1 , onde d é a distância exata entre u e v . O(n2/m)2d+1duv
Rachit
Percebi que não entendo por que é uma aproximação de 2. Thorup-Zwick nas mesmas situações dá 3 aprox.
Ilyaraz
@ilyaraz: Observe que o esquema Thorup-Zwick não precisa verificar (e, portanto, responde a consultas em tempo quase constante). Veja o artigo que mencionei acima para a prova do trecho 2 . Γ(u)Γ(v)2
Rachit
4

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|=mkG=(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)2k12k1

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=1O(n2)O(mn)1O(1)

Oráculos a distância é um campo muito bem pesquisado, então você poderá cavar mais, acredito.

Gabor Retvari
fonte
2
Versão da revista: JACM 2005 .
Tsuyoshi Ito
3
Usando o espaço , é possível armazenar ingenuamente uma tabela de consulta. Portanto, este artigo (que eu conhecia) é irrelevante aqui. O(n2)
Ilyaraz 23/10
11
Justo. O resultado mais perto do que você solicitar AFAIK é para gráficos com grau médio que dá caminhos esticar-2 com O ( n 3 / 2 ) espaço em O ( Θ(logn)O(n3/2)tempo de consulta. (R. Agarwal, P. Godfrey e S. Har-Peled, "Consultas de distância aproximada e roteamento compacto em gráficos esparsos", INFOCOM 2011.)O(n)
Gabor Retvari
Usando a incorporação de métricas da Bourgain em , pode-se criar um oráculo com o espaço O ( n log 2 n ) , tempo de consulta O ( log 2 n ) e erro multiplicativo O ( log n ) . 1O(nlog2n)O(log2n)O(logn)
Ilyaraz # 24/11