Definição. Dado um gráfico e dois vértices e , o problema -shortest-caminhos é encontrar o caminhos mais curtos simples entre e em .
Observe que o comprimento desses caminhos não é necessariamente igual e os vértices e estão necessariamente conectados em . Eu queria saber se há um tempo linear (em termos de e ) algoritmo para este problema.
Analisei alguns artigos na literatura, como " Uma nova implementação do algoritmo de caminhos sem loop de classificação do iene ", mas a complexidade do tempo é realmente alta . Além disso, o outro artigo de Epstein " Encontrar os k caminhos mais curtos " apresenta um algoritmo que encontra os caminhos mais curtos que não são necessariamente caminhos simples com tempo de execução .
Existe um algoritmo de tempo linear para o problema de caminhos mais curtos?
Respostas:
Antes de tudo, a resposta que se aplica aqui já foi dada por Raphael nos comentários à pergunta: " Como nem sabemos como encontrar um caminho mais curto e simples no tempo linear, duvido. " A seguir, portanto, assumirei que você está interessado em conhecer os melhores algoritmos disponíveis no estado da arte atual. A seguir, descrevo o melhor limite do pior caso (até onde sei), mas também um algoritmo que pode ser executado em tempo linear em alguns casos específicos.
Mas antes de descrever os últimos desenvolvimentos no estado da arte, eu queria enfatizar a importância de caminhos simples nesse problema específico. De fato, muitas pessoas ignoram a importância desse requisito e algumas nem mesmo o entendem à primeira vista.
Ao calcular o caminho mais curto de um vértice inicial para um vértice de meta, o caminho ideal é necessariamente simples , ou seja, não repete nenhum vértice. No entanto, ao calculark caminhos ideais, o segundo, terceiro, ... os melhores caminhos podem não ser simples. Para provar isso, forneço aqui um exemplo que foi ligeiramente adaptado de Hershberger, Maxel & Suri, 2007:
A Figura mostra um dígrafo cuja solução ideal (do vértice de origems para o vértice da meta t ) é o caminho π1: ⟨ S , A , B , C,D,t⟩ com um custo igual a 5. Se os caminhos não precisam ser simples, então o segundo e o terceiro caminhos ótimos são π2:⟨s,A,B,C,D,C,D,t⟩ e π3:⟨s,A,B,A,B,C,D,t⟩ ambos com um custo igual a 7. No entanto, se for necessário que os caminhos sejam simples, o segundo e o terceiro caminhos ótimos serão π2:⟨s,F,t⟩ e π3:⟨s,G,t⟩ com custos 10 e 11, respectivamente.
Dado um gráficoG(V,E) Onde V é o conjunto de vértices e ⟨u,v⟩∈E,u,v∈V se houver uma aresta entre os vértices u e v , o estado atual da arte para esse problema da melhor forma possível é descrito abaixo:
A primeira melhoria significativa para resolver ok O problema dos caminhos ótimos é o algoritmo de Eppstein (Eppstein, 1998), executado em O(|E|+|V|log|V| +k) . No entanto, esse algoritmo exige que o gráfico seja fornecido explicitamente.K∗ alivia esse requisito, mantendo a baixa complexidade (Aljazzar & Leue, 2011) e, além disso, permite a aplicação de heurísticas admissíveis. Nos dois casos, a saída calculada por esses algoritmos não é necessariamente um caminho simples.
Caso seja necessário que os caminhos sejam simples, os melhores resultados são devidos a Yen (Yen, 1971, 1972), generalizado posteriormente por Lawler (Lawler, 1972), que usando estruturas de dados modernas pode ser implementado emO ( k | V| ( | E| + | V| registro| V| ))) pior das hipóteses. No caso de gráficos não direcionados, Katoh, Ibaraki e Mine (Katoh, Ibaraki & Mine, 1982) aprimoram o algoritmo de Yen paraO ( k ( | E| + | V| registro| V| ))) Tempo. Enquanto o pior caso assintótico de Yen deve enumerark Como os caminhos mais curtos e simples de um gráfico direcionado permanecem invictos (novamente, até onde eu sei!), várias tentativas foram feitas para superá-lo na prática.
Um desses trabalhos é devido a John Hershberger et al., Que introduziu um algoritmo de caminhos de substituição que é conhecido por falhar pouco. Como resultado, seu algoritmo fornece uma aceleração que cresce linearmente com o número médio de arestas nok caminhos mais curtos, mas, em alguns casos (como gráficos aleatórios), essa aceleração é minimizada.
Espero que isto ajude,
Bibliografia
Aljazzar, H. & Leue, S. (2011).K∗ : Um algoritmo de pesquisa heurística para encontrar o k caminhos mais curtos. Inteligência Artificial, 175 (18), 2129-2154.
Eppstein, D. (1998). Encontrando ok caminhos mais curtos. Jornal SIAM sobre Computação, 28 (2), 652-673.
Hershberger, J., Maxel, M. & Suri, S. (2007). Encontrando ok caminhos simples mais curtos: Um novo algoritmo e sua implementação. Transações ACM em algoritmos, 3 (4), 45-46
Katoh, N., Ibaraki, T. & Mine, H. (1982). Um algoritmo eficiente parak caminhos simples mais curtos. Networks, 12, 411-427.
Lawler, EL (1972). Um procedimento para calcular ok melhores soluções para problemas discretos de otimização e sua aplicação ao problema de caminho mais curto. Management Science, 18, 401-405.
Yen, JY (1971). Encontrando ok caminhos sem loop mais curtos de uma rede. Management Sciences, 17, 712-716.
Yen, JY (1972). Outro algoritmo para encontrar ok caminhos de rede sem loop mais curtos. Proceedings of 41st Management Operations Research Society of America, 20.
fonte