MO417 - Tópicos

Criada: 2003-02-15
Modificada: 2003-03-03
Modificada: 2003-03-09
Modificada: 2003-05-18
Getting Started Exercícios
sorting problem
insertion sort
loop invariants
modelo RAM
análise: custo e número de vezes que cada linha é executada
pior caso e caso médio
razão de crescimento
divisão e conquista: merge sort
recorrência do merge sort
2.1-3
2.2-2
2.3-7

Growth of Functions Exercícios
notação Θ
notação O
notação Ω
notação assintótica em igualdades
notação o
notação ω
comparação de funções
seção 3.2: o que é novidade para você?
3-2
3-3
3-4
 
Recurrences
Exercícios
Tecnicalidades: condições de contorno, restringir a potências de 2
Método da substituição
Subtraindo termos menores
Cuidados com a notação O
Troca de variáveis
Árvores de recursão
Master: quando a=b
4-4 a.
4-4 f.
4-4 i.

Heapsort
Exercícios
Heaps: min heap, max heap
Max-Heapify
Build-Max-Heap
HeapSort e seu invariante
Heap-Maximum, Heap-Extract-Max
Heap-Increase-Key, Max-Heap-Insert
6.5-7
6.4-3


Quicksort
Exercícios
Quicksort, Partition
Pior partição
Melhor partição
Partição balanceada
7.1-2
7.1-3
7-3

Sorting in Linear Time
Exercícios
Lower bounds - Teo. 8.1
Counting sort
Radix sort
Bucket sort
8.3-4
8.4-2
8-2

Medians and Other Statistics
Exercícios
Min e Max
Seleção do i-ésimo em tempo esperado linear
Seleção do i-ésimo em tempo linear
9.1-1
9.3-1
9-1

Programação Dinâmica 1
Exercícios
Linha de montagem
Etapa 1: estrutura da solução ótima
Propriedade da subestrutura ótima
Etapa 2: solução recursiva
Etapa 3: cálculo do custo ótimo
Etapa 4: construção de solução ótima
Multiplicação de cadeias de matrizes
(As quatro etapas para este problema)
15.1-1
15.2-1
15.2-3

Programação Dinâmica 2
Exercícios
Elementos da programação dinâmica
Subestrutura ótima
Sutilezas: o problema do caminho mais longo
Número total de subproblemas a resolver
Subseqüência comum mais longa
(As quatro etapas para este problema)
Árvore de busca ótima
(As quatro etapas para este problema)
15.3-5
15.4-1
15.5-2

Algoritmos Gulosos 1
Exercícios
Seleção de atividades
Teorema 16.1
Algoritmo guloso interativo
Elementos da estratégia gulosa
Escolha gulosa
Subestrutura ótima
Estratégia gulosa vs. programação dinâmica
mochila 0-1 vs. mochila fracionária
16.1-4
16.2-2
16.2-3
16.2-5
16.2-7

Algoritmos Gulosos 2
Exercícios
Códigos de Huffman
16.3-2

Heaps Binomiais e de Fibonacci
Exercícios
Tabela da Figura 19.1
Árvores binomiais (desenhar algumas)
Definição de heap binomial
União de heaps binomiais
Definiçao de heaps de Fibonacci
19.1-2
19.2-3
20.2-1

Conjuntos Disjuntos Exercícios
Operações Make-Set, Union, Find-Set
Aplicação: componentes conexos
(Pular a implementação com listas)
Florestas de conjuntos disjuntos
União por ordem (ou posto)
Compressão de caminhos
Make-Set, Union, Link, Find-Set
Tempo de execução: função alpha
21.3-1
21.3-2
21.3-3

Grafos 1
Exercícios
Listas de adjacência
Matriz de adjacência
Buscas em largura
Caminhos mais curtos
Árvores produzidas por buscas em largura
22.1-6
22.2-6
22.2-7

Grafos 2
Exercícios
Buscas em profundidade
Árvores produzidas por buscas em profundidade
Ordenação topológica
22.3-2
22.4-2
22.4-3

Árvores espalhadas mínimas
Exercícios
Definição de árvore espalhada mínima
Como aumentá-la: cortes
Algoritmo de Kruskal
Algoritmo de Prim
23.2-3
23.2-4
23.2-8
(tome V1 e V2 conexos)

Caminhos mais curtos - fonte única 1
Exercícios
Definição de caminho mais curto entre dois vértices
Subestrutura ótima
Arestas e ciclos de peso negativo
Ciclos em caminhos mais curtos
Algoritmo de Bellman-Ford
24.1-3
24.1-4
24-1 (c)
( assuma (a) e (b) )

Caminhos mais curtos - fonte única 2
Exercícios
Solução para grafos orientados acíclicos
Algoritmo de Dijkstra
Implementação de Dijkstra em O(V2)
Implementação de Dijkstra em O(E log V)
Implementação de Dijkstra em O(E + V log V)
24.2-3
24.3-6
24.3-7

Caminhos mais curtos - todos os pares
Exercícios
Estrutura de um caminho mais curto (subestrutura ótima)
Fórmula recursiva
Solução usando multiplicação de matrizes, mas com "+" e "*" trocados por "min" e "+"
Elevação ao quadrado repetida
Algorithmo de Floyd-Warshall
Fecho transitivo
25.1-9
25.2-4
25.3-3

Fluxo máximo 1
Exercícios
Redes de fluxo
Fluxo, valor, fluxo máximo
Método de Ford-Fulkerson
Redes residuais, caminhos aumentantes
Corte, capacidade do corte
Exemplo da Fig. 26.4
26.2-1
26.2-3
26.2-8

Fluxo máximo 2 Exercícios
Algoritmo básico de Ford-Fulkerson, O(E |f*| )
Algoritmo de Edmonds-Karp, O(V E2)
Emparelhamento bipartido máximo
26.3-1
26-4

NP completude 1
Exercícios
Problemas NP: complexidade desconhecida, geralmente entre polinomial e exponencial
Exemplo de pares de problemas "próximos" sendo um polinomial e o outro NP completo
Porque é importante conhecer pelo menos os rudimentos da teoria de NP completude
Problemas de decisão e problemas de otimização
O adjetivo "NP completo" aplica-se a que tipo de problema diretamente?
Problemas, codificações, linguagens
34.1-2
34.1-4
34.1-5

NP completude 2
Exercícios
Algoritmos de verificação: exemplos
Classes NP e co-NP
Redutibilidade: algoritmo de redução, função de redução, linguagem redutível a outra
A classe NPC (linguagens NP completas)
Um problema NP completo: satisfatibilidade de circuitos, CIRCUIT-SAT
Redução de CIRCUIT-SAT a SAT
34.2-1
34.2-3
34.2-8
34-3 (c), (d), (e), (f)


O(n)

© 2003 João Meidanis