Академический Документы
Профессиональный Документы
Культура Документы
Outline
1 Complexidade assintótica
Outline
1 Complexidade assintótica
Notações: O, Ω, Θ e o
Outline
1 Complexidade assintótica
Notações: O, Ω, Θ e o
Anáise caso-a-caso
Outline
1 Complexidade assintótica
Notações: O, Ω, Θ e o
Anáise caso-a-caso
Padrões de crescimento de funções
Outline
1 Complexidade assintótica
Notações: O, Ω, Θ e o
Anáise caso-a-caso
Padrões de crescimento de funções
2 Algoritmos recursivos
Outline
1 Complexidade assintótica
Notações: O, Ω, Θ e o
Anáise caso-a-caso
Padrões de crescimento de funções
2 Algoritmos recursivos
Funções de recorrência
Outline
1 Complexidade assintótica
Notações: O, Ω, Θ e o
Anáise caso-a-caso
Padrões de crescimento de funções
2 Algoritmos recursivos
Funções de recorrência
Algoritmos em árvore e dividir-para-conquistar
Complexidade assintótica
Algoritmo 1 Remover (vetor v , tamanho n, inteiro i)
j←0
while j < n do
if v[j] = i then
v[j] ← v[n-1]
n←n-1
return
end if
j←j+1
end while
Complexidade assintótica
300
(3n+2) t
250
6t
200
150
100
50
0
0 20 40 60 80 100
n
Complexidade assintótica
50000
5n2 + 700
6n2
3n2 + 3000
30000
10000
0
0 20 40 60 80 100
n
Complexidade assintótica
n3
8e+05
5n2 + 700
6n2
3n2 + 3000
4e+05
0e+00
0 20 40 60 80 100
n
Complexidade assintótica
2n
?
n3
382 anos
n2
n
logn
20m
0.00012s
0
1 2 5 10 20 50 100
n
Notação O (limite superior)
50000
5n2 + 10
6n2
2n2logn
30000
10000
0
0 20 40 60 80 100
3n2 + 5
25000
2n2
15000
5000
0
0 20 40 60 80 100
3n2 + 5
25000
2n2
4n2
15000
5000
0
0 20 40 60 80 100
Melhor caso:
Laço interno: 0
Insertion sort
Algoritmo 2 insertionSort (vetor v , tamanho n)
i←1
while i < n do
atual ← v[i]
j ← i-1
while (j ≥ 0) e (atual < v[j]) do
v[j+1] = v[j]
j←j-1
end while
v[j+1] ← atual
i←i+1
end while
Insertion sort
Melhor caso:
Laço interno: 0
Laço externo: 7(n − 1) = 7n − 7
Insertion sort
Algoritmo 2 insertionSort (vetor v , tamanho n)
i←1
while i < n do
atual ← v[i]
j ← i-1
while (j ≥ 0) e (atual < v[j]) do
v[j+1] = v[j]
j←j-1
end while
v[j+1] ← atual
i←i+1
end while
Insertion sort
Melhor caso:
Laço interno: 0
Laço externo: 7(n − 1) = 7n − 7
Demais operações: 2
Insertion sort
Melhor caso:
Laço interno: 0
Laço externo: 7(n − 1) = 7n − 7
Demais operações: 2
tmelhor (n) = 7n − 5
Insertion sort
Melhor caso:
Laço interno: 0
Laço externo: 7(n − 1) = 7n − 7
Demais operações: 2
tmelhor (n) = 7n − 5
tmelhor ∈ O(n)
Insertion sort
Melhor caso:
Laço interno: 0
Laço externo: 7(n − 1) = 7n − 7
Demais operações: 2
tmelhor (n) = 7n − 5
tmelhor ∈ O(n)
tmelhor ∈ Ω(n)
Insertion sort
Melhor caso:
Laço interno: 0
Laço externo: 7(n − 1) = 7n − 7
Demais operações: 2
tmelhor (n) = 7n − 5
tmelhor ∈ O(n)
tmelhor ∈ Ω(n)
⇒ tmelhor ∈ Θ(n) → Complexidade linear
Insertion sort
Algoritmo 2 insertionSort (vetor v , tamanho n)
i←1
while i < n do
atual ← v[i]
j ← i-1
while (j ≥ 0) e (atual < v[j]) do
v[j+1] = v[j]
j←j-1
end while
v[j+1] ← atual
i←i+1
end while
Insertion sort
Pior caso:
Laço interno: 4( n(n−1)
2 ) = 2(n2 − n) = 2n2 − 2n
Insertion sort
Algoritmo 2 insertionSort (vetor v , tamanho n)
i←1
while i < n do
atual ← v[i]
j ← i-1
while (j ≥ 0) e (atual < v[j]) do
v[j+1] = v[j]
j←j-1
end while
v[j+1] ← atual
i←i+1
end while
Insertion sort
Pior caso:
Laço interno: 2n2 − 2n
Laço externo: 6(n − 1) = 6n − 6
Insertion sort
Algoritmo 2 insertionSort (vetor v , tamanho n)
i←1
while i < n do
atual ← v[i]
j ← i-1
while (j ≥ 0) e (atual < v[j]) do
v[j+1] = v[j]
j←j-1
end while
v[j+1] ← atual
i←i+1
end while
Insertion sort
Pior caso:
Laço interno: 2n2 − 2n
Laço externo: 6n − 6
Demais operações: 2
Insertion sort
Pior caso:
Laço interno: 2n2 − 2n
Laço externo: 6n − 6
Demais operações: 2
Melhor caso:
Laço interno: 3( n(n−1)
2 ) = 32 n2 − 32 n
Selection sort
Algoritmo 3 selectionSort (vetor v , tamanho n)
i←0
while i < n - 1 do
min ← 0; j ← 1
while j < n − i do
if v[j] < v[min] then
min ← j
end if
j←j-1
end while
swap(v[min], v[n - i -1])
end while
Selection sort
Melhor caso:
3 2
Laço interno: 2n − 23 n
Laço externo: 7(n − 1) = 7n − 7
Selection sort
Algoritmo 3 selectionSort (vetor v , tamanho n)
i←0
while i < n - 1 do
min ← 0; j ← 1
while j < n − i do
if v[j] < v[min] then
min ← j
end if
j←j-1
end while
swap(v[min], v[n - i -1])
end while
Selection sort
Melhor caso:
3 2
Laço interno: 2n − 23 n
Laço externo: 7n − 7
Demais operações: 2
Selection sort
Melhor caso:
3 2
Laço interno: 2n − 23 n
Laço externo: 7n − 7
Demais operações: 2
3n2 11n
tmelhor (n) = 2 + 2 −5
Selection sort
Melhor caso:
3 2
Laço interno: 2n − 23 n
Laço externo: 7n − 7
Demais operações: 2
3n2 11n
tmelhor (n) = 2 + 2 −5
tmelhor ∈ O(n2 )
Selection sort
Melhor caso:
3 2
Laço interno: 2n − 23 n
Laço externo: 7n − 7
Demais operações: 2
3n2 11n
tmelhor (n) = 2 + 2 −5
tmelhor ∈ O(n2 )
tmelhor ∈ Ω(n2 )
Selection sort
Melhor caso:
3 2
Laço interno: 2n − 23 n
Laço externo: 7n − 7
Demais operações: 2
3n2 11n
tmelhor (n) = 2 + 2 −5
tmelhor ∈ O(n2 )
tmelhor ∈ Ω(n2 )
⇒ tmelhor ∈ Θ(n2 ) → Complexidade quadrática
Selection sort
Algoritmo 3 selectionSort (vetor v , tamanho n)
i←0
while i < n - 1 do
min ← 0; j ← 1
while j < n − i do
if v[j] < v[min] then
min ← j
end if
j←j-1
end while
swap(v[min], v[n - i -1])
end while
Selection sort
Pior caso:
Laço interno: 4( n(n−1)
2 ) = 2n2 − 2n
Selection sort
Pior caso:
Laço interno: 2n2 − 2n
Laço externo: 7(n − 1) = 7n − 7
Demais operações: 2
Selection sort
Pior caso:
Laço interno: 2n2 − 2n
Laço externo: 7(n − 1) = 7n − 7
Demais operações: 2
Função Ordem
1 Constante
log n Logarı́tmica
n Linear
n2 Quadrática
n3 Cúbica
n
2 Exponencial
n! Fatorial
Padrões de crescimento
2n
?
n3
382 anos
n2
n
logn
20m
0.00012s
0
1 2 5 10 20 50 100
n
Recorrências
(
t1 , n=0
T (n) = (1)
T (n − 1) + t2 , n>0
Método iterativo
T (n) = T (n − 1) + t2
Método iterativo
T (n) = T (n − 1) + t2
T (n) = T (n − 2) + t2 + t2 = T (n − 2) + 2t2
Método iterativo
T (n) = T (n − 1) + t2
T (n) = T (n − 2) + t2 + t2 = T (n − 2) + 2t2
T (n) = T (n − 1) + t2
T (n) = T (n − 2) + t2 + t2 = T (n − 2) + 2t2
T (n) = T (n − k) + k t2
Método iterativo
T (n) = T (n − 1) + t2
T (n) = T (n − 2) + t2 + t2 = T (n − 2) + 2t2
T (n) = T (n − k) + k t2
Fazendo k = n:
Método iterativo
T (n) = T (n − 1) + t2
T (n) = T (n − 2) + t2 + t2 = T (n − 2) + 2t2
T (n) = T (n − k) + k t2
Fazendo k = n:
T (n) = T (0) + n t2 = t1 + n t2
Merge sort
(
3, n<2
T (n) = (2)
2 + 2T ( n2 ) + tmerge , n≥2
Algoritmo 6 merge(vetor v , ı́ndices hleft, righti)
n ← right - left; k ← 0
i ← left; j ← i + bn/2c
while i < left + bn/2c or j < right do
if v[i] < v[k] then
aux[k] ← v[i]; i ← i + 1
else
aux[k] ← v[j]; j ← j + 1
end if
end while
i ← left; j ← 0
while i < right do
v[i] ← aux[j]; i ← i + 1; j ← j + 1
end while
Procedimento merge
tmerge (n) = 8n + 8
Procedimento merge
Melhor e pior casos:
Laço interno: 4n
Laço externo: 4n
Demais operações: 8
tmerge (n) = 8n + 8
tmerge ∈ O(n)
Procedimento merge
Melhor e pior casos:
Laço interno: 4n
Laço externo: 4n
Demais operações: 8
tmerge (n) = 8n + 8
tmerge ∈ O(n)
tmerge ∈ Ω(n)
Procedimento merge
Melhor e pior casos:
Laço interno: 4n
Laço externo: 4n
Demais operações: 8
tmerge (n) = 8n + 8
tmerge ∈ O(n)
tmerge ∈ Ω(n)
⇒ tmerge ∈ Θ(n) → Complexidade linear
Merge sort
(
3, n<2
T (n) = (3)
2 + 2T ( n2 ) + tmerge , n≥2
Merge sort
(
3, n<2
T (n) = n
(4)
2 + 2T ( 2 ) + n, n ≥ 2
Merge sort
T (n) = 2T ( n2 ) + n
Merge sort
T (n) = 2T ( n2 ) + n
T (n) = 2(2T ( n4 ) + n2 ) + n = 4T ( n4 ) + 2n
Merge sort
T (n) = 2T ( n2 ) + n
T (n) = 2(2T ( n4 ) + n2 ) + n = 4T ( n4 ) + 2n
T (n) = 4(2T ( n8 ) + n4 ) + 2n = 8T ( n8 ) + 3n
Merge sort
T (n) = 2T ( n2 ) + n
T (n) = 2(2T ( n4 ) + n2 ) + n = 4T ( n4 ) + 2n
T (n) = 4(2T ( n8 ) + n4 ) + 2n = 8T ( n8 ) + 3n
T (n) = 2k T ( 2nk ) + k · n
Merge sort
T (n) = 2T ( n2 ) + n
T (n) = 2(2T ( n4 ) + n2 ) + n = 4T ( n4 ) + 2n
T (n) = 4(2T ( n8 ) + n4 ) + 2n = 8T ( n8 ) + 3n
T (n) = 2k T ( 2nk ) + k · n
Fazendo k = log2 n:
Merge sort
T (n) = 2T ( n2 ) + n
T (n) = 2(2T ( n4 ) + n2 ) + n = 4T ( n4 ) + 2n
T (n) = 4(2T ( n8 ) + n4 ) + 2n = 8T ( n8 ) + 3n
T (n) = 2k T ( 2nk ) + k · n
Fazendo k = log2 n:
T (n) = 2(2T ( n4 ) + n2 ) + n = 4T ( n4 ) + 2n
T (n) = 4(2T ( n8 ) + n4 ) + 2n = 8T ( n8 ) + 3n
T (n) = 2k T ( 2nk ) + k · n
Fazendo k = log2 n:
(
3, n<2
T (n) = n
(5)
2T ( 2 ) + n, n ≥ 2
Merge sort
T (n) = 2k T ( 2nk ) + k · n
Fazendo k = log2 n:
Altura da árvore
Recorrências
Altura da árvore
Recorrências
Altura da árvore
Merge sort
Altura da árvore
Merge sort
Altura da árvore
Merge sort
T (n) = 4T ( n4 ) + n
Merge sort
T (n) = 4T ( n4 ) + n
n
T (n) = 4(4T ( 16 ) + n4 ) + n = 16T ( 16
n
) + 2n
Merge sort
T (n) = 4T ( n4 ) + n
n
T (n) = 4(4T ( 16 ) + n4 ) + n = 16T ( 16
n
) + 2n
n n n
T (n) = 16(4T ( 64 )+ 16 ) + 2n = 64T ( 64 ) + 3n
Merge sort
T (n) = 4T ( n4 ) + n
n
T (n) = 4(4T ( 16 ) + n4 ) + n = 16T ( 16
n
) + 2n
n n n
T (n) = 16(4T ( 64 )+ 16 ) + 2n = 64T ( 64 ) + 3n
T (n) = 4k T ( 4nk ) + k · n
Merge sort
T (n) = 4k T ( 4nk ) + k · n
Merge sort
T (n) = 4k T ( 4nk ) + k · n
Fazendo k = log4 n:
Merge sort
T (n) = 4k T ( 4nk ) + k · n
Fazendo k = log4 n:
T (n) = 4k T ( 4nk ) + k · n
Fazendo k = log4 n:
T (n) = 4k T ( 4nk ) + k · n
Fazendo k = log4 n:
T (n) = 3n + n log4 n
Merge sort
(
3, n<2
T (n) = n
(6)
2T ( 2 ) + tmerge , n ≥ 2
Merge sort
(
3, n<2
T (n) = n
(7)
2T ( 2 ) + n, n ≥ 2
Merge sort
(
3, n<2
T (n) = (8)
dT ( dn ) + (d − 1) · n, n≥2
Merge sort
T (n) = dT ( dn ) + (d − 1) · n
Merge sort
T (n) = dT ( dn ) + (d − 1) · n
T (n) = dT ( dn ) + (d − 1) · n
T (n) = d 2 T ( dn2 ) + 2 · (d − 1) · n
Merge sort
T (n) = dT ( dn ) + (d − 1) · n
T (n) = d 2 T ( dn2 ) + 2 · (d − 1) · n
T (n) = dT ( dn ) + (d − 1) · n
T (n) = d 2 T ( dn2 ) + 2 · (d − 1) · n
T (n) = d 3 T ( dn3 ) + 3 · (d − 1) · n
Merge sort
T (n) = dT ( dn ) + (d − 1) · n
T (n) = d 2 T ( dn2 ) + 2 · (d − 1) · n
T (n) = d 3 T ( dn3 ) + 3 · (d − 1) · n
T (n) = d k T ( dnk ) + k · (d − 1) · n
Merge sort
T (n) = d k T ( dnk ) + k · (d − 1) · n
Merge sort
T (n) = d k T ( dnk ) + k · (d − 1) · n
Fazendo k = logd n:
Merge sort
T (n) = d k T ( dnk ) + k · (d − 1) · n
Fazendo k = logd n:
T (n) = d k T ( dnk ) + k · (d − 1) · n
Fazendo k = logd n:
T (n) = nT ( nn ) + logd n · (d − 1) · n
Merge sort
T (n) = d k T ( dnk ) + k · (d − 1) · n
Fazendo k = logd n:
T (n) = nT ( nn ) + logd n · (d − 1) · n
T (n) = d k T ( dnk ) + k · (d − 1) · n
Fazendo k = logd n:
T (n) = nT ( nn ) + logd n · (d − 1) · n
T (n) = 3n + logd n · (d − 1) · n
Merge sort
T (n) = 3n + (d − 1) · n logd n
Merge sort
T (n) = 3n + (d − 1) · n logd n
T (n) = 3n + (d − 1) · n logd n
T (n) = 3n + (d − 1) · n logd n
T (n) = 3n + logd n · (d − 1) · n
T (n) = 3n + logd n · (d − 1) · n
T (n) = 3n + logd n · (d − 1) · n
(
2, n<2
T (n) = (9)
tpartition + T (menor ) + T (maior ), n ≥ 2
Algoritmo 8 partition(vetor v , ı́ndices hleft, righti)
aux ← left; i ← left + 1; j ← right - 1
while i ≤ j do
while v[i] ≤ aux and i < j do
i←i+1
end while
while v[j] > aux and i < j do
j←j-1
end while
if v[i] > v[j] then
swap(v[i], v[j])
end if
end while
swap(v[0], v[right])
return right
Quick sort
(
2, n<2
T (n) = (10)
Θ(n) + T (menor ) + T (maior ), n ≥ 2
Melhor caso
T (n) = 2T ( n2 ) + n
Melhor caso
T (n) = 2T ( n2 ) + n
Igual ao mergesort:
Melhor caso
T (n) = 2T ( n2 ) + n
Igual ao mergesort:
(
2, n<2
T (n) = (11)
n + T (menor ) + T (maior ), n ≥ 2
Melhor caso
T (n) = 2T ( n2 ) + n
Igual ao mergesort:
T (n) = 2T ( n2 ) + n
Igual ao mergesort:
T (n) = 2n + n · log2 n
Pior caso
T (n) = n + T (n − 1) + T (0) = n + T (n − 1) + 2
Pior caso
T (n) = n + T (n − 1) + T (0) = n + T (n − 1) + 2
Iteração (simplificando)
Pior caso
T (n) = n + T (n − 1) + T (0) = n + T (n − 1) + 2
Iteração (simplificando)
T (n) = T (n − 1) + n
Pior caso
T (n) = n + T (n − 1) + T (0) = n + T (n − 1) + 2
Iteração (simplificando)
T (n) = T (n − 1) + n
T (n = (T (n − 2) + n − 1) + n = T (n − 2) + 2n − 1
Pior caso
T (n) = n + T (n − 1) + T (0) = n + T (n − 1) + 2
Iteração (simplificando)
T (n) = T (n − 1) + n
T (n = (T (n − 2) + n − 1) + n = T (n − 2) + 2n − 1
T (n) = (T (n − 3) + n − 2) + 2n − 1 = T (n − 3) + 3n − 3
Pior caso
T (n) = n + T (n − 1) + T (0) = n + T (n − 1) + 2
Iteração (simplificando)
T (n) = T (n − 1) + n
T (n = (T (n − 2) + n − 1) + n = T (n − 2) + 2n − 1
T (n) = (T (n − 3) + n − 2) + 2n − 1 = T (n − 3) + 3n − 3
T (n) = (T (n − 4) + n − 3) + 3n − 3 = T (n − 4) + 4n − 6
Pior caso
T (n) = n + T (n − 1) + T (0) = n + T (n − 1) + 2
Iteração (simplificando)
T (n) = T (n − 1) + n
T (n = (T (n − 2) + n − 1) + n = T (n − 2) + 2n − 1
T (n) = (T (n − 3) + n − 2) + 2n − 1 = T (n − 3) + 3n − 3
T (n) = (T (n − 4) + n − 3) + 3n − 3 = T (n − 4) + 4n − 6
T (n) = (T (n − 5) + n − 4) + 3n − 6 = T (n − 5) + 5n − 10
Pior caso
T (n) = n + T (n − 1) + T (0) = n + T (n − 1) + 2
Iteração (simplificando)
T (n) = T (n − 1) + n
T (n = (T (n − 2) + n − 1) + n = T (n − 2) + 2n − 1
T (n) = (T (n − 3) + n − 2) + 2n − 1 = T (n − 3) + 3n − 3
T (n) = (T (n − 4) + n − 3) + 3n − 3 = T (n − 4) + 4n − 6
T (n) = (T (n − 5) + n − 4) + 3n − 6 = T (n − 5) + 5n − 10
k−1
X
T (n) = T (n − k) + kn − i
i=1
Pior caso
k−1
X
T (n) = T (n − k) + kn − i
i=1
Pior caso
k−1
X
T (n) = T (n − k) + kn − i
i=1
k(k−1)
T (n) = T (n − k) + kn − 2
Pior caso
k−1
X
T (n) = T (n − k) + kn − i
i=1
k(k−1)
T (n) = T (n − k) + kn − 2
Fazendo k = n:
Pior caso
k−1
X
T (n) = T (n − k) + kn − i
i=1
k(k−1)
T (n) = T (n − k) + kn − 2
Fazendo k = n:
n(n−1)
T (n) = T (n − n) + n · n − 2
Pior caso
k−1
X
T (n) = T (n − k) + kn − i
i=1
k(k−1)
T (n) = T (n − k) + kn − 2
Fazendo k = n:
n(n−1)
T (n) = T (n − n) + n · n − 2
(n2 −n)
T (n) = T (0) + n2 − 2
Pior caso
k−1
X
T (n) = T (n − k) + kn − i
i=1
k(k−1)
T (n) = T (n − k) + kn − 2
Fazendo k = n:
n(n−1)
T (n) = T (n − n) + n · n − 2
(n2 −n)
T (n) = T (0) + n2 − 2
n2 n
T (n) = T (0) + 2 + 2
n2 n
T (n) = 2 + 2 + 2 −→ T (n) ∈ Θ(n2 )
Escolha do pivô
Aleatório: Θ(1)
Escolha do pivô
Mediana: Θ(n)
Escolha do pivô
(
2, caso base,
T (n) = (12)
T (n/2) + 3, c.c.
Iteração
T (n) = T ( n2 ) + 3
Iteração
T (n) = T ( n2 ) + 3
T (n) = (T ( n4 ) + 3) + 3 = T ( n4 ) + 6
Iteração
T (n) = T ( n2 ) + 3
T (n) = (T ( n4 ) + 3) + 3 = T ( n4 ) + 6
T (n) = (T ( n8 ) + 3) + 6 = T ( n8 ) + 9
Iteração
T (n) = T ( n2 ) + 3
T (n) = (T ( n4 ) + 3) + 3 = T ( n4 ) + 6
T (n) = (T ( n8 ) + 3) + 6 = T ( n8 ) + 9
T (n) = T ( 2nk ) + 3k
Iteração
T (n) = T ( n2 ) + 3
T (n) = (T ( n4 ) + 3) + 3 = T ( n4 ) + 6
T (n) = (T ( n8 ) + 3) + 6 = T ( n8 ) + 9
T (n) = T ( 2nk ) + 3k
Fazendo k = log2 n:
Iteração
T (n) = T ( n2 ) + 3
T (n) = (T ( n4 ) + 3) + 3 = T ( n4 ) + 6
T (n) = (T ( n8 ) + 3) + 6 = T ( n8 ) + 9
T (n) = T ( 2nk ) + 3k
Fazendo k = log2 n:
T (n) = T ( n2 ) + 3
T (n) = (T ( n4 ) + 3) + 3 = T ( n4 ) + 6
T (n) = (T ( n8 ) + 3) + 6 = T ( n8 ) + 9
T (n) = T ( 2nk ) + 3k
Fazendo k = log2 n:
(
3, n<2
T (n) = (13)
2T (n/2) + 4, n≥2
Iteração
T (n) = 2T ( n2 ) + 4
Iteração
T (n) = 2T ( n2 ) + 4
T (n) = 2(2T ( n4 ) + 4) + 4 = 4T ( n4 ) + 12
Iteração
T (n) = 2T ( n2 ) + 4
T (n) = 2(2T ( n4 ) + 4) + 4 = 4T ( n4 ) + 12
T (n) = 4(2T ( n8 ) + 4) + 12 = 8T ( n8 ) + 28
Iteração
T (n) = 2T ( n2 ) + 4
T (n) = 2(2T ( n4 ) + 4) + 4 = 4T ( n4 ) + 12
T (n) = 4(2T ( n8 ) + 4) + 12 = 8T ( n8 ) + 28
T (n) = 2T ( n2 ) + 4
T (n) = 2(2T ( n4 ) + 4) + 4 = 4T ( n4 ) + 12
T (n) = 4(2T ( n8 ) + 4) + 12 = 8T ( n8 ) + 28
Fazendo k = log2 n:
Iteração
T (n) = 2T ( n2 ) + 4
T (n) = 2(2T ( n4 ) + 4) + 4 = 4T ( n4 ) + 12
T (n) = 4(2T ( n8 ) + 4) + 12 = 8T ( n8 ) + 28
Fazendo k = log2 n:
T (n) = 2T ( n2 ) + 4
T (n) = 2(2T ( n4 ) + 4) + 4 = 4T ( n4 ) + 12
T (n) = 4(2T ( n8 ) + 4) + 12 = 8T ( n8 ) + 28
Fazendo k = log2 n:
n
T (n) = aT ( ) + cnd (14)
b
Generalizando o método da iteração
n
T (n) = aT ( ) + cnd (14)
b
n
T (n) = 2T ( ) + n2 (15)
2
Iteração
T (n) = 2T ( n2 ) + n2
Iteração
T (n) = 2T ( n2 ) + n2
n2
T (n) = 2(2T ( n4 ) + ( n2 )2 ) + n2 = 4T ( n4 ) + n2 + 4
Iteração
T (n) = 2T ( n2 ) + n2
n2
T (n) = 2(2T ( n4 ) + ( n2 )2 ) + n2 = 4T ( n4 ) + n2 + 4
n2 n2 n2
T (n) = 4(2T ( n8 ) + ( n4 )2 ) + n2 + 4 = 8T ( n8 ) + n2 + 4 + 16
Iteração
T (n) = 2T ( n2 ) + n2
n2
T (n) = 2(2T ( n4 ) + ( n2 )2 ) + n2 = 4T ( n4 ) + n2 + 4
n2 n2 n2
T (n) = 4(2T ( n8 ) + ( n4 )2 ) + n2 + 4 = 8T ( n8 ) + n2 + 4 + 16
k
X 2k
T (n) = 2k T ( 2nk ) + n2
4k
i=0
Iteração
T (n) = 2T ( n2 ) + n2
n2
T (n) = 2(2T ( n4 ) + ( n2 )2 ) + n2 = 4T ( n4 ) + n2 + 4
n2 n2 n2
T (n) = 4(2T ( n8 ) + ( n4 )2 ) + n2 + 4 = 8T ( n8 ) + n2 + 4 + 16
k
X 2k
T (n) = 2k T ( 2nk ) + n2
4k
i=0
k
X 1
T (n) = 2k T ( 2nk ) + n2 ( )k
2
i=0
Relembrando P.G.:
A = {a1 , a2 , . . . , an−1 , an }
Relembrando P.G.:
A = {a1 , a2 , . . . , an−1 , an }
a2 an
a1 = an−1 =q
Relembrando P.G.:
A = {a1 , a2 , . . . , an−1 , an }
a2 an
a1 = an−1 =q
k
X
Sm = ai
i=0
Relembrando P.G.:
A = {a1 , a2 , . . . , an−1 , an }
a2 an
a1 = an−1 =q
k
X
Sm = ai
i=0
a1 (q k+1 −1)
Sm = q−1
Relembrando P.G.:
A = {a1 , a2 , . . . , an−1 , an }
a2 an
a1 = an−1 =q
k
X
Sm = ai
i=0
a1 (q k+1 −1)
Sm = q−1
k
X 1 1
T (n) = 2k T ( 2nk ) + n2 ( )k −→ a1 = 1, q =
2 2
i=0
Relembrando P.G.:
A = {a1 , a2 , . . . , an−1 , an }
a2 an
a1 = an−1 =q
k
X
Sm = ai
i=0
a1 (q k+1 −1)
Sm = q−1
k
X 1 1
T (n) = 2k T ( 2nk ) + n2 ( )k −→ a1 = 1, q =
2 2
i=0
Relembrando P.G.:
A = {a1 , a2 , . . . , an−1 , an }
a2 an
a1 = an−1 =q
k
X
Sm = ai
i=0
a1 (q k+1 −1)
Sm = q−1
k
X 1 1
T (n) = 2k T ( 2nk ) + n2 ( )k −→ a1 = 1, q =
2 2
i=0
k+1
( 12 −1)
T (n) = 2k T ( 2nk ) + n2 1
−1
2
k+1
( 12 −1)
T (n) = 2k T ( 2nk ) + n2 1
−1
2
k+1
( 12 −1)
T (n) = 2k T ( 2nk ) + n2 1
−1
2
1 k+1
2 (2 −1)
T (n) = 2k T ( 2nk ) − n 1
2
k+1
( 12 −1)
T (n) = 2k T ( 2nk ) + n2 1
−1
2
1 k+1
2 (2 −1)
T (n) = 2k T ( 2nk ) − n 1
2
k+1
T (n) = 2k T ( 2nk ) − 2n2 ( 12 − 1)
k+1
( 12 −1)
T (n) = 2k T ( 2nk ) + n2 1
−1
2
1 k+1
2 (2 −1)
T (n) = 2k T ( 2nk ) − n 1
2
k+1
T (n) = 2k T ( 2nk ) − 2n2 ( 12 − 1)
n2
T (n) = 2k T ( 2nk ) − 2k
+ 2n2
k+1
( 12 −1)
T (n) = 2k T ( 2nk ) + n2 1
−1
2
1 k+1
2 (2 −1)
T (n) = 2k T ( 2nk ) − n 1
2
k+1
T (n) = 2k T ( 2nk ) − 2n2 ( 12 − 1)
n2
T (n) = 2k T ( 2nk ) − 2k
+ 2n2
Fazendo k = log2 n:
k+1
( 12 −1)
T (n) = 2k T ( 2nk ) + n2 1
−1
2
1 k+1
2 (2 −1)
T (n) = 2k T ( 2nk ) − n 1
2
k+1
T (n) = 2k T ( 2nk ) − 2n2 ( 12 − 1)
n2
T (n) = 2k T ( 2nk ) − 2k
+ 2n2
Fazendo k = log2 n:
n2
T (n) = 2log2 n T ( 2logn2 n ) − 2log2 n
+ 2n2
k+1
( 12 −1)
T (n) = 2k T ( 2nk ) + n2 1
−1
2
1 k+1
2 (2 −1)
T (n) = 2k T ( 2nk ) − n 1
2
k+1
T (n) = 2k T ( 2nk ) − 2n2 ( 12 − 1)
n2
T (n) = 2k T ( 2nk ) − 2k
+ 2n2
Fazendo k = log2 n:
n2
T (n) = 2log2 n T ( 2logn2 n ) − 2log2 n
+ 2n2
n2
T (n) = nT ( nn ) − n + 2n2
k+1
( 12 −1)
T (n) = 2k T ( 2nk ) + n2 1
−1
2
1 k+1
2 (2 −1)
T (n) = 2k T ( 2nk ) − n 1
2
k+1
T (n) = 2k T ( 2nk ) − 2n2 ( 12 − 1)
n2
T (n) = 2k T ( 2nk ) − 2k
+ 2n2
Fazendo k = log2 n:
n2
T (n) = 2log2 n T ( 2logn2 n ) − 2log2 n
+ 2n2
n2
T (n) = nT ( nn ) − n + 2n2
T (n) = 2T ( n2 ) + 2
T (n) = 2T ( n2 ) + n
T (n) = 2T ( n2 ) + n2
Generalizando o método da iteração
T (n) = 2T ( n2 ) + n
T (n) = 2T ( n2 ) + n2
Generalizando o método da iteração
T (n) = 2T ( n2 ) + n2
Generalizando o método da iteração
Caso base: 2
Generalizando o método da iteração
Caso base: 2
Caso recursivo
Generalizando o método da iteração
Caso base: 2
Caso recursivo
Recursão: 8T ( n2 )
Generalizando o método da iteração
Caso base: 2
Caso recursivo
Recursão: 8T ( n2 )
Adição: 4( n2 )2 = n2
Generalizando o método da iteração
Caso base: 2
Caso recursivo
Recursão: 8T ( n2 )
Adição: 4( n2 )2 = n2
Demais operações: 2
Generalizando o método da iteração
(
2, n=1
T (n) = (16)
8T (n/2) + n2 + 2, n≥2
Generalizando o método da iteração
n
T (n) = aT ( ) + cnd (17)
b
Generalizando o método da iteração
n
T (n) = aT ( ) + cnd (17)
b
n
T (n) = 8T ( ) + n2 (18)
2
Iteração
T (n) = 8T ( n2 ) + n2
Iteração
T (n) = 8T ( n2 ) + n2
8n2
T (n) = 8(8T ( n4 ) + ( n2 )2 ) + n2 = 64T ( n4 ) + n2 + 4
Iteração
T (n) = 8T ( n2 ) + n2
8n2
T (n) = 8(8T ( n4 ) + ( n2 )2 ) + n2 = 64T ( n4 ) + n2 + 4
8n2
T (n) = 64(2T ( n8 ) + ( n4 )2 ) + n2 + 4 =
8n2 64n2
512T ( n8 ) + n2 + 4 + 16
Iteração
T (n) = 8T ( n2 ) + n2
8n2
T (n) = 8(8T ( n4 ) + ( n2 )2 ) + n2 = 64T ( n4 ) + n2 + 4
8n2
T (n) = 64(2T ( n8 ) + ( n4 )2 ) + n2 + 4 =
8n2 64n2
512T ( n8 ) + n2 + 4 + 16
k
X 8k
T (n) = 8k T ( 2nk ) + n2
4k
i=0
Iteração
T (n) = 8T ( n2 ) + n2
8n2
T (n) = 8(8T ( n4 ) + ( n2 )2 ) + n2 = 64T ( n4 ) + n2 + 4
8n2
T (n) = 64(2T ( n8 ) + ( n4 )2 ) + n2 + 4 =
8n2 64n2
512T ( n8 ) + n2 + 4 + 16
k
X 8k
T (n) = 8k T ( 2nk ) + n2
4k
i=0
k
X
T (n) = 8k T ( 2nk ) + n2 2k
i=0
k
X
T (n) = 8k T ( 2nk ) + n2 2k −→ a1 = 1, q = 2
i=0
k
X
T (n) = 8k T ( 2nk ) + n2 2k −→ a1 = 1, q = 2
i=0
k+1
T (n) = 8k T ( 2nk ) + n2 (2 2−1−1)
k
X
T (n) = 8k T ( 2nk ) + n2 2k −→ a1 = 1, q = 2
i=0
k+1
T (n) = 8k T ( 2nk ) + n2 (2 2−1−1)
T (n) = 8k T ( 2nk ) + n2 · 2k · 2 − n2
k
X
T (n) = 8k T ( 2nk ) + n2 2k −→ a1 = 1, q = 2
i=0
k+1
T (n) = 8k T ( 2nk ) + n2 (2 2−1−1)
T (n) = 8k T ( 2nk ) + n2 · 2k · 2 − n2
Fazendo k = log2 n:
k
X
T (n) = 8k T ( 2nk ) + n2 2k −→ a1 = 1, q = 2
i=0
k+1
T (n) = 8k T ( 2nk ) + n2 (2 2−1−1)
T (n) = 8k T ( 2nk ) + n2 · 2k · 2 − n2
Fazendo k = log2 n:
T (n) = 8k T ( 2nk ) + n2 · 2k · 2 − n2
Fazendo k = log2 n:
x = y logy x , ,
Relembrando logaritmos e exponenciação:
x = y logy x , (x w )z = x w ·z ,
Relembrando logaritmos e exponenciação:
w
x = y logy x , (x w )z = x w ·z , x wlogy z = x logy z
Relembrando logaritmos e exponenciação:
w
x = y logy x , (x w )z = x w ·z , x wlogy z = x logy z
T (n) = aT ( bn ) + nd
Caso geral
T (n) = aT ( bn ) + nd
and
T (n) = a(aT ( bn2 ) + ( bn )d ) + nd = a2 T ( bn2 ) + nd + bd
Caso geral
T (n) = aT ( bn ) + nd
and
T (n) = a(aT ( bn2 ) + ( bn )d ) + nd = a2 T ( bn2 ) + nd + bd
and
T (n) = a2 (aT ( bn3 ) + ( bn2 )d ) + nd + bd
=
and a2 n d
a3 T ( bn3 ) + nd + bd
+ b 2d
Caso geral
T (n) = aT ( bn ) + nd
and
T (n) = a(aT ( bn2 ) + ( bn )d ) + nd = a2 T ( bn2 ) + nd + bd
and
T (n) = a2 (aT ( bn3 ) + ( bn2 )d ) + nd + bd
=
and a2 n d
a3 T ( bn3 ) + nd + bd
+ b 2d
k
X ak d
T (n) = ak T ( bnk ) + n
b k·d
i=0
Caso geral
T (n) = aT ( bn ) + nd
and
T (n) = a(aT ( bn2 ) + ( bn )d ) + nd = a2 T ( bn2 ) + nd + bd
and
T (n) = a2 (aT ( bn3 ) + ( bn2 )d ) + nd + bd
=
and a2 n d
a3 T ( bn3 ) + nd + bd
+ b 2d
k
X ak d
T (n) = ak T ( bnk ) + n
b k·d
i=0
k
X a
T (n) = ak T ( bnk ) + nd ( d )k
b
i=0
Desenvolvendo o lado esquerdo, com k = logb n:
Desenvolvendo o lado esquerdo, com k = logb n:
x = y logy x , ,
Desenvolvendo o lado esquerdo, com k = logb n:
x = y logy x , (x w )z = x w ·z ,
Desenvolvendo o lado esquerdo, com k = logb n:
n
T (n) = aT ( ) + cnd (19)
b
Generalizando o método da iteração
n
T (n) = aT ( ) + cnd (19)
b
d se a = b d
Θ(n log n),
(ou logb a = d)
T (n) = (20)
Desenvolvendo o lado direito para a 6= b d :
Desenvolvendo o lado direito para a 6= b d :
k
X a
nd ( d )k
b
i=0
Desenvolvendo o lado direito para a 6= b d :
k
X a
nd ( d )k
b
i=0
Relembrando logaritmos e exponenciação:
Desenvolvendo o lado direito para a 6= b d :
k
X a
nd ( d )k
b
i=0
Relembrando logaritmos e exponenciação:
x = y logy x ,
Desenvolvendo o lado direito para a 6= b d :
k
X a
nd ( d )k
b
i=0
Relembrando logaritmos e exponenciação:
xy
x = y logy x , xz = x y −z
Desenvolvendo o lado direito para a 6= b d :
k
X a
nd ( d )k
b
i=0
Relembrando logaritmos e exponenciação:
xy
x = y logy x , xz = x y −z
k k k
X a k d
X b logb a k d
X
nd ( d) =n ( d ) =n (b logb a−d )k
b b
i=0 i=0 i=0
Desenvolvendo o lado direito para a 6= b d :
k
X a
nd ( d )k
b
i=0
Relembrando logaritmos e exponenciação:
xy
x = y logy x , xz = x y −z
k k k
X a k d
X b logb a k d
X
nd ( d) =n ( d ) =n (b logb a−d )k
b b
i=0 i=0 i=0
Fazendo x = logb a − d:
Desenvolvendo o lado direito para a 6= b d :
k
X a
nd ( d )k
b
i=0
Relembrando logaritmos e exponenciação:
xy
x = y logy x , xz = x y −z
k k k
X a k d
X b logb a k d
X
nd ( d) =n ( d ) =n (b logb a−d )k
b b
i=0 i=0 i=0
Fazendo x = logb a − d:
k
X
n d (b x )k
i=0
Fazendo x = logb a − d:
Fazendo x = logb a − d:
Xk
nd (b x )k −→ a1 = 1, q = b x
i=0
Fazendo x = logb a − d:
Xk
nd (b x )k −→ a1 = 1, q = b x
i=0
x k+1
= nd (b b)x −1−1
Fazendo x = logb a − d:
Xk
nd (b x )k −→ a1 = 1, q = b x
i=0
x k+1 x k+1
= nd (b b)x −1−1 = nd (bbx )−1 − 1
b x −1
Fazendo x = logb a − d:
Xk
nd (b x )k −→ a1 = 1, q = b x
i=0
x k+1 x k+1
= nd (b b)x −1−1 = nd (bbx )−1 − 1 x·k·b x nd
b x −1 = nd bbx −1 − b x −1
Fazendo k = logb n:
Fazendo x = logb a − d:
Xk
nd (b x )k −→ a1 = 1, q = b x
i=0
x k+1 x k+1
= nd (b b)x −1−1 = nd (bbx )−1 − 1 x·k·b x nd
b x −1 = nd bbx −1 − b x −1
Fazendo k = logb n:
x·logb n )·b x
nd
= nd (b b x −1 − b x −1
Fazendo x = logb a − d:
Xk
nd (b x )k −→ a1 = 1, q = b x
i=0
x k+1 x k+1
= nd (b b)x −1−1 = nd (bbx )−1 − 1 ·b x·k x nd
b x −1 = nd bbx −1 − b x −1
Fazendo k = logb n:
x·logb n )·b x logb n )x ·b x
nd nd
= nd (b b x −1 − b x −1 = nd (b b x −1 − b x −1
Fazendo x = logb a − d:
Xk
nd (b x )k −→ a1 = 1, q = b x
i=0
x k+1 x k+1
= nd (b b)x −1−1 = nd (bbx )−1 − 1 ·b x·k x nd
b x −1 = nd bbx −1 − b x −1
Fazendo k = logb n:
x·logb n )·b x logb n )x ·b x
nd nd
= nd (b b x −1 − b x −1 = nd (b b x −1 − b x −1
x x nd
= nd nbx ·b
−1 − b x −1
Fazendo x = logb a − d:
Xk
nd (b x )k −→ a1 = 1, q = b x
i=0
x k+1 x k+1
= nd (b b)x −1−1 = nd (bbx )−1 − 1 ·b x·k x nd
b x −1 = nd bbx −1 − b x −1
Fazendo k = logb n:
x·logb n )·b x logb n )x ·b x
nd nd
= nd (b b x −1 − b x −1 = nd (b b x −1 − b x −1
x x nd nd+x ·b x nd
= nd nbx ·b
−1 − b x −1 = b x −1 − b x −1
Fazendo x = logb a − d:
Xk
nd (b x )k −→ a1 = 1, q = b x
i=0
x k+1 x k+1
= nd (b b)x −1−1 = nd (bbx )−1 − 1 ·b x·k x nd
b x −1 = nd bbx −1 − b x −1
Fazendo k = logb n:
x·logb n )·b x logb n )x ·b x
nd nd
= nd (b b x −1 − b x −1 = nd (b b x −1 − b x −1
x x nd nd+x ·b x nd
= nd nbx ·b
−1 − b x −1 = b x −1 − b x −1
Como x = logb a − d:
Fazendo x = logb a − d:
Xk
nd (b x )k −→ a1 = 1, q = b x
i=0
x k+1 x k+1
= nd (b b)x −1−1 = nd (bbx )−1 − 1 ·b x·k x nd
b x −1 = nd bbx −1 − b x −1
Fazendo k = logb n:
x·logb n )·b x logb n )x ·b x
nd nd
= nd (b b x −1 − b x −1 = nd (b b x −1 − b x −1
x x nd nd+x ·b x nd
= nd nbx ·b
−1 − b x −1 = b x −1 − b x −1
Como x = logb a − d:
nd+logb a−d ·b x nd
= b x −1 − b x −1
Fazendo x = logb a − d:
Xk
nd (b x )k −→ a1 = 1, q = b x
i=0
x k+1 x k+1
= nd (b b)x −1−1 = nd (bbx )−1 − 1 ·b x·k x nd
b x −1 = nd bbx −1 − b x −1
Fazendo k = logb n:
x·logb n )·b x logb n )x ·b x
nd nd
= nd (b b x −1 − b x −1 = nd (b b x −1 − b x −1
x x nd nd+x ·b x nd
= nd nbx ·b
−1 − b x −1 = b x −1 − b x −1
Como x = logb a − d:
nd+logb a−d ·b x nd nlogb a ·b x nd
= b x −1 − b x −1 = b x −1 − b x −1
k
X a
T (n) = nlogb a T (1) + nd ( d )k
b
i=0
k
X a
T (n) = nlogb a T (1) + nd ( d )k
b
i=0
nlogb a ·b x nd
T (n) = nlogb a T (1) + b x −1 − b x −1
k
X a
T (n) = nlogb a T (1) + nd ( d )k
b
i=0
nlogb a ·b x nd
T (n) = nlogb a T (1) + b x −1 − b x −1
−→ b x constante positiva
k
X a
T (n) = nlogb a T (1) + nd ( d )k
b
i=0
nlogb a ·b x nd
T (n) = nlogb a T (1) + b x −1 − b x −1
−→ b x constante positiva
−→ b x constante positiva
T (n) ∈ Θ(nlogb a ):
k
X a
T (n) = nlogb a T (1) + nd ( d )k
b
i=0
nlogb a ·b x nd
T (n) = nlogb a T (1) + b x −1 − b x −1
−→ b x constante positiva
T (n) ∈ Θ(nlogb a ):
−→ b x constante positiva
T (n) ∈ Θ(nlogb a ):
−→ b x constante positiva
T (n) ∈ Θ(nlogb a ):
T (n) ∈ Θ(nd )
Generalizando o método da iteração
n
T (n) = aT ( ) + cnd (21)
b
d se a = b d
Θ(n log n),
(ou logb a = d)
T (n) = (22)
Generalizando o método da iteração
n
T (n) = aT ( ) + cnd (21)
b
d se a = b d
Θ(n log n),
(ou logb a = d)
T (n) = Θ(nd ), se a < b d (ou logb a < d) (22)
Generalizando o método da iteração
n
T (n) = aT ( ) + cnd (21)
b
d se a = b d
Θ(n log n),
(ou logb a = d)
T (n) = Θ(nd ), se a < b d (ou logb a < d) (22)
Θ(n logb a ), se a > b d (ou logb a > d)
Generalizando o método da iteração
MMulti: T (n) = 8T ( n2 ) + n2
Generalizando o método da iteração
MMulti: T (n) = 8T ( n2 ) + n2
MMulti: T (n) = 8T ( n2 ) + n2
MMulti: T (n) = 8T ( n2 ) + n2
Caso base: 2
Generalizando o método da iteração
Caso base: 2
Caso recursivo
Generalizando o método da iteração
Caso base: 2
Caso recursivo
Recursão: 4T ( n2 )
Generalizando o método da iteração
Caso base: 2
Caso recursivo
Recursão: 4T ( n2 )
Demais operações: 2
Generalizando o método da iteração
(
2, n=1
T (n) = (23)
4T (n/2) + 2, n≥2
Generalizando o método da iteração
MSum: T (n) = 4T ( n2 ) + 2
Generalizando o método da iteração
MSum: T (n) = 4T ( n2 ) + 2
MSum: T (n) = 4T ( n2 ) + 2
MSum: T (n) = 4T ( n2 ) + 2
n
T (n) = aT ( ) + f (n) (24)
b
T (n) =
(25)
Teorema central
n
T (n) = aT ( ) + f (n) (24)
b
logb a log k+1 n), se ∃k ∈ N, f (n) ∈ Θ(nlogb a log k n)
Θ(n
T (n) =
(25)
Teorema central
n
T (n) = aT ( ) + f (n) (24)
b
logb a log k+1 n), se ∃k ∈ N, f (n) ∈ Θ(nlogb a log k n)
Θ(n
T (n) = Θ(n logb a ), se f (n) ∈ O(nlogb a− )
(25)
Teorema central
n
T (n) = aT ( ) + f (n) (24)
b
logb a log k+1 n), se ∃k ∈ N, f (n) ∈ Θ(nlogb a log k n)
Θ(n
T (n) = Θ(n logb a ), se f (n) ∈ O(nlogb a− )
Θ(f (n)), se f (n) ∈ Ω(nlogb a+ )
(25)
Teorema central
MSum: T (n) = 4T ( n2 )
Teorema central
MSum: T (n) = 4T ( n2 )
a = 4, b = 2,
Teorema central
MSum: T (n) = 4T ( n2 )
a = 4, b = 2, nlogb a = n2 ,
Teorema central
MSum: T (n) = 4T ( n2 )
a = 4, b = 2, nlogb a = n2 , f (n) = 0
Teorema central
MSum: T (n) = 4T ( n2 )
a = 4, b = 2, nlogb a = n2 , f (n) = 0
nlogb a ∈ Θ(n2 ),
Teorema central
MSum: T (n) = 4T ( n2 )
a = 4, b = 2, nlogb a = n2 , f (n) = 0
nlogb a ∈ Θ(n2 ), f (n) ∈ Θ(1)
Teorema central
MSum: T (n) = 4T ( n2 )
a = 4, b = 2, nlogb a = n2 , f (n) = 0
nlogb a ∈ Θ(n2 ), f (n) ∈ Θ(1)
f(n) é dominado: f (n) ∈ O(nlogb (a−) )
Teorema central
MSum: T (n) = 4T ( n2 )
a = 4, b = 2, nlogb a = n2 , f (n) = 0
nlogb a ∈ Θ(n2 ), f (n) ∈ Θ(1)
f(n) é dominado: f (n) ∈ O(nlogb (a−) )
T (n) ∈ Θ(nlogb a ) −→ T (n) ∈ Θ(n2 )
Teorema central
MMulti: T (n) = 8T ( n2 ) + n2
Teorema central
MMulti: T (n) = 8T ( n2 ) + n2
a = 8, b = 2,
Teorema central
MMulti: T (n) = 8T ( n2 ) + n2
a = 8, b = 2, nlogb a = n3 ,
Teorema central
MMulti: T (n) = 8T ( n2 ) + n2
a = 8, b = 2, nlogb a = n3 , f (n) = n2
Teorema central
MMulti: T (n) = 8T ( n2 ) + n2
a = 8, b = 2, nlogb a = n3 , f (n) = n2
nlogb a ∈ Θ(n3 ),
Teorema central
MMulti: T (n) = 8T ( n2 ) + n2
a = 8, b = 2, nlogb a = n3 , f (n) = n2
nlogb a ∈ Θ(n3 ), f (n) ∈ Θ(n2 )
Teorema central
MMulti: T (n) = 8T ( n2 ) + n2
a = 8, b = 2, nlogb a = n3 , f (n) = n2
nlogb a ∈ Θ(n3 ), f (n) ∈ Θ(n2 )
f(n) é dominado: f (n) ∈ O(nlogb (a−) )
Teorema central
MMulti: T (n) = 8T ( n2 ) + n2
a = 8, b = 2, nlogb a = n3 , f (n) = n2
nlogb a ∈ Θ(n3 ), f (n) ∈ Θ(n2 )
f(n) é dominado: f (n) ∈ O(nlogb (a−) )
T (n) ∈ Θ(nlogb a ) −→ T (n) ∈ Θ(n3 )
T (n) = 2T ( n2 ) + n log n
k = 1:
T (n) = 2T ( n2 ) + n log n
−1 ≤ −δ log n
T (n) = 2T ( n2 ) + n log n
−1 ≤ −δ log n −→ δ log n ≤ 1
Condição de regularidade
12
10
8
δ = 0.1
6
δ = 0.9
4
2
0
n
Recorrências