MC548 – Projeto e Análise de Algoritmos II
Pré-Req: MA327 MC448
Ementa
Redução entre problemas. Complexidade computacional. Classes de problemas. Problemas NP-completos. Tratamento de Problemas NP-difíceis.
Programa
Conteúdo
Tópicos de cobertura obrigatória:
1. Reduções entre problemas
- Para obtenção de cotas superiores
- Para obtenção de cotas inferiores
2. Programação Linear
- Formulação de problemas como PLs, enfatizando que isso é redução
- Apresentação resumida do algoritmo SIMPLEX e de sua complexidade.
Citar que PL pode ser resolvido em tempo polinomial usando os algoritmos de pontos interiores.
- Dualidade em programação linear
3. Classes de Problemas
- A hierarquia de Complexidade. As classes P, NP, NP-completo e NP-difícil
- A noção de completude e o Teorema de Cook (em alto nível apenas)
- Problemas e reduções fundamentais em NP-completude
- Resumir outras classes, além de NP: co-NP, PSPACE, problemas indecidíveis (dar o problema da PARADA em alto nível)
4. Tratamento de Problemas NP-difíceis
- Algoritmos exatos:
* os algoritmos pseudo-polinomiais para o problema da mochila (tanto o que tem complexidade em função da capacidade da mochila quanto o que tem complexidade como função dos custos dos itens)
* algoritmos de backtracking para enumeração de todas as soluções de um problema.
Sugestões de exemplos:
coloração de grafos e sum of subsets
* algoritmos de branch-and-bound: exemplo do problema da mochila.
* Programação Linear Inteira como uma ferramenta para resolver problemas NP-difíceis: conceitos básicos de modelagem em PLI, incluindo uso de variáveis binárias e explicação resumida do método de resolução usando PL e branch-and-bound
- Algoritmos aproximados:
* Definições básicas: aproximação absoluta, fator de aproximação.
* Aproximação Absoluta.
Sugestões (pelo menos 1 exemplo): armazenagem de arquivos em 2 discos e coloração de grafos planares.
Inaproximabilidade em aproximação absoluta (pelo menos 1 exemplo): Sugestão: Problema da Mochila e Clique.
* Fator de aproximação.
Sugestões de exemplos (pelo menos 2 exemplos, sendo 1 deles com fator não constante): Cobertura de Vértices,
TSP métrico, Cobertura por Conjuntos (guloso), Escalonamento de Tarefas, bin packing
Inaproximabilidade em fator de aproximação. Sugestão: TSP genérico.
* Esquemas de aproximação polinomial. Sugestões: Problema da Mochila usando Programação Dinâmica
* Uso de PL no desenvolvimento de algoritmos aproximados. Sugestões: Cobertura de Vértices, Cobertura por Conjuntos, Max-Sat
- Algoritmos heurísticos:
* Definições básicas: algoritmos construtivos e algoritmos de busca local
* Algoritmos construtivos gulosos: mostrar exemplos (a escolha do docente) e caso onde é arbitrariamente ruim (exemplo, cobertura de vértices)
* Algoritmos de busca local: mostrar exemplos (a escolha do docente). Sugestões:
2-opt (ou duas trocas) para o TSP, troca simples para corte máximo.
* Meta-heurísticas: definir o conceito e dar exemplos a escolha do docente.
Sugestões: Pelo menos 2 dentre GRASP, Tabu Search, Simulated Annealing, Algoritmos Genéticos.
- Projeto computacional: pequeno ou médio porte, comparando pelo menos 2 técnicas dentre algoritmos exatos, aproximados e heurísticos para um problema NP-difícil a escolha do docente.
Tópicos opcionais à escolha do docente:
- Reduções e complexidade de Memória: o Teorema de Savitch (em alto nível)
- Relaxações lagrangeanas
- Programação por Restrições
- Outros Tópicos em Busca Local: Equilíbrio de Nash, Aproximação
Bibliografia
1. T. Cormen, C. Leiserson, R. Rivest, C. Stein, Algoritmos - Teoria e Prática (tradução da 2ª Ed. Americana), Ed. Campus (2002).
2. J. Kleinberg e E. Tardos, Algorithm Design, Addison Wesley, (2005).
3. U. Manber, Algorithms: A Creative Approach, Addison-Wesley (1989).
4. C. H. Papadimitriou e K. Steiglitz, Combinatorial Optimization: Algorithms and Complexity, Prentice-Hall, Inc. (1982).
5. E. Horowitz e S. Sahni, Fundamentals of Computer Algorithms, Computer Science Press, 1978.
6. H.R. Lewis e C.H. Papadimitriou, Elementos de Teoria da Computação, Bookman. 2a edição (2000).
7. M. Garey e D. Johnson, Computers and Intractability: a Guide to the Theory of NP-Completeness. Freeman (1979).
