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