Planeamento

Aulas Teóricas

T01 - Apresentação e Motivação

Apresentação
Motivação
Problema da Conectividade

T02 - Problema da Conectividade

Problema da Conectividade
  • Procura rápida
  • União rápida
  • União rápida ponderada
  • União rápida ponderada com compressão de caminho

T03 - Estruturas de Dados I

Estruturas de Dados
  • Introdução a dados e algoritmos
  • Tipologia de dados
  • Organização em C das definições de dados
  • Ponteiros
  • Listas simples

T04 - Estruturas de Dados II

Estruturas de Dados
  • Tipos abstractos
  • Contentores
  • Pilhas
  • Tipos abstractos de 1ª classe

T05 - Estruturas de Dados III

Estruturas de Dados
  • Tipos abstractos de 1ª classe
  • Filas
  • Listas duplamente ligadas

T06 - Análise de Algoritmos e Complexidade I

Análise de Algoritmos e Complexidade
  • Análise de algoritmos
  • Complexidade, funções relevantes e sucessões
  • Notação assimptótica
  • Operações sobre dados

T07 - Análise de Algoritmos e Complexidade II

Análise de Algoritmos e Complexidade
  • Metodologia para determinação de complexidade
  • Recorrências básicas e Master Theorem
  • Ilustração de aplicação em procura sequencial e binária

T08 - Algoritmos de Ordenação I

Algoritmos de Ordenação
  • Introdução ao problema da ordenação
  • Ordenação por selecção - "selection sort"
  • Ordenação por inserção - " insertion sort"
  • Ordenação por "bubble" - "bubble sort"
  • Análise comparativa

T09 - Algoritmos de Ordenação II

Algoritmos de Ordenação
  • Ordenação com "shellsort"
  • Generalização para ordenação de quaisquer dados
  • Ordenação indirecta
  • Ordenação em listas

T10 - Algoritmos de Ordenação III

Algoritmos de Ordenação
  • Ordenação por "quicksort"
  • Análise do algoritmo

T11 - Algoritmos de Ordenação IV

Algoritmos de Ordenação
  • Melhoramentos no "quicksort"
  • O problema de selecção
  • Ordenação por "mergesort"

T12 - Recursividade e Árvores I

Recursividade e Árvores
  • Recursividade
  • "Divide-and-conquer"
  • Programação dinâmica

T13 - Recursividade e Árvores II

Recursividade e Árvores
  • Introdução às árvores
  • Definições de tipos e representação
  • Propriedades das árvores binárias

T14 - Recursividade e Árvores III

Recursividade e Árvores
  • Varrimentos básicos
  • Árvores e algoritmos de procura
  • Algoritmos de procura
  • Construção de árvores binárias

T15 - Recursividade e Árvores IV

Recursividade e Árvores
  • Árvores ordenadas
  • Árvores ordenadas balanceadas
  • Junção de árvores e remoção de vértices

T16 - Acervos

Acervos
  • Introdução às filas prioritárias
  • Operações abstractas
  • Reposição em acervos
  • Filas prioritárias com acervo
  • Ordenação com acervo

T17 - Tabelas de dispersão

Tabelas de dispersão
  • Introdução às tabelas de dispersão
  • Componentes
  • Funções de dispersão
  • Resolução de colisões

T18 - Algoritmos em Grafos I

Algoritmos em Grafos
  • Introdução aos grafos
  • Propriedades elementares em grafos
  • Definições e propriedades
  • Estrutura abstracta de dados para representação de grafos
    • Matriz de adjacências

T19 - Algoritmos em Grafos II

Algoritmos em Grafos
  • Representação de grafos
    • Listas de Adjacências
  • Variantes e extensões
  • Procura em grafos
    • Procura em profundidade

T20 - Algoritmos em Grafos III

Algoritmos em Grafos
  • Procura em grafos
    • Procura em largura
    • Procura generalizada
  • Árvores mínimas de suporte

T21 - Algoritmos em Grafos IV

Algoritmos em Grafos
  • Árvores mínimas de suporte
    • Algoritmo de Prim
    • Algoritmo de Kruskal
    • Algoritmo de Boruvka
  • Caminhos em grafos
    • Caminhos simples
    • Caminhos de Hamilton
    • Caminhos de Euler

T22 - Algoritmos em Grafos V

Algoritmos em Grafos
  • Representação de redes
  • Problemas de caminhos mais curtos
  • Relaxação de aresta e de caminho
  • Algoritmo de Dijkstra
  • Algoritmo de Floyd