Os seguintes algoritmos ensinados em PCS3110 foram implementados em Python e estão disponíveis neste repositório:
- Módulo 1 - Estruturas de dados
- Módulo 2 - Grafos
- Grafo dirigo e não dirigido
- Busca em largura
- Busca em profundidade
- Ordenação topológica
- Árvore geradora mínima usando os algoritmos de Prim e Kruskal
- Caminhos mínimos usando o algoritmo de Dijkstra
- Árvore binária (altura, é ancestral, pré-ordem, pós-ordem e em ordem)
- ABB (adicionar, busca, menor, maior e sucessor)
- Módulo 3 - Análise de algoritmo e ordenação
Os algoritmos usados em PCS3110 foram adaptados dos livros do Cormen, Leiserson, Rivest e Stein (2011) e do Feofiloff (2009) pelos professores de PCS3110: Anarosa Alves Franco Brandão, Anna Helena Reali Costa, Marcos Antonio Simplício Júnior, Romero Tori e por mim, Fábio Levy Siqueira. A implementação em Python foi feita por mim.
Além das implementações são disponibilizados alguns testes simples usando a biblioteca unittest
do Python. Note que não são testes de unidade ideais; devem ser vistos apenas como exemplos de uso das classes.
Para rodar todos os testes:
python -m unittest -v
Para rodar um teste específico (por exemplo, os de recursão):
python -m unittest tests/test_recursao.py -v
Caso haja algum problema de implementação, abra uma Issue no GitHub ou faça um Pull request. Qualquer coisa entre em contato comigo ([email protected]).