Qual é a intuição de por que o problema do caminho mais longo não possui uma subestrutura ideal?


9

Eu estava aprendendo sobre os caminhos mais longos e me deparei com o fato de que os caminhos mais longos nos gráficos gerais não são solucionáveis ​​pela programação dinâmica porque o problema carecia de uma subestrutura ideal (que eu acho que a instrução precisa ser corrigida para os caminhos simples mais longos nos gráficos gerais não é solucionável por programaçao dinamica).

Se assumirmos que eles precisam ser simples (por algum motivo, isso ainda não é apreciado) e por mais tempo, é fácil criar um exemplo contrário. Considere o gráfico quadrado com 4 nós A → B → C → D → A.

insira a descrição da imagem aqui

O caminho mais longo de A a D é claramente A → B → CD. Mas o caminho mais longo de B a C não faz parte do caminho mais longo de A a D porque o caminho mais longo de B a C é B → A → D → C, que claramente não é o mesmo que o caminho B → C (que neste caso, é de fato o caminho mais curto!).

Isso parece funcionar apenas porque exigimos que os caminhos sejam simples. É necessário assumir que os caminhos devem ser simples para provarmos que a subestrutura ideal não está presente?

Penso que o contra-exemplo deve ser uma boa evidência / prova (o que não nego), simplesmente não acho o contra-exemplo muito esclarecedor. Entendo por que isso prova que não permite a subestrutura ideal, mas falha em fornecer-me uma compreensão ou intuição real, por que deveria ser óbvio que não deveria haver um caminho mais longo para a subestrutura ideal. Por exemplo, por que um argumento recortar e colar não funciona? Se o subcaminho não for mais longo, basta seguir um caminho mais longo! Parece muito tentador, quero dizer, se colocarmos em prática algo mais longo, é claro que deve demorar mais ... porém, isso está errado por alguma razão . O exemplo realmente prova que o DP nunca poderesolver caminhos mais longos (simples?) eficientemente? Não exijo uma prova geral de que não esteja em P (pois isso pode estar pedindo uma solução P vs NP). Estou logo após uma prova de que não é solucionável pelo DP (ou pelo menos uma evidência muito forte de que o DP nunca pode resolver esse problema de caminhos mais longos ou que o problema não possui uma estrutura ideal).

Eu tenho visto definitivamente na wikipedia que o problema deve ser NP-Hard, o que significa que provavelmente não existe um algoritmo rápido. Não tenho certeza se esse é o único tipo de evidência / intuição que existe para fornecer que a subestrutura ideal deve estar obviamente ausente (ou, se não estiver faltando, não pode ser usada para agilizar o problema). É que a única maneira de mostrar que ele deve não ser solucionável por um programa dinâmico rápido?

É a razão pela qual exigimos simplessó porque se não colocarmos esse requisito, o problema se torna trivial / desinteressante? Em outras palavras, se houver algum ciclo, será resolvido o problema do caminho mais longo para todos os nós alcançáveis ​​a partir desse ciclo (localizando qualquer caminho para esse ciclo). Para os nós que não têm ciclo acessível, temos um gráfico acíclico, que é passível de solução por DP (se os pesos forem positivos?). Além disso, se houver ciclos, fizemos automaticamente as coisas terem uma subestrutura ideal (eu acho) porque qualquer caminho mais longo é composto pelo caminho mais longo que abrange dois casos: 1 os caminhos do ciclo ou 2 os caminhos do DAG, que ambos contêm subestrutura ideal. Então o problema se tornou trivial sem a necessidade de caminhos simples? Ou estou faltando alguma coisa ou existem melhores explicações para o porquê de caminhos simples serem necessários? Nãocaminhos mais longos em geral são solucionáveis ​​pelo DP?

Também não tenho 100% de certeza de quais requisitos são necessários para garantir que o DP não possa ser usado. É necessário pesos de borda negativos, positivos, não ponderados, direcionados, não direcionados ... quais são os requisitos?


2
"não é solucionável por programação dinâmica porque o problema carecia de uma subestrutura ideal (que eu acho que a instrução precisa ser corrigida para caminhos simples mais longos em gráficos gerais não é solucionável por programação dinâmica)." - nem "subestrutura ideal" nem "programação dinâmica "são termos significativos em sentido formal; simplesmente não há definições formais universalmente acordadas para eles. Veja também aqui e aqui . Isso significa que a prova solicitada não existe.
Raphael

Respostas:


11

O problema do caminho mais longo tem uma subestrutura ideal e isso pode ser usado para melhorar a trivialidade O(n!) algoritmo para um O~(2n)algoritmo. Primeiro temos que generalizar o problema:

Caminho mais longo generalizado: dado um gráfico G=(V,E)dois vértices s,tVe um conjunto de vértices AV{s,t}, encontre o caminho mais longo em G de s para t evitando os vértices em A.

Denotando a solução para esse problema, (s,t,A) (o gráfico é entendido), temos a recorrência

(s,t,A)=1+maxxA{s}:(s,x)E(x,t,A{s})(st),(t,t,A)=0.
Se o máximo no primeiro caso estiver acima do conjunto vazio (ou seja, se não houver um caminho de para evitando ), atribuímos .stA(s,t,A)=

Você pode resolver essa recorrência usando a programação dinâmica no tempo .O~(2n)

Embora exista uma infraestrutura ideal aqui, há muitos parâmetros para acompanhar, e é isso que torna o problema intratável.


o que significa o til em cima do O? Suponho que isso signifique ocultar termos polinomiais na grande notação O.
Charlie Parker

@CharlieParker Isso mesmo.
Yuval Filmus

Como você impõe caminhos simples nesta formulação?
Joost

@ Joost A recorrência já impõe isso.
Yuval Filmus

@YuvalFilmus, ah, perdi o link que se torna na próxima recorrência e que são os nós que já são visitados. xsA
Joost

3

Primeiro de tudo, o caminho simples mais longo é NP-difícil e não há dúvida sobre isso (como o caminho Hamiltoniano se reduz a ele).

Em segundo lugar, se você considerar os caminhos não simples, o problema não fará muito sentido, pois o caminho não simples passa por uma aresta / vértice mais de uma vez, portanto, possui um loop. Como resultado de um loop no caminho, o caminho não simples mais longo é infinito .


1

Estive pensando o mesmo nas últimas 1 hora e cheguei às seguintes conclusões:

i) O caminho mais longo em um gráfico sem ciclos possui uma subestrutura ideal e o caminho mais curto.

ii) O caminho mais longo sem ciclos positivos possui uma subestrutura ideal e o caminho mais curto sem ciclos negativos.

iii) O caminho mais longo com ciclos positivos e o caminho mais curto com ciclos negativos não existem, pois podemos percorrer o ciclo infinitamente. Então, olhamos para caminhos simples.

iv) O caminho simples mais longo com ciclos positivos e o caminho simples mais curto com ciclos negativos é NP Hard.

DP resolve (i) em O (V + E). Bellman-Ford resolve (ii) em O (VE) e Djisktra ajuda em certos sub-casos de (ii).

A literatura confunde esse tópico quando o caminho mais longo é apenas o caminho mais curto com pesos negados e vice-versa. Não vejo razão para fornecer declarações gerais, como o caminho mais longo não possui uma subestrutura ideal, mas o caminho mais curto, etc.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.