Veja Projeto de Algoritmos |
Professores devem ajudar alunos a transformar
.
informação em conhecimento
—Anônimo
Ao verificar que um dado programa está muito lento,
uma pessoa prática
pede uma máquina mais rápida
ao seu chefe.
Mas o ganho potencial
que uma máquina mais rápida pode proporcionar
é tipicamente limitado por um fator de 10,
por razões técnicas ou econômicas.
Para obter um ganho maior,
é preciso buscar melhores algoritmos.
Um bom algoritmo,
mesmo rodando em uma máquina lenta,
sempre acaba derrotando
(para instâncias grandes do problema)
um algoritmo pior rodando em uma máquina rápida.
Sempre.
—S. S. Skiena, The Algorithm Design Manual
MAC0122 é a segunda disciplina de computação no currículo do BCC. Ela pressupõe uma boa prática de programação, particularmente em linguagem C; o aluno deve ter adquirido essa prática em MAC0110 (Introdução à Computação).
MAC0122 estuda algoritmos para alguns problemas computacionais básicos. Isso serve de motivação para introduzir vários conceitos e ideias importantes:
Principais tópicos de MAC0122:
MAC0122 não é um curso de linguagem C. A linguagem C é apenas uma ferramenta: ela será usada para representar e testar algoritmos, que são o verdadeiro assunto da disciplina. (Apesar disso, eu sei que muitos alunos vão aprender muito C, por conta própria, no decorrer de MAC0122.)
Estas notas de aula são baseadas no livro de R. Sedgewick e no livro de E. Roberts.
Apêndices:
Busca no sítio mac0122-2002
Outros assuntos:
Projeto de Algoritmos em C |
Livro Algoritmos em C
|
Algorithms Design in C |
Estruturas de Dados |
Literate Programming & CWEB |
O que é uma prova? |
Uma Introdução Sucinta à Teoria dos Grafos |
Exercícios de Teoria dos Grafos |
Graph Theory Exercises |
Digrafos |
Algoritmos em Grafos com Stanford GraphBase |
Algoritmos para Grafos via Sedgewick |
Teoria dos Grafos via Diestel |
Análise de Algoritmos |
Minicurso de Análise de Algoritmos |
Algoritmos de Programação Linear |
Otimização Combinatória |
Algoritmos de Aproximação