UNIVERSIDADE FEDERAL DE UBERLÂNDIA FACULDADE DE COMPUTAÇÃO BACHARELADO EM SISTEMAS DE INFORMAÇÃO PLANO DE DISCIPLINA DISCIPLINA: Estrutura de Dados 2 ( X ) SEMESTRAL - ( ) ANUAL CÓDIGO: GSI011 PERÍODO: 3 o Período CARGA HORÁRIA: 72 horas-aula / semestre, 4 ( X )OBRIGATÓRIA - ( ) OPTATIVA horas-aula / semana - teóricas PRÉ-REQUISITOS: não há CÓ-REQUISITOS: não há PROFESSOR: Marcelo Keese Albertini UNIDADE ACADÊMICA: Faculdade de Computação - FACOM CURSO: Graduação em Sistemas de Informação EMENTA RESUMIDA Recursividade; Programação Dinâmica; Princípios de Análise de Algoritmos: Análise Empírica, Análise Matemática, Análise Assintótica, Notação O; Ordenação; Grafos; Árvores; Busca; Árvore de Busca Binária (ABB), Balanceamento de ABB, Hashing. JUSTIFICATIVA Muitos problemas de alta complexidade computacional são constituídos por sub-problemas básicos relacionados à organização, ordenação e busca de dados. O estudo de estruturas de dados permite a compreensão desses problemas básicos de forma sistematizada, viabilizando a solução de problemas de alta complexidade. OBJETIVOS OBJETIVO GERAL Capacitar o aluno a desenvolver soluções computacionais eficientes para problemas que necessitam de algoritmos e/ou estruturas de dados avançadas. OBJETIVOS ESPECÍFICOS Discutir o custo computacional de algoritmos. Utilizar adequadamente solução iterativa e recursiva. Aplicar apropriadamente solução para problemas de busca. Aplicar apropriadamente solução para problemas de ordenação. Utilizar árvores e grafos.
0. Introdução; Algoritmos, Tipo abstrato de dados 1. Princípios de Análise de Algoritmos 2. Recursão PROGRAMA DA DISCIPLINA Análise empírica; Análise Matemática; Análise Assintótica; Notação O Algoritmos recursivos; Programação dinâmica 3. Ordenação 4. Grafos 5. Árvores Seleção; Inserção; Bolha; Shellsort; Mergesort; Quicksort Terminologia; Matriz de adjacências; Listas de adjacências; Caminho de Euler e de Hamilton; Busca em Profundidade e em largura; Tipos de árvores; Árvore binária 6. Algoritmos de Busca Busca em texto; busca linear; busca binária 7. Árvore de busca binária (ABB) Balanceamento de árvore de busca binária 8. Hashing 9. Coleta de lixo (garbage collection) 2
Aula 1. 22/10/2013 - Apresentação da disciplina; Algoritmos; Tipo Abstrato de dados; Aula 2. 24/10/2013 - Prática Aula 3. 29/10/2013 - Recursividade. Programação dinâmica. Aula 4. 31/10/2013 - Prática Aula 5. 05/11/2013 - Análise de algoritmos: porque analisar algoritmos; tempo e espaço. Abordagem Empírica. Abordagem Matemática. Aula 6. 07/11/2013 - Prática Aula 7. 12/11/2013 - Análise de algoritmos: porque analisar algoritmos; tempo e espaço. Abordagem Empírica. Abordagem Matemática. Aula 8. 14/11/2013 - Prática Aula 9. 19/11/2013 - Ordenação - introdução. Algoritmos básicos: Bolha, Inserção, Seleção e Shellsort. Custo e Contexto. Aula 10. 21/11/2013 - Prática Aula 11. 26/11/2013 - Quicksort Aula 12. 28/11/2013 - Prática Aula 13. 03/12/2013 - Mergesort Aula 14. 05/12/2013 - Prática Aula 15. 10/12/2013 - Prova 1: análise de algoritmos e ordenação Aula 16. 12/12/2013 - Busca em Árvore Binária de Busca (ABB): definição, algoritmos e custo Aula 17. 17/12/2013 - Prática Aula 18. 19/12/2013 - Busca em ABB: Heap e AVL Aula 19. 07/01/2014 - Prática Aula 20. 09/01/2014 - Busca: texto. Ingênuo e Automato. Custo dos algoritmos Aula 21. 14/01/2014 - Prática Aula 22. 16/01/2014 - Busca e árvores: revisão e exercícios Aula 23. 21/01/2014 - Prática Aula 24. 23/01/2014 - Hash: definição e funções de espalhamento; tratamento de colisão Aula 25. 28/01/2014 - Prática Aula 26. 30/01/2014 - Coleta de lixo (garbage collector) Aula 27. 04/02/2014 - Prova 2: busca Aula 28. 06/02/2014 - Grafos: O que é um grafo. Definição formal. Aplicações Aula 29. 11/02/2014 - Prática Aula 30. 13/02/2014 - Grafos: definições importantes. Tipo abstrato de dados: operações Aula 31. 18/02/2014 - Prática Aula 32. 20/02/2014 - Grafos: representações: matriz de adjacência Aula 33. 25/02/2014 - Prática Aula 34. 27/02/2014 - Grafos: representações: lista de adjacência Aula 35. 06/03/2014 - Prática Aula 36. 11/03/2014 - Grafos: caminhos em grafos: largura e profundidade Aula 37. 13/03/2014 - Prova 3: árvores balanceadas e grafos 3
METODOLOGIA O conteúdo será apresentado na forma expositiva. Os conceitos serão explorados em listas de exercícios. O aprendizado será estimulado em projetos de implementação de sistemas. O aprendizado será avaliado através de provas, trabalhos práticos e exercícios conceituais. AVALIAÇÃO A avaliação do conhecimento será feita da seguinte forma: 3 provas teóricas, somando 80 pontos 1a. prova: 28/11/2013, valendo 25 pontos 2a. prova: 23/01/2013, valendo 25 pontos 3a. prova: 11/03/2013, valendo 30 pontos 3 trabalhos, somando 20 pontos ATENDIMENTO Atendimento com o professor em horário agendado e correio eletrônico. 4
BIBLIOGRAFIA BÁSICA BIBLIOGRAFIA Cormen, Thomas H. et. al. Algoritmos: Teoria e Prática. Editora Campus, 2002. Aho, A.V & Ullman, J.D. & Hopcroft, J.E. Data Structures and Algorithms. 3a edição, Editora Addison Wesley Sedgewick, R. Algorithms in C, Parts 1-4: Data Structures, Sorting, Searching. 3a edição, Editora Addison-Wesley BIBLIOGRAFIA COMPLEMENTAR Ziviani, N. Projeto de Algoritmos. 2a edição, Editora Thomson Tenenbaum, A.M. & Langsam, Y. & Augenstein, M.J. Estrutura de Dados Usando C. Editora Pearson (Makron Books) Entregue em / /. Assinatura do Professor Aprovado pelo colegiado do curso em / /. Assinatura do Coordenador 5