Heapsort - ime.usp.br coelho/mac5711-2004/aulas/material/aula8.pdf · Heapsort CLRS 6 (veja tb CLRS…

Embed Size (px)

Text of Heapsort - ime.usp.br coelho/mac5711-2004/aulas/material/aula8.pdf · Heapsort CLRS 6 (veja tb...

AULA 8

Algoritmos p.349/434

Heapsort

CLRS 6

(veja tb CLRS B.5.3)

Merge sort ilustrou uma tcnica (ou paradigma, ou estratgia) de concepo de algoritmoseficientes: a diviso e conquista.

Heapsort ilustra o uso de estruturas de dados no projeto de algoritmos eficientes.

Algoritmos p.350/434

Ordenao

A[1 . . n] crescente se A[1] A[n].

Problema: Rearranjar um vetor A[1 . . n] de mode que elefique crescente.

Entra:

1 n

33 55 33 44 33 22 11 99 22 55 77

Sai:

1 n

11 22 22 33 33 33 44 55 55 77 99

Algoritmos p.351/434

Ordenao

A[1 . . n] crescente se A[1] A[n].

Problema: Rearranjar um vetor A[1 . . n] de mode que elefique crescente.

Entra:

1 n

33 55 33 44 33 22 11 99 22 55 77

Sai:

1 n

11 22 22 33 33 33 44 55 55 77 99

Algoritmos p.351/434

Ordenao por seleom = 5

1 max n

38 50 20 44 10 50 55 60 75 85 99

Algoritmos p.352/434

Ordenao por seleom = 5

1 j max n

38 50 20 44 10 50 55 60 75 85 99

1 j max n

38 50 20 44 10 50 55 60 75 85 99

1 j max n

38 50 20 44 10 50 55 60 75 85 99

j max n

38 50 20 44 10 50 55 60 75 85 99

1 max n

38 50 20 44 10 50 55 60 75 85 99

Algoritmos p.353/434

Ordenao por seleom = 5

1 j max n

38 50 20 44 10 50 55 60 75 85 99

1 j max n

38 50 20 44 10 50 55 60 75 85 99

1 j max n

38 50 20 44 10 50 55 60 75 85 99

j max n

38 50 20 44 10 50 55 60 75 85 99

1 max n

38 50 20 44 10 50 55 60 75 85 99

Algoritmos p.353/434

Ordenao por seleom = 5

1 j max n

38 50 20 44 10 50 55 60 75 85 99

1 j max n

38 50 20 44 10 50 55 60 75 85 99

1 j max n

38 50 20 44 10 50 55 60 75 85 99

j max n

38 50 20 44 10 50 55 60 75 85 99

1 max n

38 50 20 44 10 50 55 60 75 85 99

Algoritmos p.353/434

Ordenao por seleom = 5

1 j max n

38 50 20 44 10 50 55 60 75 85 99

1 j max n

38 50 20 44 10 50 55 60 75 85 99

1 j max n

38 50 20 44 10 50 55 60 75 85 99

j max n

38 50 20 44 10 50 55 60 75 85 99

1 max n

38 50 20 44 10 50 55 60 75 85 99

Algoritmos p.353/434

Ordenao por seleom = 5

1 j max n

38 50 20 44 10 50 55 60 75 85 99

1 j max n

38 50 20 44 10 50 55 60 75 85 99

1 j max n

38 50 20 44 10 50 55 60 75 85 99

j max n

38 50 20 44 10 50 55 60 75 85 99

1 max n

38 50 20 44 10 50 55 60 75 85 99

Algoritmos p.353/434

Ordenao por seleo

1 m n

38 10 20 44 50 50 55 60 75 85 99

1 m n

38 10 20 44 50 50 55 60 75 85 99

1 m n

20 10 38 44 50 50 55 60 75 85 99

1 m n

10 20 38 44 50 50 55 60 75 85 99

1 n

10 20 38 44 50 50 55 60 75 85 99

Algoritmos p.354/434

Ordenao por seleo

1 m n

38 10 20 44 50 50 55 60 75 85 99

1 m n

20 10 38 44 50 50 55 60 75 85 99

1 m n

10 20 38 44 50 50 55 60 75 85 99

1 n

10 20 38 44 50 50 55 60 75 85 99

Algoritmos p.354/434

Ordenao por seleo

1 m n

38 10 20 44 50 50 55 60 75 85 99

1 m n

38 10 20 44 50 50 55 60 75 85 99

1 m n

20 10 38 44 50 50 55 60 75 85 99

1 m n

10 20 38 44 50 50 55 60 75 85 99

1 n

10 20 38 44 50 50 55 60 75 85 99

Algoritmos p.354/434

Ordenao por seleo

1 m n

38 10 20 44 50 50 55 60 75 85 99

1 m n

20 10 38 44 50 50 55 60 75 85 99

1 m n

10 20 38 44 50 50 55 60 75 85 99

1 n

10 20 38 44 50 50 55 60 75 85 99

Algoritmos p.354/434

Ordenao por seleo

1 m n

38 10 20 44 50 50 55 60 75 85 99

1 m n

20 10 38 44 50 50 55 60 75 85 99

1 m n

20 10 38 44 50 50 55 60 75 85 99

1 m n

10 20 38 44 50 50 55 60 75 85 99

1 n

10 20 38 44 50 50 55 60 75 85 99

Algoritmos p.354/434

Ordenao por seleo

1 m n

38 10 20 44 50 50 55 60 75 85 99

1 m n

20 10 38 44 50 50 55 60 75 85 99

1 m n

10 20 38 44 50 50 55 60 75 85 99

1 n

10 20 38 44 50 50 55 60 75 85 99

Algoritmos p.354/434

Ordenao por seleo

1 m n

38 10 20 44 50 50 55 60 75 85 99

1 m n

20 10 38 44 50 50 55 60 75 85 99

1 m n

10 20 38 44 50 50 55 60 75 85 99

1 n

10 20 38 44 50 50 55 60 75 85 99

Algoritmos p.354/434

Ordenao por seleo

Algoritmo rearranja A[1 . . n] em ordem crescente

ORDENA-POR-SELEO (A, n)1 para m n decrescendo at 2 faa

2 max m3 para j m 1 decrescendo at 1 faa4 se A[max ] < A[j]5 ento max j

6 A[m] A[max ]

Algoritmos p.355/434

InvariantesRelao invariante chave:

(i0) na linha 1 vale que: A[m. . n] crescente.

1 m n

38 50 20 44 10 50 55 60 75 85 99

Supondo que a invariante vale. Correo do algoritmo evidente.

No incio da ltima iterao das linhas 16 tem-se quem = 1. Da invariante conclui-se que A[1 . . n] crescente.

Algoritmos p.356/434

InvariantesRelao invariante chave:

(i0) na linha 1 vale que: A[m. . n] crescente.

1 m n

38 50 20 44 10 50 55 60 75 85 99

Supondo que a invariante vale. Correo do algoritmo evidente.

No incio da ltima iterao das linhas 16 tem-se quem = 1. Da invariante conclui-se que A[1 . . n] crescente.

Algoritmos p.356/434

Mais invariantes

Na linha 1 vale que:

(i1) A[1 . . m] A[m+ 1];Na linha 3 vale que:

(i2) A[j + 1 . . m] A[max ]

1 j max m n

38 50 20 44 10 25 55 60 75 85 99

invariantes (i1),(i2)+ condio de parada do para da linha 3+ troca linha 6 validade (i0)

Verifique!

Algoritmos p.357/434

Mais invariantes

Na linha 1 vale que:

(i1) A[1 . . m] A[m+ 1];Na linha 3 vale que:

(i2) A[j + 1 . . m] A[max ]

1 j max m n

38 50 20 44 10 25 55 60 75 85 99

invariantes (i1),(i2)+ condio de parada do para da linha 3+ troca linha 6 validade (i0)

Verifique!

Algoritmos p.357/434

Consumo de tempo

linha todas as execues da linha1 = (n)2 = (n)3 = (n2)4 = (n2)5 = O(n2)6 = (n)

total = (2n2 + 3n) + O(n2) = (n2)

Algoritmos p.358/434

Representao de rvores em vetores

Interferncia!puta que o pariu!!!

PSfrag replacements

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nvel

0

1

2

3

Algoritmos p.359/434

Pais e filhosA[1 . . m] um vetor representando uma rvore.Diremos que para qualquer ndice ou n i,

bi/2c o pai de i;2 i o filho esquerdo de i;

2 i+ 1 o filho direito.

O n 1 no tem pai e chamado de raiz.

Um n i s tem filho esquerdo se 2 i m.Um n i s tem filho direito se 2 i+ 1 m.Um n i um folha se no tem filhos, ou seja 2 i > m.

Todo n i raiz da subrvore formada por

A[i, 2i, 2i+ 1, 4i, 4i+ 1, 4i+ 2, 4i+ 3, 8i, . . . , 8i+ 7, . . .]

Algoritmos p.360/434

NveisCada nvel p, exceto talvez o ltimo, tem exatamente 2p nse esses so

2p, 2p + 1, 2p + 2, . . . , 2p+1 1.

O n i pertence ao nvel blg ic.Prova: Se p o nvel do n i, ento

2p i < 2p+1 lg 2p lg i < lg 2p+1

p lg i < p+ 1

Logo, p = blg ic.

Algoritmos p.361/434

NveisCada nvel p, exceto talvez o ltimo, tem exatamente 2p nse esses so

2p, 2p + 1, 2p + 2, . . . , 2p+1 1.

O n i pertence ao nvel ???.

O n i pertence ao nvel blg ic.Prova: Se p o nvel do n i, ento

2p i < 2p+1 lg 2p lg i < lg 2p+1

p lg i < p+ 1

Logo, p = blg ic.

Algoritmos p.361/434

NveisCada nvel p, exceto talvez o ltimo, tem exatamente 2p nse esses so

2p, 2p + 1, 2p + 2, . . . , 2p+1 1.

O n i pertence ao nvel blg ic.Prova: Se p o nvel do n i, ento

2p i < 2p+1 lg 2p lg i < lg 2p+1

p lg i < p+ 1

Logo, p = blg ic.

Algoritmos p.361/434

NveisCada nvel p, exceto talvez o ltimo, tem exatamente 2p nse esses so

2p, 2p + 1, 2p + 2, . . . , 2p+1 1.

O n i pertence ao nvel blg ic.Prova: Se p o nvel do n i, ento

2p i < 2p+1 lg 2p lg i < lg 2p+1

p lg i < p+ 1

Logo, p = blg ic.Portanto o nmero total de nveis ???.

Algoritmos p.361/434

NveisCada nvel p, exceto talvez o ltimo, tem exatamente 2p nse esses so

2p, 2p + 1, 2p + 2, . . . , 2p+1 1.

O n i pertence ao nvel blg ic.Prova: Se p o nvel do n i, ento

2p i < 2p+1 lg 2p lg i < lg 2p+1

p lg i < p+ 1

Logo, p = blg ic.Portanto, o nmero total de nveis 1 + blgmc.

Algoritmos p.361/434

Altura

A altura de um n i o maior comprimento de um caminhode i a uma folha.

Em outras palavras, a altura de um n i o maiorcomprimento de uma seqncia da forma

filho(i), filho(filho(i)), filho(filho(filho(i))), . . .

onde filho(i) vale 2i ou 2i+ 1.

Os ns que tm altura zero so as folhas.

Algoritmos p.362/434

Altura

A altura de um n i o maior comprimento de um caminho