(ACH2002) Introdução à Análise de Algoritmos - Aula 13
1. Aula 13 – Algoritmos de Ordena¸c˜ao:
Modelo Incremental e Cota Inferior
Norton Trevisan Roman
norton@usp.br
2 de outubro de 2018
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 1 / 25
2. Projeto por Indu¸c˜ao Simples
Terceira Alternativa
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 2 / 25
3. Projeto por Indu¸c˜ao Simples
Terceira Alternativa
Base: n = 1. Um ´unico elemento est´a ordenado
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 2 / 25
4. Projeto por Indu¸c˜ao Simples
Terceira Alternativa
Base: n = 1. Um ´unico elemento est´a ordenado
H.I.: Sei ordenar um conjunto de n − 1 ≥ 1 valores
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 2 / 25
5. Projeto por Indu¸c˜ao Simples
Terceira Alternativa
Base: n = 1. Um ´unico elemento est´a ordenado
H.I.: Sei ordenar um conjunto de n − 1 ≥ 1 valores
Passo:
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 2 / 25
6. Projeto por Indu¸c˜ao Simples
Terceira Alternativa
Base: n = 1. Um ´unico elemento est´a ordenado
H.I.: Sei ordenar um conjunto de n − 1 ≥ 1 valores
Passo:
Seja S um conjunto de n ≥ 2 valores, e x o maior elemento
de S
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 2 / 25
7. Projeto por Indu¸c˜ao Simples
Terceira Alternativa
Base: n = 1. Um ´unico elemento est´a ordenado
H.I.: Sei ordenar um conjunto de n − 1 ≥ 1 valores
Passo:
Seja S um conjunto de n ≥ 2 valores, e x o maior elemento
de S
Ent˜ao x certamente ´e o ´ultimo elemento da sequˆencia
ordenada de S. Por hip´otese de indu¸c˜ao, sabemos ordenar os
demais S − x elementos, e assim obtemos S ordenado
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 2 / 25
8. Projeto por Indu¸c˜ao Simples
Terceira Alternativa
Base: n = 1. Um ´unico elemento est´a ordenado
H.I.: Sei ordenar um conjunto de n − 1 ≥ 1 valores
Passo:
Seja S um conjunto de n ≥ 2 valores, e x o maior elemento
de S
Ent˜ao x certamente ´e o ´ultimo elemento da sequˆencia
ordenada de S. Por hip´otese de indu¸c˜ao, sabemos ordenar os
demais S − x elementos, e assim obtemos S ordenado
Varia¸c˜ao do M´etodo da Sele¸c˜ao
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 2 / 25
9. Projeto por Indu¸c˜ao Simples
No entanto, se
implementarmos
de uma forma
diferente a sele¸c˜ao
e o posicionamento
do maior elemento,
obteremos o
algoritmo da Bolha
(Bubble Sort):
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 3 / 25
10. Projeto por Indu¸c˜ao Simples
No entanto, se
implementarmos
de uma forma
diferente a sele¸c˜ao
e o posicionamento
do maior elemento,
obteremos o
algoritmo da Bolha
(Bubble Sort):
Bolha(A, n):
Entrada: Arranjo A de n valores
Sa´ıda: Aranjo A ordenado.
para i = n - 1 at´e 1 fa¸ca:
para j = 1 at´e i fa¸ca:
se A[j-1] > A[j] ent~ao
t = A[j-1]
A[j-1] = A[j]
A[j] = t
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 3 / 25
11. Projeto por Indu¸c˜ao Simples
M´etodo da Bolha (iterativo)
Usando a
nota¸c˜ao O,
quantas
compara¸c˜oes
no arranjo s˜ao
feitas no pior
caso?
Bolha(A, n):
para i = n - 1 at´e 1 fa¸ca:
para j = 1 at´e i fa¸ca:
se A[j-1] > A[j] ent~ao
t = A[j-1]
A[j-1] = A[j]
A[j] = t
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 4 / 25
12. Projeto por Indu¸c˜ao Simples
M´etodo da Bolha (iterativo)
Usando a
nota¸c˜ao O,
quantas
compara¸c˜oes
no arranjo s˜ao
feitas no pior
caso?
Bolha(A, n):
para i = n - 1 at´e 1 fa¸ca:
para j = 1 at´e i fa¸ca:
se A[j-1] > A[j] ent~ao
t = A[j-1]
A[j-1] = A[j]
A[j] = t
O(n)
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 4 / 25
13. Projeto por Indu¸c˜ao Simples
M´etodo da Bolha (iterativo)
Usando a
nota¸c˜ao O,
quantas
compara¸c˜oes
no arranjo s˜ao
feitas no pior
caso?
Bolha(A, n):
para i = n - 1 at´e 1 fa¸ca:
para j = 1 at´e i fa¸ca:
se A[j-1] > A[j] ent~ao
t = A[j-1]
A[j-1] = A[j]
A[j] = t
O(n) × O(n)
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 4 / 25
14. Projeto por Indu¸c˜ao Simples
M´etodo da Bolha (iterativo)
Usando a
nota¸c˜ao O,
quantas
compara¸c˜oes
no arranjo s˜ao
feitas no pior
caso?
Bolha(A, n):
para i = n - 1 at´e 1 fa¸ca:
para j = 1 at´e i fa¸ca:
se A[j-1] > A[j] ent~ao
t = A[j-1]
A[j-1] = A[j]
A[j] = t
O(n) × O(n) = O(n2
)
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 4 / 25
15. Projeto por Indu¸c˜ao Simples
M´etodo da Bolha (iterativo)
E quantas
trocas de
elementos s˜ao
feitas no arranjo
no pior caso?
Bolha(A, n):
para i = n - 1 at´e 1 fa¸ca:
para j = 1 at´e i fa¸ca:
se A[j-1] > A[j] ent~ao
t = A[j-1]
A[j-1] = A[j]
A[j] = t
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 5 / 25
16. Projeto por Indu¸c˜ao Simples
M´etodo da Bolha (iterativo)
E quantas
trocas de
elementos s˜ao
feitas no arranjo
no pior caso?
Bolha(A, n):
para i = n - 1 at´e 1 fa¸ca:
para j = 1 at´e i fa¸ca:
se A[j-1] > A[j] ent~ao
t = A[j-1]
A[j-1] = A[j]
A[j] = t
O(n)
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 5 / 25
17. Projeto por Indu¸c˜ao Simples
M´etodo da Bolha (iterativo)
E quantas
trocas de
elementos s˜ao
feitas no arranjo
no pior caso?
Bolha(A, n):
para i = n - 1 at´e 1 fa¸ca:
para j = 1 at´e i fa¸ca:
se A[j-1] > A[j] ent~ao
t = A[j-1]
A[j-1] = A[j]
A[j] = t
O(n) × O(n)
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 5 / 25
18. Projeto por Indu¸c˜ao Simples
M´etodo da Bolha (iterativo)
E quantas
trocas de
elementos s˜ao
feitas no arranjo
no pior caso?
Bolha(A, n):
para i = n - 1 at´e 1 fa¸ca:
para j = 1 at´e i fa¸ca:
se A[j-1] > A[j] ent~ao
t = A[j-1]
A[j-1] = A[j]
A[j] = t
O(n) × O(n) = O(n2
)
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 5 / 25
19. Algoritmos de Ordena¸c˜ao
Cota Inferior
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 6 / 25
20. Ordena¸c˜ao: Cota Inferior
Vimos diversos algoritmos para o problema da
ordena¸c˜ao
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 7 / 25
21. Ordena¸c˜ao: Cota Inferior
Vimos diversos algoritmos para o problema da
ordena¸c˜ao
Todos eles tˆem algo em comum:
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 7 / 25
22. Ordena¸c˜ao: Cota Inferior
Vimos diversos algoritmos para o problema da
ordena¸c˜ao
Todos eles tˆem algo em comum:
Usam somente compara¸c˜oes entre elementos do conjunto a
ser ordenado para definir a posi¸c˜ao relativa desses elementos
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 7 / 25
23. Ordena¸c˜ao: Cota Inferior
Vimos diversos algoritmos para o problema da
ordena¸c˜ao
Todos eles tˆem algo em comum:
Usam somente compara¸c˜oes entre elementos do conjunto a
ser ordenado para definir a posi¸c˜ao relativa desses elementos
Ou seja, o resultado da compara¸c˜ao de xi com xj , i = j,
define se xi ser´a posicionado antes ou depois de xj no
conjunto ordenado
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 7 / 25
24. Ordena¸c˜ao: Cota Inferior
Vimos diversos algoritmos para o problema da
ordena¸c˜ao
Todos eles tˆem algo em comum:
Usam somente compara¸c˜oes entre elementos do conjunto a
ser ordenado para definir a posi¸c˜ao relativa desses elementos
Ou seja, o resultado da compara¸c˜ao de xi com xj , i = j,
define se xi ser´a posicionado antes ou depois de xj no
conjunto ordenado
Todos os algoritmos d˜ao uma cota superior para o
n´umero de compara¸c˜oes efetuadas ao resolver o
problema da ordena¸c˜ao
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 7 / 25
25. Ordena¸c˜ao: Cota Inferior
A menor cota superior dada pelos algoritmos at´e
ent˜ao ´e O(n2
), relativa ao n´umero de compara¸c˜oes
no pior caso
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 8 / 25
26. Ordena¸c˜ao: Cota Inferior
A menor cota superior dada pelos algoritmos at´e
ent˜ao ´e O(n2
), relativa ao n´umero de compara¸c˜oes
no pior caso
Ser´a que ´e poss´ıvel projetar um algoritmo de
ordena¸c˜ao baseado em compara¸c˜oes
assintoticamente mais eficiente que isso?
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 8 / 25
27. Ordena¸c˜ao: Cota Inferior
A menor cota superior dada pelos algoritmos at´e
ent˜ao ´e O(n2
), relativa ao n´umero de compara¸c˜oes
no pior caso
Ser´a que ´e poss´ıvel projetar um algoritmo de
ordena¸c˜ao baseado em compara¸c˜oes
assintoticamente mais eficiente que isso?
Sim
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 8 / 25
28. Ordena¸c˜ao: Cota Inferior
A menor cota superior dada pelos algoritmos at´e
ent˜ao ´e O(n2
), relativa ao n´umero de compara¸c˜oes
no pior caso
Ser´a que ´e poss´ıvel projetar um algoritmo de
ordena¸c˜ao baseado em compara¸c˜oes
assintoticamente mais eficiente que isso?
Sim
Qualquer algoritmo que ordena n elementos,
baseado apenas em compara¸c˜oes, efetua no m´ınimo
Ω(nlog(n)) compara¸c˜oes no pior caso
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 8 / 25
29. Ordena¸c˜ao: Cota Inferior
Para demonstrar isso, vamos representar os
algoritmos de ordena¸c˜ao em um modelo
computacional abstrato: a ´arvore (bin´aria) de
decis˜ao
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 9 / 25
30. Ordena¸c˜ao: Cota Inferior
Para demonstrar isso, vamos representar os
algoritmos de ordena¸c˜ao em um modelo
computacional abstrato: a ´arvore (bin´aria) de
decis˜ao
´Arvores de Decis˜ao
Uma ´arvore de decis˜ao ´e uma representa¸c˜ao gr´afica
formada por um conjunto de n´os, unidos entre si
por arestas
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 9 / 25
31. Ordena¸c˜ao: Cota Inferior
Para demonstrar isso, vamos representar os
algoritmos de ordena¸c˜ao em um modelo
computacional abstrato: a ´arvore (bin´aria) de
decis˜ao
´Arvores de Decis˜ao
Uma ´arvore de decis˜ao ´e uma representa¸c˜ao gr´afica
formada por um conjunto de n´os, unidos entre si
por arestas
Cada n´o representa um ponto de decis˜ao
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 9 / 25
32. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao
Cada aresta saindo do n´o representa a decis˜ao
tomada, levando a outro n´o, ou seja, a outro ponto
de decis˜ao
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 10 / 25
33. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao
Cada aresta saindo do n´o representa a decis˜ao
tomada, levando a outro n´o, ou seja, a outro ponto
de decis˜ao
Toda a representa¸c˜ao come¸ca em um n´o inicial, a
raiz da ´arvore, que representa o primeiro ponto de
decis˜ao
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 10 / 25
34. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao
Cada aresta saindo do n´o representa a decis˜ao
tomada, levando a outro n´o, ou seja, a outro ponto
de decis˜ao
Toda a representa¸c˜ao come¸ca em um n´o inicial, a
raiz da ´arvore, que representa o primeiro ponto de
decis˜ao
Terminando ent˜ao nos resultados finais das decis˜oes,
as folhas, a partir das quais mais nenhuma decis˜ao
´e tomada
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 10 / 25
35. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao
No caso das ´arvores bin´arias de decis˜ao, cada n´o
possui apenas duas sub´arvores
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 11 / 25
36. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao
No caso das ´arvores bin´arias de decis˜ao, cada n´o
possui apenas duas sub´arvores
Tipicamente, as duas sub´arvores representam os caminhos a
serem seguidos conforme o resultado (verdadeiro ou falso)
da compara¸c˜ao efetuada
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 11 / 25
37. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao
No caso das ´arvores bin´arias de decis˜ao, cada n´o
possui apenas duas sub´arvores
Tipicamente, as duas sub´arvores representam os caminhos a
serem seguidos conforme o resultado (verdadeiro ou falso)
da compara¸c˜ao efetuada
As folhas s˜ao as respostas poss´ıveis do algoritmo
ap´os as decis˜oes tomadas ao longo dos caminhos da
raiz at´e as folhas
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 11 / 25
38. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 12 / 25
39. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao
n´os
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 12 / 25
40. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao
arestas
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 12 / 25
41. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao
raiz
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 12 / 25
42. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao
folhas
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 12 / 25
43. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao
sub´arvore
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 12 / 25
44. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao
No caso da ordena¸c˜ao, os n´os internos representam
compara¸c˜oes feitas pelo algoritmo
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 13 / 25
45. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao
No caso da ordena¸c˜ao, os n´os internos representam
compara¸c˜oes feitas pelo algoritmo
As arestas representam os poss´ıveis resultados
dessas compara¸c˜oes
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 13 / 25
46. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao
No caso da ordena¸c˜ao, os n´os internos representam
compara¸c˜oes feitas pelo algoritmo
As arestas representam os poss´ıveis resultados
dessas compara¸c˜oes
E as sub´arvores de cada n´o interno representam
possibilidades de continuidade das a¸c˜oes do
algoritmo ap´os a compara¸c˜ao
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 13 / 25
47. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao – Ordena¸c˜ao
Considere a seguinte defini¸c˜ao alternativa do
problema da ordena¸c˜ao:
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 14 / 25
48. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao – Ordena¸c˜ao
Considere a seguinte defini¸c˜ao alternativa do
problema da ordena¸c˜ao:
Dado um conjunto de n valores x1, x2, . . . , xn,
encontre uma permuta¸c˜ao p dos ´ındices 1 ≤ i ≤ n
tal que xp(1) ≤ xp(2) ≤ . . . ≤ xp(n)
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 14 / 25
49. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao – Ordena¸c˜ao
Considere a seguinte defini¸c˜ao alternativa do
problema da ordena¸c˜ao:
Dado um conjunto de n valores x1, x2, . . . , xn,
encontre uma permuta¸c˜ao p dos ´ındices 1 ≤ i ≤ n
tal que xp(1) ≤ xp(2) ≤ . . . ≤ xp(n)
Representaremos uma permuta¸c˜ao como
p(1), p(2), . . . , p(n) , significando uma ordem espec´ıfica
dos valores x1, x2, . . . , xn
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 14 / 25
50. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao – Ordena¸c˜ao
Considere a seguinte defini¸c˜ao alternativa do
problema da ordena¸c˜ao:
Dado um conjunto de n valores x1, x2, . . . , xn,
encontre uma permuta¸c˜ao p dos ´ındices 1 ≤ i ≤ n
tal que xp(1) ≤ xp(2) ≤ . . . ≤ xp(n)
Representaremos uma permuta¸c˜ao como
p(1), p(2), . . . , p(n) , significando uma ordem espec´ıfica
dos valores x1, x2, . . . , xn
Ex: 3, 1, 2 significa a permuta¸c˜ao x3, x1, x2 da entrada
x1, x2, x3
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 14 / 25
51. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao – Ordena¸c˜ao
´E poss´ıvel representar um algoritmo para o problema
da ordena¸c˜ao atrav´es de uma ´arvore de decis˜ao da
seguinte forma:
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 15 / 25
52. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao – Ordena¸c˜ao
´E poss´ıvel representar um algoritmo para o problema
da ordena¸c˜ao atrav´es de uma ´arvore de decis˜ao da
seguinte forma:
Os n´os internos representam compara¸c˜oes entre dois
elementos do conjunto, ex: xi ≤ xj
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 15 / 25
53. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao – Ordena¸c˜ao
´E poss´ıvel representar um algoritmo para o problema
da ordena¸c˜ao atrav´es de uma ´arvore de decis˜ao da
seguinte forma:
Os n´os internos representam compara¸c˜oes entre dois
elementos do conjunto, ex: xi ≤ xj
As ramifica¸c˜oes representam os poss´ıveis resultados da
compara¸c˜ao: verdadeiro se xi ≤ xj , ou falso se xi > xj
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 15 / 25
54. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao – Ordena¸c˜ao
´E poss´ıvel representar um algoritmo para o problema
da ordena¸c˜ao atrav´es de uma ´arvore de decis˜ao da
seguinte forma:
Os n´os internos representam compara¸c˜oes entre dois
elementos do conjunto, ex: xi ≤ xj
As ramifica¸c˜oes representam os poss´ıveis resultados da
compara¸c˜ao: verdadeiro se xi ≤ xj , ou falso se xi > xj
As folhas representam poss´ıveis solu¸c˜oes: as diferentes
permuta¸c˜oes dos n ´ındices
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 15 / 25
55. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao: Ordena¸c˜ao
Ex: ´Arvore de decis˜ao para o m´etodo da Inser¸c˜ao,
com arranjo de 3 elementos:
x1 ≤ x2
x2 ≤ x3 x1 ≤ x3
sim n˜ao
1, 2, 3 x1 ≤ x3
sim n˜ao
2, 1, 3 x2 ≤ x3
sim n˜ao
1, 3, 2 3, 1, 2
sim n˜ao
2, 3, 1 3, 2, 1
sim n˜ao
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 16 / 25
56. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao: Ordena¸c˜ao
Ex: ´Arvore de decis˜ao para o m´etodo da Inser¸c˜ao,
com arranjo de 3 elementos:
x1 ≤ x2
x2 ≤ x3 x1 ≤ x3
sim n˜ao
1, 2, 3 x1 ≤ x3
sim n˜ao
2, 1, 3 x2 ≤ x3
sim n˜ao
1, 3, 2 3, 1, 2
sim n˜ao
2, 3, 1 3, 2, 1
sim n˜ao
permuta¸c˜oes
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 16 / 25
57. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao: Ordena¸c˜ao
Ex: ´Arvore de decis˜ao para o m´etodo da Inser¸c˜ao,
com arranjo de 3 elementos:
x1 ≤ x2
x2 ≤ x3 x1 ≤ x3
sim n˜ao
1, 2, 3 x1 ≤ x3
sim n˜ao
2, 1, 3 x2 ≤ x3
sim n˜ao
1, 3, 2 3, 1, 2
sim n˜ao
2, 3, 1 3, 2, 1
sim n˜ao
1, 2, 3 significa
a permuta¸c˜ao
x1, x2, x3 da entrada
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 16 / 25
66. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao: Ordena¸c˜ao
Ao representarmos um algoritmo de ordena¸c˜ao
baseado em compara¸c˜oes com uma ´arvore bin´aria
de decis˜ao, todas as permuta¸c˜oes de n elementos
devem ser poss´ıveis solu¸c˜oes
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 18 / 25
67. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao: Ordena¸c˜ao
Ao representarmos um algoritmo de ordena¸c˜ao
baseado em compara¸c˜oes com uma ´arvore bin´aria
de decis˜ao, todas as permuta¸c˜oes de n elementos
devem ser poss´ıveis solu¸c˜oes
Assim, a ´arvore bin´aria de decis˜ao deve ter pelo
menos n! folhas
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 18 / 25
68. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao: Ordena¸c˜ao
Ao representarmos um algoritmo de ordena¸c˜ao
baseado em compara¸c˜oes com uma ´arvore bin´aria
de decis˜ao, todas as permuta¸c˜oes de n elementos
devem ser poss´ıveis solu¸c˜oes
Assim, a ´arvore bin´aria de decis˜ao deve ter pelo
menos n! folhas
Pode ter mais, pois nada impede que duas sequˆencias
distintas de decis˜oes terminem no mesmo resultado
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 18 / 25
69. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao: Ordena¸c˜ao
A execu¸c˜ao do
algoritmo de
ordena¸c˜ao
corresponde a
tra¸car um
caminho da raiz a
uma folha
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 19 / 25
70. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao: Ordena¸c˜ao
A execu¸c˜ao do
algoritmo de
ordena¸c˜ao
corresponde a
tra¸car um
caminho da raiz a
uma folha
x1 ≤ x2
x2 ≤ x3 x1 ≤ x3
sim n˜ao
1, 2, 3 x1 ≤ x3
sim n˜ao
2, 1, 3 x2 ≤ x3
sim n˜ao
1, 3, 2 3, 1, 2
sim n˜ao
2, 3, 1 3, 2, 1
sim n˜ao
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 19 / 25
71. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao: Ordena¸c˜ao
A execu¸c˜ao do
algoritmo de
ordena¸c˜ao
corresponde a
tra¸car um
caminho da raiz a
uma folha
x1 ≤ x2
x2 ≤ x3 x1 ≤ x3
sim n˜ao
1, 2, 3 x1 ≤ x3
sim n˜ao
2, 1, 3 x2 ≤ x3
sim n˜ao
1, 3, 2 3, 1, 2
sim n˜ao
2, 3, 1 3, 2, 1
sim n˜ao
O caminho mais longo da raiz a uma folha representa o pior
caso de execu¸c˜ao do algoritmo
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 19 / 25
72. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao: Ordena¸c˜ao
A altura de uma ´arvore bin´aria de decis˜ao
representa o n´umero de compara¸c˜oes, no pior caso,
que o algoritmo por ela representado executa
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 20 / 25
73. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao: Ordena¸c˜ao
A altura de uma ´arvore bin´aria de decis˜ao
representa o n´umero de compara¸c˜oes, no pior caso,
que o algoritmo por ela representado executa
A altura (h) de uma ´arvore ´e o comprimento do caminho
mais longo da raiz at´e qualquer uma de suas folhas
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 20 / 25
74. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao: Ordena¸c˜ao
A altura de uma ´arvore bin´aria de decis˜ao
representa o n´umero de compara¸c˜oes, no pior caso,
que o algoritmo por ela representado executa
A altura (h) de uma ´arvore ´e o comprimento do caminho
mais longo da raiz at´e qualquer uma de suas folhas
Ent˜ao um limite inferior nas alturas de todas as
´arvores de decis˜ao nas quais cada permuta¸c˜ao
aparece em uma folha ´e um limite inferior para o
tempo de execu¸c˜ao de qualquer algoritmo de
ordena¸c˜ao baseado em compara¸c˜oes
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 20 / 25
75. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao: Ordena¸c˜ao
E qual ´e esse limite?
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 21 / 25
76. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao: Ordena¸c˜ao
E qual ´e esse limite?
Na busca bin´aria, vimos que uma ´arvore bin´aria de
decis˜ao T com altura h tem, no m´aximo, 2h
folhas
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 21 / 25
77. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao: Ordena¸c˜ao
E qual ´e esse limite?
Na busca bin´aria, vimos que uma ´arvore bin´aria de
decis˜ao T com altura h tem, no m´aximo, 2h
folhas
Portanto, se T tem n! folhas, ent˜ao n! ≤ 2h
, ou seja
h ≥ log2(n!)
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 21 / 25
78. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao: Ordena¸c˜ao
log2(n!) = log2(
n
i=1
i)
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 22 / 25
79. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao: Ordena¸c˜ao
log2(n!) = log2(
n
i=1
i)
=
n
i=1
log2(i)
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 22 / 25
80. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao: Ordena¸c˜ao
log2(n!) = log2(
n
i=1
i)
=
n
i=1
log2(i)
≥
n
i=n/2
log2(i)
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 22 / 25
81. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao: Ordena¸c˜ao
log2(n!) = log2(
n
i=1
i)
=
n
i=1
log2(i)
≥
n
i=n/2
log2(i)
≥
n
i=n/2
log2(
n
2
)
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 22 / 25
82. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao: Ordena¸c˜ao
log2(n!) = log2(
n
i=1
i)
=
n
i=1
log2(i)
≥
n
i=n/2
log2(i)
≥
n
i=n/2
log2(
n
2
)
= (n − n
2
)log2(n
2
)
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 22 / 25
83. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao: Ordena¸c˜ao
log2(n!) ≥ (n − n
2
)log2(n
2
)
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 23 / 25
84. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao: Ordena¸c˜ao
log2(n!) ≥ (n − n
2
)log2(n
2
)
= n
2
log2(n
2
)
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 23 / 25
85. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao: Ordena¸c˜ao
log2(n!) ≥ (n − n
2
)log2(n
2
)
= n
2
log2(n
2
)
= n
2
(log2(n) − log22)
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 23 / 25
86. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao: Ordena¸c˜ao
log2(n!) ≥ (n − n
2
)log2(n
2
)
= n
2
log2(n
2
)
= n
2
(log2(n) − log22)
= n
2
(log2(n) − 1)
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 23 / 25
87. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao: Ordena¸c˜ao
log2(n!) ≥ (n − n
2
)log2(n
2
)
= n
2
log2(n
2
)
= n
2
(log2(n) − log22)
= n
2
(log2(n) − 1)
= n
2
log2(n) − n
2
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 23 / 25
88. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao: Ordena¸c˜ao
log2(n!) ≥ (n − n
2
)log2(n
2
)
= n
2
log2(n
2
)
= n
2
(log2(n) − log22)
= n
2
(log2(n) − 1)
= n
2
log2(n) − n
2
= Ω(nlog2(n)), n ≥ 4, c = 1
4
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 23 / 25
89. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao: Ordena¸c˜ao
Portanto, h = Ω(nlog(n))
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 24 / 25
90. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao: Ordena¸c˜ao
Portanto, h = Ω(nlog(n))
Lembrando que a altura h representa o n´umero de
compara¸c˜oes, no pior caso, que o algoritmo executa
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 24 / 25
91. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao: Ordena¸c˜ao
Portanto, h = Ω(nlog(n))
Lembrando que a altura h representa o n´umero de
compara¸c˜oes, no pior caso, que o algoritmo executa
Temos ent˜ao uma cota inferior para ordena¸c˜ao
baseada em compara¸c˜oes
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 24 / 25
92. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao: Ordena¸c˜ao
Portanto, h = Ω(nlog(n))
Lembrando que a altura h representa o n´umero de
compara¸c˜oes, no pior caso, que o algoritmo executa
Temos ent˜ao uma cota inferior para ordena¸c˜ao
baseada em compara¸c˜oes
Mas nossos algoritmos, at´e agora, s˜ao Θ(n2
) ⇒ Ω(n2
)
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 24 / 25
93. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao: Ordena¸c˜ao
Portanto, h = Ω(nlog(n))
Lembrando que a altura h representa o n´umero de
compara¸c˜oes, no pior caso, que o algoritmo executa
Temos ent˜ao uma cota inferior para ordena¸c˜ao
baseada em compara¸c˜oes
Mas nossos algoritmos, at´e agora, s˜ao Θ(n2
) ⇒ Ω(n2
)
Haveria algum algoritmo de ordena¸c˜ao, baseado em
compara¸c˜oes, que seja Θ(nlog(n))?
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 24 / 25
94. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao: Ordena¸c˜ao
Portanto, h = Ω(nlog(n))
Lembrando que a altura h representa o n´umero de
compara¸c˜oes, no pior caso, que o algoritmo executa
Temos ent˜ao uma cota inferior para ordena¸c˜ao
baseada em compara¸c˜oes
Mas nossos algoritmos, at´e agora, s˜ao Θ(n2
) ⇒ Ω(n2
)
Haveria algum algoritmo de ordena¸c˜ao, baseado em
compara¸c˜oes, que seja Θ(nlog(n))?
Ou seja, um algoritmo ´otimo
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 24 / 25
95. Ordena¸c˜ao: Cota Inferior
´Arvores de Decis˜ao: Ordena¸c˜ao
Portanto, h = Ω(nlog(n))
Lembrando que a altura h representa o n´umero de
compara¸c˜oes, no pior caso, que o algoritmo executa
Temos ent˜ao uma cota inferior para ordena¸c˜ao
baseada em compara¸c˜oes
Mas nossos algoritmos, at´e agora, s˜ao Θ(n2
) ⇒ Ω(n2
)
Haveria algum algoritmo de ordena¸c˜ao, baseado em
compara¸c˜oes, que seja Θ(nlog(n))?
Ou seja, um algoritmo ´otimo
Na pr´oxima aula...
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 24 / 25
96. Referˆencias
Cormen, Thomas H., Leiserson, Charles E., Rivest, Ronald L.,
Stein, Clifford. Introduction to Algorithms. 2a ed. MIT Press,
2001.
Material baseado em slides dos professores Cid de Souza,
Cˆandida da Silva e Delano Beder
Norton Trevisan Romannorton@usp.br Aula 13 – Algoritmos de Ordena¸c˜ao: Modelo Incremental e Cota Inferior2 de outubro de 2018 25 / 25