You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Algoritmos de Teoria dos Grafos implementados em Java como trabalho académico da cadeira de Estruturas de Dados e Algoritmos no ISCTEM — Instituto Superior de Ciências e Tecnologia de Moçambique.
Cada algoritmo inclui implementação completa, análise de complexidade e casos de teste.
$ cat ALGORITHMS.md
🌿 Kruskal — Minimum Spanning Tree
Estratégia: Greedy — ordenar todas as arestas por peso e adicionar
as mais baratas que não formem ciclo (Union-Find)
Grafo de exemplo: MST resultado (Kruskal):
A ---4--- B A ---4--- B
| \ | | |
7 2 5 → 2
| \ | \
D ---9--- C D C
\
1 aresta mais barata
Complexidade
⏱️ Tempo
O(E log E) — dominado pela ordenação das arestas
💾 Espaço
O(V + E)
✅ Melhor para
Grafos esparsos (poucas arestas)
// Kruskal — núcleo do algoritmoCollections.sort(edges, (a, b) -> a.weight - b.weight); // sort by weightfor (Edgeedge : edges) {
introotU = find(parent, edge.u);
introotV = find(parent, edge.v);
if (rootU != rootV) { // não forma ciclo?mst.add(edge); // inclui na MSTunion(parent, rank, rootU, rootV);
}
}
🌱 Prim — Minimum Spanning Tree
Estratégia: Greedy — começar num vértice, sempre expandir para
o vizinho mais barato ainda não visitado (Priority Queue)
# Requisitos
Java 11+
IntelliJ IDEA (recomendado)
# Clonar e executar
git clone https://github.com/Quirson/Algoritmos.git
cd Algoritmos
# Abrir com IntelliJ IDEA ou compilar manualmente:
javac src/**/*.java
java src.Main