Documente Academic
Documente Profesional
Documente Cultură
Análise assintótica
Tiago Massoni
Jorge Figueiredo
Quanto consome?
20 km/litro
2 km/litro
válido
apenas
para
comparação...tempos
especificos
podem
variar
Sorting
Insertion sort
1 j n
A:
ORDENADO
chave
pior
melhor
7
ESQUEçam caso medio, vamos olhar para o pior - qual é o maximo onde podemos chegar.
e melhor: qual é o minimo de tempo que levaremos?
Contando as instruções executadas
f(n) = Ω(g(n))
f(n) = Θ(g(n))
definicoes
2n
n2
log n
c
n
Mergesort: divisão e
conquista
Fase de Fase de
Divisão top- Conquista
down bottom up
Its
worst‐case
running
:me
has
a
lower
order
of
growth
than
inser:on
sort.
Mergesort
MergeSort
(A,
inicio,
fim)
if
inicio
<
fim
then
meio
←
(inicio
+
fim)/2
MergeSort(A,
inicio,
meio)
MergeSort(A,
meio
+
1,
fim)
Merge(A,
inicio,
meio,
fim)
Merge
13
lembre-se: uma árvore fornece um chute para ser provado pela substituicao
T(n)
Tamanho do problema
em cada nível
nível 0: n
nível 1: n/2
nível 2: n/4
...
nível i: 1 = n/2i
pela equação: i = lg n
altura árvore: lgn
n. níveis: lgn + 1
Θ(nlgn)
caso
base
theta(1):
constante
c
Método Mestre
Resolve recorrências aT(n/b) + f(n), a ≥ 1, b > 1
Casos
1. Se f(n) ∈ O(nlogba- ε), para algum ε > 0, temos que:
T(n) ∈ Θ(nlogba)
T(n) = 9.T(n/3) + n
T(n)= 5T(n/2) + n3
a = 9, b = 3
f(n) = n
segundo
pior caso para uma heap com raiz em i e n elementos: 2n/3 elementos (qualquer subarvore
escolhida tem no maximo 2n/3 nos (metade cheia no ultima nivel))
Considera que i é um elemento raiz de duas subarvores já heapified
Exercicio: pelo metodo mestre, a = 1, b = 3/2, caso 2: T(n) = theta(lgn)
Exercicio: qual é o efeito de se chamar max-heapify para i > heapsize[A]/2
BUILD-MAX-HEAP
Custo
Cada chamada MAX-HEAPIFY = O(lgn)
número de chamadas = n/2 = O(n)
Assim: T(n) = O(nlgn)
Correto, mas não é o mais apertado…
demora menos, menos chamadas recursivas para baixo (chega mais rapido no folha)
lembre-se: conta altura h debaixo para cima (de cima para baixo é profundidade)
Custo para o BUILD-MAX-HEAP
Tempo requerido pela chamada do MAX-
HEAPIFY é O(lgn) = O(h)
Assim, custo total de BUILD-MAX-HEAP é
limitado por lg n
n
∑2 h +1
× O(h)
h= 0
simplificação
lg n lg n
h h
O(n€∑ h ) = O(n ∑ h )
h= 0 2 × 2 h= 0 2
demora menos, menos chamadas recursivas para baixo (chega mais rapido no folha)
para cada nós, execute MAXHEAPIFY, que tem custo O(h)…somatório me dá o número de nós na árvore toda, a partir do numero
de nós em cada nível
€
já simplifiquei eliminando os pisos e tetos
Custo para o BUILD-MAX-HEAP
lg n ∞
h 1 h
O(n ∑ h ) = O(n ∑ h( ) )
h= 0 2 h= 0 2
k=hex=½
(½)/ (1 - ½)€
2=2
Resultado
Limite superior
mais apertado (linear)
8
demora menos, menos chamadas recursivas para baixo (chega mais rapido no folha)
esta
formula
de
somatorio
com
modulo
de
x
menor
que
1
soh
funciona
para
PGS
que
convergem
(soma
definida
por
esta
convergencia)
Algoritmo heapsort
1. Construir
o
heap
2. Troque
o
item
na
posição
1
do
vetor
(raiz
do
heap)
com
o
item
da
posição
n
3. Use
max‐heapify
para
recons:tuir
o
heap
para
os
itens
v[1],
v[2],
.
.
.
,
v[n
−
1]
4. Repita
os
passos
2
e
3
com
os
n
−
1
itens
restantes,
depois
com
os
n
−
2,
até
que
reste
apenas
um
item
QuickSort
Divisão: escolher um pivô. dividir o array em duas
partes em torno do pivô
Conquista: Recursivamente ordenar os dois sub-arrays
Combinação: Trivial
pivô
11
T(n)
=
(n
‐
1)
+
(n
‐
2)
+
(n
‐
3)
0n-2
+
…
+
1
0n-3
. T(n)
=
(n2
‐
n)
/
2
=
O(n2)
.
1
16
17
18
árvore do quicksort
.
.
.
.
Caso médio
T(n) = cn(log10n + 1) + algo menor que cn(log10/9n + 1)
Análise assintótica
Tiago Massoni
Jorge Figueiredo
Funções uteis
• Piso e teto
x : para qualquer x real, representa o
maior inteiro menor ou igual a x
x : para qualquer x real, representa o
menor inteiro maior ou igual a x
x – 1 < x ≤ x ≤ x < x + 1
n/2 + n/2 = n
a mod b = a - a/b b 26
5 mod 2 = 5 – piso(2,5)2 = 5 – 4 =
1
Funções uteis
Para qualquer a,b,c > 0
• Logaritmos
a = blogba
logb a = x bx = a logc (ab) = logc a + logc b
logb an = n logb a
lg n = log2 n logc (a/b) = logc a - logc
b
lg n + k= lg(n) + k
logb a = logc a / logc b
lgk n = (lg n) k logb(1/a) = - logb a
log n = log10 n logb a = 1 / loga b
alogbc = clogba
27
Somatórios
If
the
limit
does
not
exist,
the
series
diverges;
otherwise,
it
converges.
The
terms
of
a
convergent
series
cannot
always
be
added
in
any
order.
Somatórios
If
the
limit
does
not
exist,
the
series
diverges;
otherwise,
it
converges.
The
terms
of
a
convergent
series
cannot
always
be
added
in
any
order.
Somatórios
soma
de
pg:
qual
a
razao?
Somatórios
Análise assintótica
Previsão
aproximação
Vendem melhor
Partition
– Primeiro ou último elemento do vetor
– Elemento mediano do vetor
– Elemento que mais ocorre no vetor
– Elemento mais próximo da média aritmética dos elementos do vetor
12