Suponhamos que temos um gráfico dirigido e dois nós e . Gostaria de saber se já existem algoritmos para calcular o seguinte problema de decisão:
Existem pelo menos dois caminhos entre e do mesmo comprimento?
E a complexidade? Posso resolvê-lo em tempo polinomial?
Gostaria de adicionar uma nova restrição ao gráfico, talvez o problema seja mais solucionável. Na matriz de adjacência, todas as colunas não estão vazias. Portanto, todo nó tem pelo menos uma seta na entrada e também há pelo menos um nó conectado a ele. Portanto, se o nó é o ésimo nó, é uma aresta no gráfico.
complexity-theory
graph-theory
time-complexity
graphs
Paolo Parisen T.
fonte
fonte
Respostas:
Considere um gráfico , queremos saber se existem dois caminhos diferentes de a do mesmo comprimento. O que fazer? Simples: codifique dois caminhos em um. Defina o gráfico com os vértices . Você faz um passo em , fazendo duas etapas independentes no . O bit adicional informa se os dois caminhos já se separaram.A B G ′ V × V × { 0 , 1 } G ′ GG A B G′ V×V×{0,1} G′ G
Formalmente, existe uma aresta em se se , em e .L ' i → i ' j → j ' L e ' = e ∨ ( i , i ' ) ≠ ( J , J ' )(i,j,e)→(i′,j′,e′) G′ i→i′ j→j′ G e′=e∨(i,i′)≠(j,j′)
O algoritmo verifica se existe um caminho para em , que é( B , B , 1 ) G ′ O ( V 4 ) , ou algo como O ( ( V + E ) 2 ) .(A,A,0) (B,B,1) G′ O(V4) O((V+E)2)
Se você concordar que esse algoritmo está correto, como conseqüência, o caminho em tem um comprimento máximo de 2 n 2 , portanto, possíveis "colisões de caminho" devem ocorrer o mais tardar nesse comprimento. Você pode obter um algoritmo O ( V ω log V ) a partir desta observação, onde ω é a complexidade da multiplicação da matriz (pergunte se você precisa de um spoiler ...).G′ 2n2 O(VωlogV) ω
Sinto fortemente que existe um algoritmo , que utiliza mais a estrutura do problema.O(V+E)
fonte
Provavelmente tenho uma resposta para esse problema, mas não tenho certeza de que funcione.
Não é importante "encontrar" os dois caminhos, a única coisa importante é "saber" se eles existem ou não. Eu não acho que este seja um problema completo do NP.
Portanto, tome a matriz de adjacência . Podemos facilmente supor que ele seja preenchido com valor 0,1. (0 = sem aresta; 1 = existe uma aresta) Vamos usar a seguinte álgebra com 3 valores (0,1,2), onde tudo funciona como de costume, exceto: 2 + <algo> = 2 ; 2 ∗ <o que for maior que 0> = 2A 2+<something>=2 2∗<whatever greater than 0>=2
Portanto, se existem dois caminhos com o mesmo comprimento de , espero que exista um valor p tal que ( A p ) i , j = 2 .i,j p (Ap)i,j=2
Seja o número de vértices no gráfico (ou, digamos, que A tenha dimensão n × n ). Não sei o valor de p , mas se eu repetir A multiplicando-se por no máximo n 2, devo encontrar a resposta. (assim, p < n 2 ) (o sentido é que i vá Um , em seguida, verificar i Um 2 , então i vá Um 3 e assim por diante ...)n A n×n p A n2 p<n2 A A2 A3
aqui está a minha argumentação:
Paro para repetir uma vez que encontrei .(Ap)i,j=2
estou errado?
fonte