Árvore geradora mínima. o problema admita que tenhamos que conectar vértices de forma eficiente,...
TRANSCRIPT
![Page 1: Árvore Geradora Mínima. O problema Admita que tenhamos que conectar vértices de forma eficiente, onde os vértices podem ser: computadores, telefones,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc11f497959413d8cb345/html5/thumbnails/1.jpg)
Árvore Geradora Mínima
![Page 2: Árvore Geradora Mínima. O problema Admita que tenhamos que conectar vértices de forma eficiente, onde os vértices podem ser: computadores, telefones,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc11f497959413d8cb345/html5/thumbnails/2.jpg)
O problema
Admita que tenhamos que conectar vértices de forma eficiente, onde os vértices podem ser: computadores, telefones, etc. Uma árvore geradora mínima deve fornecer uma solução econômica, que precise de pouco cabo, tubulação, ou pouca quantidade de qualquer que seja o meio de conexão (arestas)
![Page 3: Árvore Geradora Mínima. O problema Admita que tenhamos que conectar vértices de forma eficiente, onde os vértices podem ser: computadores, telefones,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc11f497959413d8cb345/html5/thumbnails/3.jpg)
Definição
Uma árvore geradora de um grafo é uma árvore não-enraizada cujo conjunto de vértices coincide com o conjunto de vértices do grafo cujas arestas são (algumas das) arestas do grafo.
![Page 4: Árvore Geradora Mínima. O problema Admita que tenhamos que conectar vértices de forma eficiente, onde os vértices podem ser: computadores, telefones,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc11f497959413d8cb345/html5/thumbnails/4.jpg)
Portanto...
Uma árvore geradora conecta todos os vértices de um grafo sem formar ciclos.
Um dos algoritmos utilizados é o PRIM. Ele é parecido com o algoritmo para o caminho mínimo, sendo que, um grafo poderá ter mais de uma árvore geradora mínima.
![Page 5: Árvore Geradora Mínima. O problema Admita que tenhamos que conectar vértices de forma eficiente, onde os vértices podem ser: computadores, telefones,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc11f497959413d8cb345/html5/thumbnails/5.jpg)
Exemplo
![Page 6: Árvore Geradora Mínima. O problema Admita que tenhamos que conectar vértices de forma eficiente, onde os vértices podem ser: computadores, telefones,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc11f497959413d8cb345/html5/thumbnails/6.jpg)
Algoritmo PRIM
-Cria-se um conjunto IN que inicialmente terá um vértice arbitrário (z)
-Para cada vértice de (z) que não esteja em IN, avaliamos a menor distância.
-A aresta que realiza a distância mínima é então incluída na árvore geradora mínima.
-O algoritmo termina quando todos os vértices do grafo pertençam a IN.
![Page 7: Árvore Geradora Mínima. O problema Admita que tenhamos que conectar vértices de forma eficiente, onde os vértices podem ser: computadores, telefones,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc11f497959413d8cb345/html5/thumbnails/7.jpg)
Algoritmo PRIM(execução)
Exemplo:
c(F) = 1c(F) = 1
H
A
B
J
C
E
M L
G
D
I
F
4
7
4
3
7
5
6
2
23
1
4
2
3
8
6
4
c(F) = 3c(F) = 3c(F) = 6c(F) = 6c(F) = 9c(F) = 9c(F) = 11c(F) = 11c(F) = 13c(F) = 13c(F) = 17c(F) = 17c(F) = 21c(F) = 21c(F) = 25c(F) = 25c(F) = 28c(F) = 28c(F) = 33c(F) = 33
![Page 8: Árvore Geradora Mínima. O problema Admita que tenhamos que conectar vértices de forma eficiente, onde os vértices podem ser: computadores, telefones,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc11f497959413d8cb345/html5/thumbnails/8.jpg)
Algoritmo (Pseudo-código)
função Prim(G)
{
T := {} B := Um vértice de G Enquanto B não contém todos os vértices
(u,v) := aresta de menor peso saindo de todos os vértices em B
T := T U {(u,v)}B := B U {u}
}
![Page 9: Árvore Geradora Mínima. O problema Admita que tenhamos que conectar vértices de forma eficiente, onde os vértices podem ser: computadores, telefones,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc11f497959413d8cb345/html5/thumbnails/9.jpg)
Algoritmos de busca
Os problemas vistos até agora baseavam-se em alguma premissa do tipo: não passar pela mesma aresta, não passar pelo mesmo vértice, minimizar a distância percorrida, etc.
Agora veremos algoritmos onde podemos percorrer todos os vértices em uma ordem particular, mas listando todos os vértice.
![Page 10: Árvore Geradora Mínima. O problema Admita que tenhamos que conectar vértices de forma eficiente, onde os vértices podem ser: computadores, telefones,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc11f497959413d8cb345/html5/thumbnails/10.jpg)
Busca em profundidade
Neste procedimento, partimos de um vértice a e marcamos ele como visitado, prosseguindo para o ponto mais longe possível, até que nenhum vértice seja mais encontrado pelo caminho escolhido.
![Page 11: Árvore Geradora Mínima. O problema Admita que tenhamos que conectar vértices de forma eficiente, onde os vértices podem ser: computadores, telefones,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc11f497959413d8cb345/html5/thumbnails/11.jpg)
Busca em profundidadePara um grafo simples e conexo
Procedure profundidade(G, a){ marque a como visitado escreva a for (cada vertice n adjacente de a) if n não foi visitado profundidade(G, n)}
![Page 12: Árvore Geradora Mínima. O problema Admita que tenhamos que conectar vértices de forma eficiente, onde os vértices podem ser: computadores, telefones,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc11f497959413d8cb345/html5/thumbnails/12.jpg)
Busca em largura
Neste caso partimos do vértice a e seguimos por todos os seus adjacentes, em seguida seguimos cada um desses adjacentes, realizando a mesma operação.
![Page 13: Árvore Geradora Mínima. O problema Admita que tenhamos que conectar vértices de forma eficiente, onde os vértices podem ser: computadores, telefones,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc11f497959413d8cb345/html5/thumbnails/13.jpg)
Busca em Largura (usando lista)Procedure largura(G, a){
Q: Fila de verticesmarque aescreva(a)inclui(a) na filaEnquanto Q não está vaziafor cada vértice n adjacente a Q
if n não foi visitadomarque n como visitadoescreva(n)incluiNa Fila (n,Q)
TiraDaFila(q)}
![Page 14: Árvore Geradora Mínima. O problema Admita que tenhamos que conectar vértices de forma eficiente, onde os vértices podem ser: computadores, telefones,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc11f497959413d8cb345/html5/thumbnails/14.jpg)
AnálisesA vantagem de se utilizar lista de adjacências no lugar de matriz, é interessante para a implementação, uma vez que torna o algoritmo muito mais simples. (como seria percorrer todos os adjacentes de a, em uma matriz?)
Varrer a lista de adjacências o grafo determina a quantidade de trabalho a ser realizada em cada lado. Como existem n listas de adjacências, a quantidade de trabalho é pelo menos O(n), pois mesmo que ela esteja vazia, precisa ser verificada. Como existem M arestas, o trabalho para percorrer todas as arestas de uma lista é o(m). Portanto, os algoritmos são O(max(n,m)). O caso mais comum provavelmente é O(m) pois em geral temos mais arestas do que vértices.
![Page 15: Árvore Geradora Mínima. O problema Admita que tenhamos que conectar vértices de forma eficiente, onde os vértices podem ser: computadores, telefones,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc11f497959413d8cb345/html5/thumbnails/15.jpg)
Busca em arvores
Os algoritmos de busca em largura e em profundidade se aplicam a quaisquer grafos, porém, existem 3 outros algoritmos apenas para árvores que são úteis.
Pré-ordem
InOrdem
PosOrdem
![Page 16: Árvore Geradora Mínima. O problema Admita que tenhamos que conectar vértices de forma eficiente, onde os vértices podem ser: computadores, telefones,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc11f497959413d8cb345/html5/thumbnails/16.jpg)
ABDCEGFHI
Pré-Ordem
![Page 17: Árvore Geradora Mínima. O problema Admita que tenhamos que conectar vértices de forma eficiente, onde os vértices podem ser: computadores, telefones,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc11f497959413d8cb345/html5/thumbnails/17.jpg)
IN-Ordem
DBAEGCHFI
![Page 18: Árvore Geradora Mínima. O problema Admita que tenhamos que conectar vértices de forma eficiente, onde os vértices podem ser: computadores, telefones,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc11f497959413d8cb345/html5/thumbnails/18.jpg)
DBGEHIFCA
Pós-Ordem
![Page 19: Árvore Geradora Mínima. O problema Admita que tenhamos que conectar vértices de forma eficiente, onde os vértices podem ser: computadores, telefones,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc11f497959413d8cb345/html5/thumbnails/19.jpg)
PreOrdem
Procedure PreOrdem(N:Pno);
If N <> nil Then
Processa(N); {p. ex. imprime} PreOrdem(N^.esq);
PreOrdem(N^.dir);
End;
End;
![Page 20: Árvore Geradora Mínima. O problema Admita que tenhamos que conectar vértices de forma eficiente, onde os vértices podem ser: computadores, telefones,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc11f497959413d8cb345/html5/thumbnails/20.jpg)
InOrdem
Procedure InOrdem(N:Pno);
If N <> nil Then
InOrdem(N^.esq);
Processa(N); {p. ex: imprime}
InOrdem(N^.dir);
End;
End;
![Page 21: Árvore Geradora Mínima. O problema Admita que tenhamos que conectar vértices de forma eficiente, onde os vértices podem ser: computadores, telefones,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc11f497959413d8cb345/html5/thumbnails/21.jpg)
PosOrdem
Procedure PosOrdem(N:Pno)
If N <> nil Then
PosOrdem(N^.esq);
PosOrdem(N^.dir);
Processa(N); {p.ex.: imprime}
End;
End;
![Page 22: Árvore Geradora Mínima. O problema Admita que tenhamos que conectar vértices de forma eficiente, onde os vértices podem ser: computadores, telefones,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc11f497959413d8cb345/html5/thumbnails/22.jpg)
Exercícios
1.Crie o grafo a1(1,2,5); a2(2,5,3); a3(2,3,3); a4(4,2,3); a5(3,1,3) e faça a conexão utilizando o algoritmo PRIM
2.Percorra a árvore ao lado das 3 formas possíveis