U NIVERSIDADE F EDERAL DE U BERL ÂNDIA FACULDADE DE C OMPUTAÇ ÃO BACHARELADO EM S ISTEMAS DE I NFORMAÇ ÃO P LANO DE D ISCIPLINA D ISCIPLINA: Estrutura de Dados 2 ( X ) S EMESTRAL - ( ) A NUAL C ÓDIGO: GSI011 P ER ÍODO: 3o Perı́odo C ARGA H OR ÁRIA: 72 horas-aula / semestre, 4 ( X )O BRIGAT ÓRIA - ( ) O PTATIVA horas-aula / semana - teóricas P R É - REQUISITOS: não há C Ó -R EQUISITOS: não há P ROFESSOR: Marcelo Keese Albertini U NIDADE ACAD ÊMICA: Faculdade de Computação - FACOM C URSO: Graduação em Sistemas de Informação E MENTA R ESUMIDA 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. J USTIFICATIVA 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. O BJETIVOS O BJETIVO GERAL Capacitar o aluno a desenvolver soluções computacionais eficientes para problemas que necessitam de algoritmos e/ou estruturas de dados avançadas. O BJETIVOS 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. P ROGRAMA DA D ISCIPLINA 0. Introdução; Algoritmos, Tipo abstrato de dados 1. Princı́pios de Análise de Algoritmos • Análise empı́rica; Análise Matemática; Análise Assintótica; Notação O 2. Recursão • Algoritmos recursivos; Programação dinâmica 3. Ordenação • Seleção; Inserção; Bolha; Shellsort; Mergesort; Quicksort 4. Grafos • Terminologia; Matriz de adjacências; Listas de adjacências; Caminho de Euler e de Hamilton; Busca em Profundidade e em largura; 5. Árvores • 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 M ETODOLOGIA • 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 B IBLIOGRAFIA B IBLIOGRAFIA B ÁSICA • 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 B IBLIOGRAFIA C OMPLEMENTAR • 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 / / .