Please enable JavaScript.
Coggle requires JavaScript to display documents.
Mapa Mental 14 - Coggle Diagram
Mapa Mental 14
Algoritmo de Prim
Processo
Basicamente, o código, a partir de um vértice v qualquer do grafo G, procura pela aresta incidente de v que possui o menor peso, para assim seguir para o vértice u, adjecente a v, do outro lado desta aresta
Em seguida, o algoritmo faz esse mesmo processo de verificação, não só para os vértices adjecentes a u, mas também os adjecentes a v (ou seja, para todos os vértices adjecentes à árvore)
O algoritmo então escolhe seguir pelo caminho de menor peso, seja o outro vértice, w, adjecente a v ou u
E assim o código segue até que todos os vértices do grafo estejam inclusos na árvore de abrangência mínima
Nesse caso, por exemplo, o algoritmo iria verificar qual caminho que liga um vértice adjecente a v ou u ou w possui o menor peso
-
-
-
Implementação
Se usa uma matriz de pesos ou listas de adjecência, para a representação do grafo
Se usa uma fila de prioridade para o processo de escolha da aresta de menor peso (por exemplo uma heap mínima)
Algoritmo de Kruskal
Processo
Basicamente, se separa individiualmente todas as arestas do grafo e as colocam em conjuntos, separadas umas das outras. Esses conjuntos são chamados de subconjuntos disjuntos, e eles são, logo em seguida, ordenados em uma lista de forma não-decrescente pelos pesos de suas arestas
Subconjuntos Disjuntos
-
Implementação
Quick-find
-
Usa uma array, onde os valores indicam os representantes dos subconjuntos contendo aqueles
elementos (esses sendo os índices da array)
Cada subconjunto é implementado por uma lista ligada, onde o header aponta para o primeiro e para o último elemento da lista; além de possuir o tamanho da lista
Eficiência
- makeset(x): Θ(n)
- find(x): Θ(1)
- union(x, y): Θ(n)
Quick-union
Prioriza a operação de união dos subconjuntos (union(x, y))
Cada subconjunto é representado por uma árvore enraizada, onde a raiz é o elemento representativo do subconjunto
Eficiência
- makeset(x): Θ(n)
- find(x): Θ(n)
- union(x, y): Θ(1)
O algoritmo então vai unificando o menor subconjunto disjunto da lista, com o conjunto de arestas da árvore (Et), contanto que sua adição não forme um ciclo dentro do subgrafo definido por Et
-
-
-
São 2 algoritmos que resolvem o problema de, dado um grafo G, conectar todos os vértices desse grafo da maneira mais econômica possível
-