Fundamentos de Algoritmos e Estruturas de Dados 1. Conteúdo Programático Conceitos Básicos • Algoritmos na computação. • Recorrências • Complexidade Métodos de Ordenação Estruturas de Dados • Elementares (listas, pilhas, filas) • Tabelas hash • Árvores binárias • Árvores balanceadas: AVL e vermelho-preto • Estruturas svançadas: heaps, árvores digitais, árvore PATRICIA Grafos • Algoritmos elementares • Caminhamentos • Busca de caminhos mais curtos Fluxo em Redes Cálculo do Fluxo Máximo Algoritmo de Ford-Fulkerson Tópicos avançados • Programação dinâmica • Algoritmos gulosos • Algoritmos para correspondência de cadeias • Problemas NP-completos 2. Bibliografia • Cormen, Thomas H.; Leisserson, Charles E.; Rivest, Ronald. Algoritmos: Teoria e Prática. Rio de Janeiro: Campus 2002. • Tenembaum, A. M., Langsam Y., Augenstein, M. J., Estruturas de Dados Usando C, Editora Makron Books, 1995. • Ziviani, N. Projeto de Algoritmos. Pioneira, 1986. • Pereira, S. L. Estruturas de Dados Fundamentais. Érica, 1996. • Wirth, N. Algoritmos e Estruturas de Dados. Rio de Janeiro: Prentice-Hall, 1989. • Knuth, D. E. The Art of Computer Programming, Vol I. Addison-Wesley, 1968. • Scwarcfiter, J. Grafos e Algoritmos Computacionais. Rio de Janeiro: Campus, 1988. • Terada, R. Desenvolvimento de Algoritmos e Estruturas de Dados. São Paulo: Makron Books, 1991. • Horowitz, Ellis, Fundamentos de Estruturas de Dados, Rio de Janeiro : Campus, 1987. • Lafore, Robert, Algoritmos and Data Structures in JAVA, Makron Books, 1998. • Main, Michael, Data structures & other objects using C++, Addison-Wesley, 1997. • Tremblay, Jean-Paul, An introduction to data structures with applications, 2 nd. ed., Auckland : McGraw• Hill, 1984. 3. Introdução A) Temos uma rede de dispositivos eletrônicos. Tais dispositivos estão interligados por canais de comunicação. Cada canal tem um valor associado C (número real no intervalo 0 ≤ C ≤ 1) que representa sua confiabilidade. Interpreta-se como confiabilidade a probabilidade de que o canal não venha a falhar (suponha que estas probabilidades são independentes). Forneça um algoritmo para encontrar o caminho mais confiável entre dois dispositivos dados. B) Considere uma rede de ferrovias conectando duas cidades através de um número de cidades intermediarias, onde cada ferrovia tem uma capacidade de transporte específica. Como encontrar o fluxo máximo entre as duas cidades? Questões • Como representar estes problemas? • Como construir os algoritmos necessários? • Que estrutura de dados utilizar?