Aulas de Análise de Algoritmos

The life so short
the craft so long to learn.

A vida tão curta,
o ofício tão longo de aprender.

— Geoffrey Chaucer

Estas aulas de análise de algoritmos foram baseadas em partes dos livros de Cormen, Leiserson, Rivest e Stein, de Kleinberg e Tardos, de Brassard e Bratley e de alguns outros.   O curso estuda alguns algoritmos clássicos e analisa sua correção e seu desempenho.  Para preparar o terreno, as primeiras aulas tratam de duas importantes ferramentas matemáticas:  a comparação assintótica de funções e a resolução de recorrências.

Embora os nossos algoritmos sejam descritos em pseudocódigo — em estilo semelhante ao de Cormen, Leiserson, Rivest e Stein — convém que o leitor conheça alguma linguagem de programação, como a C ou C++ ou Java. Também é desejável que o leitor conheça algumas estruturas de dados básicas.

Preliminares

Estratégias de projeto de algoritmos

Ferramentas algorítmicas

Problemas e algoritmos

Complexidade de problemas

Apêndices