Considere um gráfico . Cada aresta tem dois pesos e . Encontrar uma árvore geradora que minimiza o produto . O algoritmo deve ser executado em tempo polinomial em relação a .
Acho difícil adaptar qualquer um dos algoritmos tradicionais em árvores de abrangência (Kruskal, Prim, Edge-Deletion). Como resolver isso? Alguma dica?
Respostas:
Vou assumir que você não recebe arestas negativas ponderadas, porque isso pode não funcionar se houver pesos negativos.
Algoritmo
Para cada uma das suas arestas, identifique-as de a n1 n
Deixe peso Um número de borda iai i
Seja peso B do número da aresta ibi i
Elabore esta tabela
Com cada um dos elementos da tabela sendo o produto de linha e coluna.
Para cada aresta, some a linha e a coluna relevantes da tabela (e lembre-se de remover o elemento na interseção, pois ele foi somado duas vezes).
Encontre a aresta que possui a maior soma e exclua-a se não desconectar o gráfico. Marque a borda como essencial caso contrário. Se uma aresta foi excluída, preencha suas linhas e colunas com 0.
Correção
O resultado é obviamente uma árvore.
O resultado está obviamente se estendendo desde que nenhum vértice está desconectado.
O resultado é mínimo? Se houver outra borda cuja exclusão criará uma árvore de abrangência menor no final do algoritmo, essa borda será excluída e anulada primeiro. (se alguém pudesse me ajudar a tornar isso um pouco mais rigoroso / e / ou contra-exemplo, isso seria ótimo)
Tempo de execução
Obviamente polinomial em .|V|
editar
nãoéum exemplo contrário.(2,11),(11,2),(4,6)
Então
é removido.(11,2)
Termine com(2,11),(4,6)=6∗17=102
Outras árvores abrangidas são
fonte
Esta é a solução em http://www.cnblogs.com/autsky-jadek/p/3959446.html .
Podemos visualizar todas as árvores de abrangência como um ponto no plano , onde x é a soma do peso ∑ e ∈ T A e , y é a soma do peso ∑ e ∈ T B e . O objetivo é minimizar x y .x−y x ∑e∈TAe ∑e∈TBe xy
Run the above algorithm onOBC,OAC recursively, until there is no more spanning trees between BC,AC and O .
Now we get a set of possible spanning trees. Calculatexy value for each tree to get the minimum tree.
fonte