Se todas as arestas tiverem o mesmo peso, pode-se usar o BFS para obter uma árvore de abrangência mínima?


9

Se dado que todas as arestas de um gráfico têm peso igual , pode-se usar a pesquisa de largura em primeiro lugar (BFS) para produzir uma árvore de abrangência mínima em tempo linear ?Gc

Intuitivamente isto soa corrigir, como BFS não visita um nó duas vezes, e só atravessa do vértice para o vértice sse ela não visitou antes, de modo que não vai ser qualquer ciclo, e se é conectado acabará por visitar todos os nós. Como o peso de todas as arestas é igual, não importa quais arestas o BFS escolheu.vuuG

Meu raciocínio faz algum sentido?

Respostas:


13

Se o seu gráfico não for ponderado, ou equivalente, todas as arestas tiverem o mesmo peso, qualquer árvore de abrangência será uma árvore de abrangência mínima. Como você observou, você pode usar um BFS (ou mesmo DFS) para encontrar uma árvore linear no tempo no número de arestas.


Mas, e o exemplo contraditório que o colapsar forneceu?
TheNotMe 28/03/2014

@TheNotMe O BFS geralmente é chamado de algoritmo linear, pois é . No entanto, no pior dos casos (como no exemplo do colapsar), para que o BFS possa ser considerado como . No entanto, os algoritmos de Prim e Kruskal para MSTs também contêmna complexidade do tempo e, portanto, também não são "lineares" no sentido do colapso. Qual algoritmo você está usando como referência? Sua complexidade de tempo inclui? Nesse caso, o BFS não é pior que isso. O(|V|+|E|)|E|=|V|2O(|V|2)|E||E|
Patrick87

3

Se todos os custos de borda forem iguais, qualquer árvore de abrangência também será uma árvore de abrangência mínima. Nesse caso, qualquer algoritmo que resolva a REACHABILITY também resolve o MST.

Let S = {v0} be a set of nodes initially containing v0
Mark v0
Parent[v0] = -1
While S is not empty
  Remove a vertex v from S
  For all edges (v,u)
    If u is unmarked
      Mark it and add it to S
      Parent[u] = v

Você pode recuperar a árvore da Parentrelação. Se S.Removee S.Addlevar tempo constante, o algoritmo tomará onde é o número de vértices e arestas.O(v+e)=O(v2)v,e


-3

Se todas as arestas tiverem o mesmo peso, podemos usar:

-BFS -DFS - Algoritmo de Dijkstra - algoritmo de -Prim

Mas você não pode usar

algoritmo de -kruskal


Isso não é verdade. Você pode usar o algoritmo de Kruskal.
Mal

Como é possível, porque vai acabar dando todas as arestas quando começamos com o menor peso primeiro !!
Nandkishor Nangre

Ele escolherá um, qualquer um, também pode escolher aleatoriamente.
malvado

Sim, eu tenho o seu ponto !! mas é aplicável em algo kruskal .... porque eu nunca vi qualquer código de kruskal afirmando o fenômeno acima
Nandkishor Nangre

A pergunta feita se podemos usar "BFS" ​​e sua resposta apenas diz "sim" sem dizer mais nada sobre o porquê. Não estamos procurando respostas que apenas afirmem que a resposta é sim. Estamos buscando respostas que forneçam explicações, justificativas, justificativas ou provas de suas conclusões. Convido você a editar sua resposta para explicar o porquê. Além disso, a pergunta não perguntou "como podemos fazê-lo", perguntou se o BFS funcionava, portanto, fornecer outros algoritmos não responde à pergunta que foi feita.
DW
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.