Algoritmos e Estruturas de Dados Apresentação do Curso Setembro/2005
Professora: Liliane Rose Benning Salgado. Equipe de apoio (monitores): Eliaquim Lima Sá Neto Igor Cavalcanti Ramos José Francisco Pereira Marcondes Junior Nitai Bezerra da Silva Tiago Lins Falcão Página da disciplina:
Conteúdo Programático Array e listas. Disciplinas de Pilha e Fila. Árvores de Busca Binária. Árvores AVL. Rotações simples e dupla. Árvores 2-3 e Árvores-B. Criação de Heaps. Inserção e Remoção. Hashing
Conteúdo Programático (continuação) Conjuntos Algoritmos de ordenação: mergesort, quicksort, heapsort. Algortimos em grafos. Programação Dinâmica. Backtracking.
Referências Baase, S. and Gelder, A. V. "Computer Algorithms - Introduction to Design and Analysis", Third Edition, Addison-Wesley, Manber, U. "Introduction to Algorithms: A Creative Approach", Addison-Wesley, Cormen, T. H.; Leiserson, C. E.; Rivest, R. L. and Stein, C. “Introduction to Algorithms”- Second Edition, MIT Press, Szwarcfiter, J. L. and Markenzon, L. “Estruturas de Dados e seus Algoritmos” – Segunda Edição Revista, LTC, Robert Sedgewick, "Algorithms in C", Third Edition, Addison-Wesley, Mark Allen Weiss, "Data Structures and Algorithm Analysis in Java", Peachpit Press, 1998.
Estruturação da Informação Qualquer área da computação: algoritmos + estruturas de dados Definição (algoritmo): processo sistemático para a resolução de um problema. Aspectos Básicos 1.Correção: consiste em verificar a exatidão do método, o que é realizado através de uma prova matemática. 2.Análise: visa à obtenção de parâmetros que possam avaliar a eficiência do algoritmo em termos do tempo de exe- cução e memória ocupada.
Entrada: informações inicialmente conhecidas e que permitem encontrar a solução do problema. Saída: resultado do problema a partir de uma entrada. EntradaSaída Manipulação de Dados Definição 2 (algoritmo): procedimento que transforma dados em informação.
Desenvolvimento de Programas (etapas constituintes) 1.Especificação do problema: entendimento das relações existentes entre os dados que são relevantes para o problema (estruturação lógica). 2. Projeto em alto nível: que transformações serão efetuadas no algoritmo para resolver o problema. 3. Análise de alternativas. 4. Refinamento e codificação: refinar o item 2 em termos dos mecanismos disponíveis na linguagem em que o programa será codificado.
5. Verificação de Comportamento: avaliar o programa obtido para vermos se satisfaz as especificações do problema e quanto ao desempenho (tempo e memória), modoficando-o se for o ca- so. Três pontos importantes 1.Estruturas de Dados – retrata as relações lógicas entre os dados (como um modelo matemático para a realidade do Problema). 2.Operações – manipulam estas estruturas de dados e as transformam.
3. Estrutura de representação – precisamos armazenar os dados na memória do computador através de uma estrutura de representação. Programa: representação de um algoritmo que manipula representações de dados. Conclusão Escolha de estruturas de dados, suas operações (algoritmos) e representações podem ser fatores decisivos na eficiência do programa final.