Para voltar à página raíz clique aqui.

Algoritmos e Estruturas de Dados 2

Turma A - 1s2019

Informações do Professor

Nome: Mário César San Felice
Sala: G.08 do Departamento de Computação
Email: [ meu último nome ] (at) ufscar.br

Informações do Curso

Trabalhos Práticos

Tópicos das Aulas

  1. Apresentação, estruturas de dados, tabelas de símbolos e hash tables
    Notas de aula: PDF.
    Bibliografia: Tópicos Leiaute, Documentação e Hashing do Projeto de Algoritmos (em C), Seções 12.1 e 12.2 do Algorithms Illuminated, Part 2, Tópico Tabelas de símbolos das notas de aula do prof. Paulo Feofiloff.
    Material complementar: Vídeo aulas do prof. Tim Roughgarden 12 1, 14 1.
  2. Implementação de hash tables
    Notas de aula: PDF.
    Códigos da aula: hashLista.c, hashSondagem.c.
    Bibliografia: Tópico Hashing do Projeto de Algoritmos (em C), Seções 12.3 e 12.4 do Algorithms Illuminated, Part 2, Capítulo 10 do Estruturas de Dados e Técnicas de Programação, Tópico Hashing das notas de aula do prof. Paulo Feofiloff.
    Material complementar: Slides das aulas do prof. José Coelho de Pina Junior Aula 23 e vídeo aulas do prof. Tim Roughgarden 14 2, 14 3.
  3. Vetores ordenados e árvores de busca
    Notas de aula: PDF.
    Bibliografia: Seções 11.1, 11.2 e 11.3 do Algorithms Illuminated, Part 2, Tópicos Árvores Binárias e Árvores Binárias de Busca do Projeto de Algoritmos (em C), Tópicos TSs ordenadas 1 e 2, Árvores binárias de busca 1 e 2 das notas de aula do prof. Paulo Feofiloff.
    Material complementar: Slides das aulas do prof. José Coelho de Pina Junior Aula 25 e vídeo aulas do prof. Tim Roughgarden 13 1, 13 2, 13 3.
  4. Árvores binárias de busca balanceadas e rotações
    Notas de aula: PDF.
    Bibliografia: Seções 11.3 e 11.4 do Algorithms Illuminated, Part 2.
    Material complementar: Vídeo aulas do prof. Tim Roughgarden 13 5.
  5. Árvores AVL e rubro-negra
    Notas de aula: PDF.
    Bibliografia: Seção 8.1 do Estruturas de Dados e Técnicas de Programação, Tópico BSTs rubro-negras das notas de aula do prof. Paulo Feofiloff.
    Material complementar: Vídeo aulas do prof. Tim Roughgarden 13 4, 13 6.
  6. Skip lists
    Notas de aula: PDF.
    Bibliografia: Seção 13.5 do Algorithms in C++, Parts 1-4, Tópico Números aleatórios do Projeto de Algoritmos (em C).
  7. Projeto e análise de algoritmos, segmento de soma máxima
    Notas de aula: PDF.
    Material complementar: Slides das aulas do prof. José Coelho de Pina Junior Aula 16.
  8. Ordenação por intercalação (mergesort)
    Notas e slides da aula: PDF, PDF.
    Bibliografia: Tópico Mergesort: ordenação por intercalação do Projeto de Algoritmos (em C), Seção 13.4 do Estruturas de Dados e Técnicas de Programação.
    Material complementar: Slides das aulas do prof. José Coelho de Pina Junior Aula 19 e vídeo aulas do prof. Tim Roughgarden 1 5, 1 6 e 1 7.
  9. Problema da separação e quicksort
    Notas de aula: PDF.
    Bibliografia: Tópicos Quicksort e Números aleatórios do Projeto de Algoritmos (em C), Seção 13.1 do Estruturas de Dados e Técnicas de Programação.
    Material complementar: Slides das aulas do prof. José Coelho de Pina Junior Aula 20 e vídeo aulas do prof. Tim Roughgarden 5 1, 5 2, 5 3 e 5 4.
  10. Heap e ordenação por seleção eficiente (heapsort)
    Notas de aula: PDF.
    Bibliografia: Tópico Heapsort do Projeto de Algoritmos (em C), Seção 13.3 do Estruturas de Dados e Técnicas de Programação.
    Material complementar: Slides das aulas do prof. José Coelho de Pina Junior Aula 21 e vídeo aulas do prof. Tim Roughgarden 12 2 e 12 3.
  11. Problema da seleção
    Notas de aula: PDF.
    Bibliografia: Seções 6.1 e 6.2 do Algorithms Illuminated, Part 1, Seções 9.1 e 9.2 do Introduction to Algorithms, Tópico Mediana e i-ésimo menor elemento das notas de aula do prof. Paulo Feofiloff, Tópico Números aleatórios do Projeto de Algoritmos (em C).
    Material complementar: Slides das aulas do prof. José Coelho de Pina Junior Aula 20 e vídeo aulas do prof. Tim Roughgarden 8 1 e 8 2.
  12. Problema da contagem de inversões, limitante inferior para ordenação baseada em comparações
    Notas de aula: PDF.
    Bibliografia: Seções 3.2 e 5.6 do Algorithms Illuminated, Part 1, Seção 8.1 do Introduction to Algorithms.
    Material complementar: Vídeo aulas do prof. Tim Roughgarden 3 1, 3 2 e 8 6.
  13. Ordenação por contagem (counting sort)
    Notas de aula: PDF.
    Bibliografia: Tópico Ordenação digital do Projeto de Algoritmos (em C), Seção 6.10 do Algorithms in C++, Parts 1-4, Seção 8.2 do Introduction to Algorithms.
  14. Radix sort e bucket sort
    Notas de aula: PDF.
    Bibliografia: Tópico Ordenação digital do Projeto de Algoritmos (em C), Capítulo 10 do Algorithms in C++, Parts 1-4, Seções 8.3 e 8.4 do Introduction to Algorithms.
  15. Busca de palavras em um texto, algoritmo de Boyer-Moore (bad character heuristic)
    Notas de aula: PDF.
    Bibliografia: Tópico Busca de palavras em um texto do Projeto de Algoritmos (em C).
    Material complementar: Slides das aulas do prof. José Coelho de Pina Junior Aula 22.
  16. Busca de palavras em um texto, algoritmo de Boyer-Moore (good suffix heuristic)
    Notas de aula: PDF.
    Bibliografia: Tópico Busca de palavras em um texto do Projeto de Algoritmos (em C).
    Material complementar: Slides das aulas do prof. José Coelho de Pina Junior Aula 22.
  17. Árvores de Busca Digital
    Notas de aula: PDF.
    Bibliografia: Seção 15.1 do Algorithms in C++, Parts 1-4.
  18. Tries
    Notas de aula: PDF.
    Bibliografia: Seção 15.2 do Algorithms in C++, Parts 1-4, Tópico Tries (árvores digitais) das notas de aula do prof. Paulo Feofiloff, Seção 8.3 do Estruturas de Dados e Técnicas de Programação.
    Material complementar: Slides das aulas do prof. Rafael C. S. Schouery do IC-Unicamp Busca Radix, Árvores Digitais e Tries.
  19. Grafos, implementação, construção aleatória e busca
    Notas de aula: PDF.
    Bibliografia: Tópicos Estruturas de dados para grafos, Construtores de grafos, Grafos aleatórios, Acessibilidade das notas de aula do prof. Paulo Feofiloff, Capítulo 7 e Seção 8.1 do Algorithms Illuminated, Part 2.
    Material complementar: Vídeo aulas do prof. Tim Roughgarden 9 2, 10 1.
  20. Busca em largura, cálculo de distâncias
    Notas de aula: PDF.
    Bibliografia: Tópicos Caminhos mínimos, Busca em largura (BFS), Algoritmo de caminhos mínimos das notas de aula do prof. Paulo Feofiloff, Seção 8.2 do Algorithms Illuminated, Part 2.
    Material complementar: Vídeo aulas do prof. Tim Roughgarden 10 2, 10 3.
  21. Busca em profundidade, conectividade
    Notas de aula: PDF.
    Bibliografia: Tópicos Busca em profundidade (DFS), Componentes conexas das notas de aula do prof. Paulo Feofiloff, Seções 8.4 e 8.3 do Algorithms Illuminated, Part 2.
    Material complementar: Vídeo aulas do prof. Tim Roughgarden 10 5, 10 4.
  22. Ordenação topológica, DFS, DAGs aleatórios
    Notas de aula: PDF.
    Bibliografia: Tópicos Florestas DFS, Ciclos versus dags, DFS e pós-ordem das notas de aula do prof. Paulo Feofiloff, Seção 8.5 do Algorithms Illuminated, Part 2.
    Material complementar: Vídeo aulas do prof. Tim Roughgarden 10 6.
  23. Componentes fortemente conexos, algoritmo de Kosaraju
    Notas de aula: PDF.
    Bibliografia: Tópicos Componentes fortes, Algoritmo de Kosaraju para componentes fortes, Seção 8.6 do Algorithms Illuminated, Part 2.
    Material complementar: Vídeo aulas do prof. Tim Roughgarden 10 7, 10 8.
  24. Caminhos mínimos ponderados, DAGs e grafos sem custos negativos, algoritmo de Dijkstra
    Notas de aula: PDF.
    Bibliografia: Tópicos Caminhos mínimos sob custos positivos, Caminhos de custo mínimo em dags, Algoritmo de Dijkstra, Seção 4.7 do Algorithms, Seções 9.1 e 9.2 do Algorithms Illuminated, Part 2.
    Material complementar: Vídeo aulas do prof. Tim Roughgarden 11 1, 11 2.
  25. Caminhos mínimos ponderados, grafos sem custos negativos e algoritmo de Dijkstra
    Notas de aula: PDF.
    Bibliografia: Tópico Algoritmo de Dijkstra, Seções 9.3, 9.4, 10.4 e 10.5 do Algorithms Illuminated, Part 2.
    Material complementar: Vídeo aulas do prof. Tim Roughgarden 11 3, 11 4, 12 2.

Listas de Exercícios

  1. Tabelas hash: PDF.
  2. Árvores binárias de busca: PDF.
  3. Árvores AVL e rubro-negras: PDF.
  4. Ordenação: PDF.
  5. Ordenação digital, busca de palavras, tries: PDF.
  6. Representação de grafos, busca em largura: PDF.
  7. Busca em profundidade: PDF.
  8. Caminhos mínimos e Dijkstra: PDF.

Bibliografia e materiais recomendados


Last Update: 05/05/2021 16:49