Escolar Documentos
Profissional Documentos
Cultura Documentos
Objetivo
Introdução a algoritmos e estruturas de dados.
Estruturas de Dados I
Ementa
Complexidade de algoritmos e notação assintótica, Listas
lineares, simplesmente encadeadas, duplamente
Instituto Multidisciplinar encadeadas e circulares, Árvores binárias, árvores binárias
Universidade Federal Rural do Rio de Janeiro de busca, balanceadas, AVL, rubro-negras, árvores B, e
Listas de prioridades.
Árvores Notas
1. Árvores, Árvores Binárias, Algoritmos de Busca MP= P1 + P2 ( +T ) MF= OP + M2
2. Árvores Binárias de Busca 2 2
3. Árvores Balanceadas, Árvores AVL e Algoritmos
P1 = Prova 1
4. Árvores Graduadas, Árvores Rubro-Negras P2 = Prova 2
5. Árvores B e Algoritmos T = Trabalhos (Listas de Exercícios e Implementações)
MP = Média Parcial
6. Listas de Prioridades e Algoritmos
M1 = Menor Nota dentre P1 e P2
7. Heapsort M2 = Maior Nota dentre P1 e P2
OP = Prova Optativa (considerada apenas se a nota obtida for maior do que a
menor nota dentre P1 e P2)
MF = Média Final
1
Introdução Introdução
Ex.:
Algoritmo de Ordenação - Método da Inserção
Problema de Ordenação
Entrada : a1 , a2 ,L , an
Entrada : a1 , a2 , L , an (seqüência de n números) Saída : a1′ , a2′ ,L , an′
Saída : a1′ , a2′ ,L , an′ (reordenação tq a1′ ≤ a′2 ≤ L ≤ a′n )
Introdução Introdução
Instância:
7 3 4 9 2 11
Introdução Introdução
Execução: 7 3 Execução: 7 3
2
Introdução Introdução
Execução: 7 3 Execução: 7 3
3 7 3 7 4
Introdução Introdução
Execução: 7 3 Execução: 7 3
3 7 4 3 7 4
3 4 7
Introdução Introdução
Execução: 7 3 Execução: 7 3
3 7 4 3 7 4
3 4 7 9 3 4 7 9
3
Introdução Introdução
Execução: 7 3 Execução: 7 3
3 7 4 3 7 4
3 4 7 9 3 4 7 9
3 4 7 9 3 4 7 9 2
Introdução Introdução
Execução: 7 3 Execução: 7 3
3 7 4 3 7 4
3 4 7 9 3 4 7 9
3 4 7 9 2 3 4 7 9 2
2 3 4 7 9
Introdução Introdução
Execução: 7 3 Execução: 7 3
3 7 4 3 7 4
3 4 7 9 3 4 7 9
3 4 7 9 2 3 4 7 9 2
2 3 4 7 9 11 2 3 4 7 9 11
4
Introdução Complexidade de Algoritmos
Execução: 7 3 Complexidade de Tempo
+ c 4 ∑ j = 2 t j + c5 ∑ j = 2 (t j − 1) + c6 ∑ j = 2 (t j − 1) +
n n n
Neste caso, para cada j teremos que percorrer todo o array.
+ c 7 ( n − 1) T ( n) = an 2 + bn + c ( função quadrática )
Caso Médio
Análises
Frequentemente da mesma ordem do pior caso. Suponha que
Pior Caso escolhemos randomicamente n números e aplicamos o Método da
Caso Médio Inserção. Em média, tj = j / 2.
T ( n) = an + b ( função linear )
Definição
Complexidade de Espaço Uma função f (n) pertence ao conjunto Θ(g(n)) se existem
Montante de memória ou armazenamento computacional constantes positivas c1 e c2 tais que f (n) pode ser limitada
requerido por um algoritmo. inferiormente por c1 g(n) e superiormente por c2 g(n), para n
suficientemente grande.
Obs.: O armazenamento requerido para a entrada ou para a saida, em alguns casos,
não é considerado como parte da complexidade de espaço.
5
Notações Assintóticas Notações Assintóticas
Notação Θ Notação O
Definição
Θ( g ( n)) = { f ( n) : existem constantes positivas c1 , c2 , e n0 Uma função f (n) pertence ao conjunto O(g(n)) se existe uma
t ais que 0 ≤ c1 g (n) ≤ f (n) ≤ c2 g ( n) constante positiva c tal que f (n) pode ser limitada
superiormente por cg(n), para n suficientemente grande.
para todo n ≥ n0 }
O( g ( n)) = { f ( n) : existem constantes positivas c e n0
tais que 0 ≤ f (n) ≤ cg ( n) para todo n ≥ n0 }
f (n) = Θ(g(n)) ⇔ f (n) ∈ Θ(g(n))
Notação Ω Gráficos
Definição
c2 g ( n) f (n)
Uma função f (n) pertence ao conjunto Ω (g(n)) se existe uma f (n)
c g (n)
Exemplos: Limites
6
Notações Assintóticas Notações Assintóticas
(D. Mount)
Recursividade Recursividade
Definição
Algoritmo definido em termos de si próprio, possuindo: Fatorial(int n) {
if(n > 0) return n*Fatorial(n-1);
Um passo trivialmente resolvido, ou critério de parada. return 1;
Passo recursivo no qual resolvemos um subproblema do problema }
inicial.
Exs.: Fatorial
Fibonacci
Torres de Hanoi
Algoritmos de Ordenação - MergeSort e QuickSort
7
Recursividade Recursividade
}
A B C A B C A B C
Recursividade Recursividade
MergeSort MergeSort - Análise
MergeSort(Array A, int p , int r) { Teorema 1 (Master Theorem): Sejam a ≥ 1 e b > 1 constantes,
if(p < r){ seja f (n) uma função, e seja T (n) definida sobre os inteiros não
q = (p + r)/2;
negativos pela recorrência
MergeSort(A, p, q);
MergeSort(A, q+1, r); T (n) = aT (n / b) + f (n)
Merge(A, p, q, r); onde interpretamos n / b como ou n / b ou n / b . Então T (n) pode ser
} limitada assintoticamente como segue.
}
Entrada: 1. Se f ( n) = O( n log a −ε ) para alguma constante ε > 0 , então
b
3 5 6 7 8 9 10 16
[ 16, 9, 7, 5, 10, 8, 3, 6 ] T (n) = Θ(n log a ).b
9 16 5 7 8 10 3 6
af ( n / b) ≤ cf ( n ) para alguma constante c < 1 e todo n
16 9 7 5 10 8 3 6 suficientemente grande, então T (n) = Θ( f ( n)). (Cormen et al.)
Recursividade Observações