MC538 - Análise de Algoritmos II
Of.: S-5 T:04 L:00 HS:04 SL:04 C:04
Pre-Req.: MC438
Ementa:
Algoritmos algébricos e para problemas da teria de números. Estruturas de dados avançadas. Autômatos finitos. Noções básicas de computabilidade e complexidade.
Programa:
- Algoritmos algébricos e para a problemas da teoria dos números
- Algoritmos para exponenciação e exponenciação modular
- Algoritmo de Euclides para o MDC: corretude e análise de pior caso. Algoritmos de Euclides estendido
- Teste de primalidade. Algoritmo de divisões sucessivas e algoritmo porbalístico baseado no teorema de Fermat (Miller-Rabin). Aplicações de criptografia ( método RSA)
- Algoritmos para multiplicação de matrizes: algoritmos cúbico e algoritmo de Strassen
- Transformada rápida de Fourier
- Estruturas de dados avançadas
- Estruturas para união de conjuntos disjuntos e sua análise
- Árvores binárias de busca auto-ajustáveis. Análise amortizada
- Autômatos finitos
- Alfabetos, cadeias e linguagens
- Autômatos finitos determinísticos e não-determinísticos. Linguagens regulares
- Expressões regulares e gramáticas regulares
- Aplicações de autômatos finitos
- Noções básicas de computabilidade e complexidade
- Máquinas de Turing e a tese de Church-Turing
- Problemas indecidíveis. O problema da parada. Diagonalização. Como mostrar que um problema é indecidível
- A hierarquia de complexidade. As classes P e NP. Problemas completos para uma classe. O teorema de Cook ( em alto nível apenas)
- Problemas e reduções fundamentais em NP-completude
- P-espaço e NP-espaço. O teorema de Savitch
Bibliografia:
T. Cormen, C.Leiserson e R. Rivest, Introduction to Algorithms, MIT Press, 1990
M. Sipser, Introduction to the Theory of Computation. PWS, 1997