Top Banner
MC458 — Projeto e An ´ alise de Algoritmos I C.C. de Souza C.N. da Silva O. Lee P.J. de Rezende 2 o . Semestre de 2012 C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e An ´ alise de Algoritmos I v. 2.2
326

MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Nov 09, 2018

Download

Documents

trinhbao
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

MC458 — Projeto e Analise de Algoritmos I

C.C. de Souza C.N. da Silva O. Lee P.J. de Rezende

2o. Semestre de 2012

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 2: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Ordenacao

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 3: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

O problema da ordenacao

Problema:

Rearranjar um vetor A[1 . . . n] de inteiros de modo que fique emordem crescente.

Ou simplesmente:

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 4: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

O problema da ordenacao

Problema:

Rearranjar um vetor A[1 . . . n] de inteiros de modo que fique emordem crescente.

Ou simplesmente:

Problema:

Ordenar um vetor A[1 . . . n] de inteiros.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 5: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Algoritmos de ordenacao

Veremos varios algoritmos de ordenacao:

Insertion sort

Selection sort

Mergesort

Heapsort

Quicksort

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 6: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Insertion sort

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 7: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Insertion sort

Ideia basica: a cada passo mantemos o subvetorA[1 . . . j − 1] ordenado e inserimos o elemento A[j]neste subvetor.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 8: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Insertion sort

Ideia basica: a cada passo mantemos o subvetorA[1 . . . j − 1] ordenado e inserimos o elemento A[j]neste subvetor.

Repetimos o processo para j = 2, . . . , n e ordenamos ovetor.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 9: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Insertion sort – pseudo-codigo

INSERTION-SORT(A, n)1 para j ← 2 ate n faca2 chave ← A[j]3 Insere A[j] no subvetor ordenado A[1..j − 1]4 i ← j − 15 enquanto i ≥ 1 e A[i] > chave faca6 A[i + 1] ← A[i]7 i ← i − 18 A[i + 1] ← chave

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 10: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Insertion sort – pseudo-codigo

INSERTION-SORT(A, n)1 para j ← 2 ate n faca2 chave ← A[j]3 Insere A[j] no subvetor ordenado A[1..j − 1]4 i ← j − 15 enquanto i ≥ 1 e A[i] > chave faca6 A[i + 1] ← A[i]7 i ← i − 18 A[i + 1] ← chave

Ja analisamos antes a corretude e complexidade.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 11: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Insertion sort – pseudo-codigo

INSERTION-SORT(A, n)1 para j ← 2 ate n faca2 chave ← A[j]3 Insere A[j] no subvetor ordenado A[1..j − 1]4 i ← j − 15 enquanto i ≥ 1 e A[i] > chave faca6 A[i + 1] ← A[i]7 i ← i − 18 A[i + 1] ← chave

Ja analisamos antes a corretude e complexidade.

Vamos analisar novamente a complexidade usando a notacaoassintotica.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 12: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Complexidade de tempo de Insertion sort

INSERTION-SORT(A, n) Tempo

1 para j ← 2 ate n faca ?2 chave ← A[j] ?3 Insere A[j] em A[1 . . . j − 1] ?4 i ← j − 1 ?5 enquanto i ≥ 1 e A[i] > chave faca ?6 A[i + 1] ← A[i] ?7 i ← i − 1 ?8 A[i + 1] ← chave ?

Consumo de tempo no pior caso: ?

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 13: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Complexidade de tempo de Insertion sort

INSERTION-SORT(A, n) Tempo

1 para j ← 2 ate n faca Θ(n)2 chave ← A[j] Θ(n)3 Insere A[j] em A[1 . . . j − 1]4 i ← j − 1 Θ(n)5 enquanto i ≥ 1 e A[i] > chave faca nO(n) = O(n2)6 A[i + 1] ← A[i] nO(n) = O(n2)7 i ← i − 1 nO(n) = O(n2)8 A[i + 1] ← chave O(n)

Consumo de tempo: O(n2)

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 14: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Insertion sort

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 15: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Insertion sort

Complexidade de tempo no pior caso: Θ(n2)Vetor em ordem decrescenteΘ(n2) comparacoesΘ(n2) movimentacoes

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 16: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Insertion sort

Complexidade de tempo no pior caso: Θ(n2)Vetor em ordem decrescenteΘ(n2) comparacoesΘ(n2) movimentacoes

Complexidade de tempo no melhor caso: Θ(n)(vetor em ordem crescente)O(n) comparacoeszero movimentacoes

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 17: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Insertion sort

Complexidade de tempo no pior caso: Θ(n2)Vetor em ordem decrescenteΘ(n2) comparacoesΘ(n2) movimentacoes

Complexidade de tempo no melhor caso: Θ(n)(vetor em ordem crescente)O(n) comparacoeszero movimentacoes

Complexidade de espaco/consumo espaco: Θ(n)

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 18: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Um pouco de terminologia

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 19: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Um pouco de terminologia

Um algoritmo A tem complexidade de tempo (no piorcaso) O(f (n)) se para qualquer entrada de tamanho n elegasta tempo no maximo O(f (n)).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 20: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Um pouco de terminologia

Um algoritmo A tem complexidade de tempo (no piorcaso) O(f (n)) se para qualquer entrada de tamanho n elegasta tempo no maximo O(f (n)).

Um algoritmo A tem complexidade de tempo no pior casoΘ(f (n)) se para qualquer entrada de tamanho n ele gastatempo no maximo O(f (n)) e para alguma entrada detamanho n ele gasta tempo pelo menos Ω(f (n)).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 21: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Um pouco de terminologia

Um algoritmo A tem complexidade de tempo (no piorcaso) O(f (n)) se para qualquer entrada de tamanho n elegasta tempo no maximo O(f (n)).

Um algoritmo A tem complexidade de tempo no pior casoΘ(f (n)) se para qualquer entrada de tamanho n ele gastatempo no maximo O(f (n)) e para alguma entrada detamanho n ele gasta tempo pelo menos Ω(f (n)).

Por exemplo, INSERTION SORT tem complexidade detempo no pior caso Θ(n2).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 22: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Um pouco de terminologia

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 23: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Um pouco de terminologia

Faz sentido dizer que um algoritmo tem complexidade detempo no pior caso pelo menos O(f (n))?

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 24: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Um pouco de terminologia

Faz sentido dizer que um algoritmo tem complexidade detempo no pior caso pelo menos O(f (n))?

Faz sentido dizer que um algoritmo tem complexidade detempo no pior caso Ω(f (n))?

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 25: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Um pouco de terminologia

Faz sentido dizer que um algoritmo tem complexidade detempo no pior caso pelo menos O(f (n))?

Faz sentido dizer que um algoritmo tem complexidade detempo no pior caso Ω(f (n))?

Faz sentido dizer que um algoritmo tem complexidade detempo no melhor caso Ω(f (n))?

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 26: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Selection sort

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 27: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Selection sort

Mantemos um subvetor A[1 . . . i − 1] tal que:

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 28: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Selection sort

Mantemos um subvetor A[1 . . . i − 1] tal que:

1 A[1 . . . i − 1] esta ordenado e

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 29: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Selection sort

Mantemos um subvetor A[1 . . . i − 1] tal que:

1 A[1 . . . i − 1] esta ordenado e2 A[1 . . . i − 1] ≤ A[i . . . n].

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 30: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Selection sort

Mantemos um subvetor A[1 . . . i − 1] tal que:

1 A[1 . . . i − 1] esta ordenado e2 A[1 . . . i − 1] ≤ A[i . . . n].

A cada passo selecionamos o menor elemento emA[i . . . n] e o colocamos em A[i].

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 31: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Selection sort

Mantemos um subvetor A[1 . . . i − 1] tal que:

1 A[1 . . . i − 1] esta ordenado e2 A[1 . . . i − 1] ≤ A[i . . . n].

A cada passo selecionamos o menor elemento emA[i . . . n] e o colocamos em A[i].

Repetimos o processo para i = 1, . . . , n − 1 e ordenamosvetor.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 32: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Selection sort – pseudo-codigo

SELECTION-SORT(A, n)1 para i ← 1 ate n − 1 faca2 min ← i3 para j ← i + 1 ate n faca4 se A[j] < A[min] entao min ← j5 A[i] ↔ A[min]

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 33: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Selection sort – pseudo-codigo

SELECTION-SORT(A, n)1 para i ← 1 ate n − 1 faca2 min ← i3 para j ← i + 1 ate n faca4 se A[j] < A[min] entao min ← j5 A[i] ↔ A[min]

Invariantes:

1 A[1 . . . i − 1] esta ordenado,

2 A[1 . . . i − 1] ≤ A[i . . . n].

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 34: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Complexidade de Selection sort

SELECTION-SORT(A, n) Tempo

1 para i ← 1 ate n − 1 faca ?2 min ← i ?3 para j ← i + 1 ate n faca ?4 se A[j] < A[min] entao min ← j ?5 A[i] ↔ A[min] ?

Consumo de tempo no pior caso: ?

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 35: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Complexidade de Selection sort

SELECTION-SORT(A, n) Tempo

1 para i ← 1 ate n − 1 faca Θ(n)2 min ← i Θ(n)3 para j ← i + 1 ate n faca Θ(n2)4 se A[j] < A[min] entao min ← j Θ(n2)5 A[i] ↔ A[min] Θ(n)

Consumo de tempo no pior caso: O(n2)

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 36: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Selection sort

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 37: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Selection sort

Complexidade de tempo no pior caso: Θ(n2)Θ(n2) comparacoesΘ(n) movimentacoes

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 38: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Selection sort

Complexidade de tempo no pior caso: Θ(n2)Θ(n2) comparacoesΘ(n) movimentacoes

Complexidade de tempo no melhor caso: Θ(n2)Mesmo que o pior caso.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 39: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Selection sort

Complexidade de tempo no pior caso: Θ(n2)Θ(n2) comparacoesΘ(n) movimentacoes

Complexidade de tempo no melhor caso: Θ(n2)Mesmo que o pior caso.

Complexidade de espaco/consumo espaco: Θ(n)

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 40: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Conhecimento geral

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 41: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Conhecimento geral

Para vetores com no maximo 10 elementos, o melhoralgoritmo de ordenacao costuma ser Insertion sort.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 42: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Conhecimento geral

Para vetores com no maximo 10 elementos, o melhoralgoritmo de ordenacao costuma ser Insertion sort.

Para um vetor que esta quase ordenado, Insertion sorttambem e a melhor escolha.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 43: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Conhecimento geral

Para vetores com no maximo 10 elementos, o melhoralgoritmo de ordenacao costuma ser Insertion sort.

Para um vetor que esta quase ordenado, Insertion sorttambem e a melhor escolha.

Algoritmos super-eficientes assintoticamente tendem afazer muitas movimentacoes, enquanto Insertion sort fazpoucas movimentacoes quando o vetor esta quaseordenado.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 44: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Mergesort

O algoritmo Mergesort e um exemplo classico de paradigma dedivisao-e-conquista.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 45: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Mergesort

O algoritmo Mergesort e um exemplo classico de paradigma dedivisao-e-conquista.

Divisao: divida o vetor de n elementos em subvetores detamanhos ⌈n/2⌉ e ⌊n/2⌋.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 46: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Mergesort

O algoritmo Mergesort e um exemplo classico de paradigma dedivisao-e-conquista.

Divisao: divida o vetor de n elementos em subvetores detamanhos ⌈n/2⌉ e ⌊n/2⌋.

Conquista: recursivamente ordene cada subvetor.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 47: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Mergesort

O algoritmo Mergesort e um exemplo classico de paradigma dedivisao-e-conquista.

Divisao: divida o vetor de n elementos em subvetores detamanhos ⌈n/2⌉ e ⌊n/2⌋.

Conquista: recursivamente ordene cada subvetor.

Combinacao: intercale os subvetores ordenados paraobter o vetor ordenado.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 48: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Mergesort – pseudo-codigo

MERGESORT(A, p, r)1 se p < r2 entao q ← ⌊(p + r)/2⌋3 MERGESORT(A, p, q)4 MERGESORT(A, q + 1, r)5 INTERCALA(A, p, q, r)

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 49: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Mergesort – pseudo-codigo

MERGESORT(A, p, r)1 se p < r2 entao q ← ⌊(p + r)/2⌋3 MERGESORT(A, p, q)4 MERGESORT(A, q + 1, r)5 INTERCALA(A, p, q, r)

A complexidade de MERGESORT e dada pela recorrencia:

T (n) = T (⌈n/2⌉) + T (⌊n/2⌋) +O(f (n)),

onde f (n) e a complexidade de INTERCALA.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 50: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Intercalacao

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 51: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Intercalacao

Q que significa intercalar dois (sub)vetores ordenados?

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 52: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Intercalacao

Q que significa intercalar dois (sub)vetores ordenados?

Problema: Dados A[p . . . q] e A[q+1 . . . r ] crescentes,rearranjar A[p . . . r ] de modo que ele fique em ordem crescente.

Entrada:

p q r

A 22 33 55 77 99 11 44 66 88

Saıda:

p q r

A 11 22 33 44 55 66 77 88 99

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 53: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Intercalacao

p q r

A 22 33 55 77 99 11 44 66 88

B

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 54: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Intercalacao

k

A

i j

B 22 33 55 77 99 88 66 44 11

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 55: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Intercalacao

k

A 11

i j

B 22 33 55 77 99 88 66 44 11

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 56: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Intercalacao

k

A 11 22

i j

B 22 33 55 77 99 88 66 44 11

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 57: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Intercalacao

k

A 11 22 33

i j

B 22 33 55 77 99 88 66 44 11

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 58: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Intercalacao

k

A 11 22 33 44

i j

B 22 33 55 77 99 88 66 44 11

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 59: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Intercalacao

k

A 11 22 33 44 55

i j

B 22 33 55 77 99 88 66 44 11

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 60: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Intercalacao

k

A 11 22 33 44 55 66

i j

B 22 33 55 77 99 88 66 44 11

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 61: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Intercalacao

k

A 11 22 33 44 55 66 77

i j

B 22 33 55 77 99 88 66 44 11

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 62: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Intercalacao

k

A 11 22 33 44 55 66 77 88

i = j

B 22 33 55 77 99 88 66 44 11

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 63: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Intercalacao

A 11 22 33 44 55 66 77 88 99

j i

B 22 33 55 77 99 88 66 44 11

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 64: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Intercalacao

Pseudo-codigo

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 65: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Intercalacao

Pseudo-codigo

INTERCALA(A, p, q, r)1 para i ← p ate q faca2 B[i] ← A[i]3 para j ← q + 1 ate r faca4 B[r + q + 1 − j] ← A[j]5 i ← p6 j ← r7 para k ← p ate r faca8 se B[i] ≤ B[j]9 entao A[k ] ← B[i]

10 i ← i + 111 senao A[k ] ← B[j]12 j ← j − 1

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 66: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Complexidade de Intercala

Entrada:

p q r

A 22 33 55 77 99 11 44 66 88

Saıda:

p q r

A 11 22 33 44 55 66 77 88 99

Tamanho da entrada: n = r − p + 1

Consumo de tempo: Θ(n)

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 67: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Corretude de Intercala

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 68: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Corretude de Intercala

Invariante principal de Intercala:

No comeco de cada iteracao do laco das linhas 7–12, vale que:

1 A[p . . . k − 1] esta ordenado,

2 A[p . . . k − 1] contem todos os elementos de B[p . . . i − 1] ede B[j + 1 . . . r ],

3 B[i] ≥ A[k − 1] e B[j] ≥ A[k − 1].

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 69: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Corretude de Intercala

Invariante principal de Intercala:

No comeco de cada iteracao do laco das linhas 7–12, vale que:

1 A[p . . . k − 1] esta ordenado,

2 A[p . . . k − 1] contem todos os elementos de B[p . . . i − 1] ede B[j + 1 . . . r ],

3 B[i] ≥ A[k − 1] e B[j] ≥ A[k − 1].

Exercıcio. Prove que a afirmacao acima e de fato uminvariante de INTERCALA.

Exercıcio. (facil) Mostre usando o invariante acima queINTERCALA e correto.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 70: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Corretude do Mergesort

MERGESORT(A, p, r)1 se p < r2 entao q ← ⌊(p + r)/2⌋3 MERGESORT(A, p, q)4 MERGESORT(A, q + 1, r)5 INTERCALA(A, p, q, r)

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 71: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Corretude do Mergesort

MERGESORT(A, p, r)1 se p < r2 entao q ← ⌊(p + r)/2⌋3 MERGESORT(A, p, q)4 MERGESORT(A, q + 1, r)5 INTERCALA(A, p, q, r)

O algoritmo esta correto?

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 72: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Corretude do Mergesort

MERGESORT(A, p, r)1 se p < r2 entao q ← ⌊(p + r)/2⌋3 MERGESORT(A, p, q)4 MERGESORT(A, q + 1, r)5 INTERCALA(A, p, q, r)

O algoritmo esta correto?

A corretude do algoritmo Mergesort apoia-se na corretude doalgoritmo Intercala e segue facilmente por inducaoem n := r − p + 1.

Voce consegue ver por que?

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 73: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Corretude do Mergesort

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 74: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Corretude do Mergesort

Base: Mergesort ordena vetores de tamanho 0 ou 1.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 75: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Corretude do Mergesort

Base: Mergesort ordena vetores de tamanho 0 ou 1.

Hipotese de inducao: Mergesort ordena vetores com < nelementos.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 76: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Corretude do Mergesort

Base: Mergesort ordena vetores de tamanho 0 ou 1.

Hipotese de inducao: Mergesort ordena vetores com < nelementos.

Passo de inducao: por hipotese de inducao, Mergesort ordenaos dois subvetores (de tamanho ⌈n/2⌉ e ⌊n/2⌋).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 77: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Corretude do Mergesort

Base: Mergesort ordena vetores de tamanho 0 ou 1.

Hipotese de inducao: Mergesort ordena vetores com < nelementos.

Passo de inducao: por hipotese de inducao, Mergesort ordenaos dois subvetores (de tamanho ⌈n/2⌉ e ⌊n/2⌋).

Pela corretude de Intercala, segue que o vetor resultante daintercalacao e um vetor ordenado de n elementos.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 78: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Complexidade de Mergesort

MERGESORT(A, p, r)1 se p < r2 entao q ← ⌊(p + r)/2⌋3 MERGESORT(A, p, q)4 MERGESORT(A, q + 1, r)5 INTERCALA(A, p, q, r)

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 79: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Complexidade de Mergesort

MERGESORT(A, p, r)1 se p < r2 entao q ← ⌊(p + r)/2⌋3 MERGESORT(A, p, q)4 MERGESORT(A, q + 1, r)5 INTERCALA(A, p, q, r)

T (n): complexidade de pior caso de MERGESORT

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 80: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Complexidade de Mergesort

MERGESORT(A, p, r)1 se p < r2 entao q ← ⌊(p + r)/2⌋3 MERGESORT(A, p, q)4 MERGESORT(A, q + 1, r)5 INTERCALA(A, p, q, r)

T (n): complexidade de pior caso de MERGESORT

Entao

T (n) = T (⌈n/2⌉) + T (⌊n/2⌋) +Θ(n).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 81: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Complexidade de Mergesort

MERGESORT(A, p, r)1 se p < r2 entao q ← ⌊(p + r)/2⌋3 MERGESORT(A, p, q)4 MERGESORT(A, q + 1, r)5 INTERCALA(A, p, q, r)

T (n): complexidade de pior caso de MERGESORT

Entao

T (n) = T (⌈n/2⌉) + T (⌊n/2⌋) +Θ(n).

A solucao da recorrencia e T (n) = Θ(n lgn).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 82: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Mergesort

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 83: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Mergesort

Complexidade de tempo: Θ(n lgn)Θ(n lgn) comparacoesΘ(n lgn) movimentacoes

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 84: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Mergesort

Complexidade de tempo: Θ(n lgn)Θ(n lgn) comparacoesΘ(n lgn) movimentacoes

O pior caso e o melhor caso tem a mesma complexidade.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 85: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Mergesort

Complexidade de tempo: Θ(n lgn)Θ(n lgn) comparacoesΘ(n lgn) movimentacoes

O pior caso e o melhor caso tem a mesma complexidade.

Complexidade de espaco/consumo espaco: Θ(n)

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 86: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Mergesort

Complexidade de tempo: Θ(n lgn)Θ(n lgn) comparacoesΘ(n lgn) movimentacoes

O pior caso e o melhor caso tem a mesma complexidade.

Complexidade de espaco/consumo espaco: Θ(n)

O Mergesort usa um vetor auxiliar de tamanho n parafazer a intercalacao, mas o espaco ainda e Θ(n).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 87: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Mergesort

Complexidade de tempo: Θ(n lgn)Θ(n lgn) comparacoesΘ(n lgn) movimentacoes

O pior caso e o melhor caso tem a mesma complexidade.

Complexidade de espaco/consumo espaco: Θ(n)

O Mergesort usa um vetor auxiliar de tamanho n parafazer a intercalacao, mas o espaco ainda e Θ(n).

O Mergesort e util para ordenacao externa, quando nao epossıvel armazenar todos os elementos na memoriaprimaria.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 88: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Heapsort

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 89: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Heapsort

O Heapsort e um algoritmo de ordenacao que usa umaestrutura de dados sofisticada chamada heap.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 90: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Heapsort

O Heapsort e um algoritmo de ordenacao que usa umaestrutura de dados sofisticada chamada heap.

A complexidade de pior caso e Θ(n lgn).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 91: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Heapsort

O Heapsort e um algoritmo de ordenacao que usa umaestrutura de dados sofisticada chamada heap.

A complexidade de pior caso e Θ(n lgn).

Heaps podem ser utilizados para implementar filas deprioridade que sao extremamente uteis em outrosalgoritmos.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 92: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Heapsort

O Heapsort e um algoritmo de ordenacao que usa umaestrutura de dados sofisticada chamada heap.

A complexidade de pior caso e Θ(n lgn).

Heaps podem ser utilizados para implementar filas deprioridade que sao extremamente uteis em outrosalgoritmos.

Um heap e um vetor A que simula uma arvore binariacompleta, com excecao possivelmente do ultimo nıvel.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 93: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Heaps

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 94: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Heaps

Considere um vetor A[1 . . . n] representando um heap.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 95: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Heaps

Considere um vetor A[1 . . . n] representando um heap.

Cada posicao do vetor corresponde a um no do heap.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 96: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Heaps

Considere um vetor A[1 . . . n] representando um heap.

Cada posicao do vetor corresponde a um no do heap.

O pai de um no i e ⌊i/2⌋.

O no 1 nao tem pai.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 97: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Heaps

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 98: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Heaps

Um no i tem2i como filho esquerdo e2i + 1 como filho direito.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 99: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Heaps

Um no i tem2i como filho esquerdo e2i + 1 como filho direito.

Naturalmente, o no item filho esquerdo apenas se 2i ≤ n etem filho direito apenas se 2i + 1 ≤ n.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 100: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Heaps

Um no i tem2i como filho esquerdo e2i + 1 como filho direito.

Naturalmente, o no item filho esquerdo apenas se 2i ≤ n etem filho direito apenas se 2i + 1 ≤ n.

Um no i e uma folha se nao tem filhos, ou seja, se 2i > n.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 101: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Heaps

Um no i tem2i como filho esquerdo e2i + 1 como filho direito.

Naturalmente, o no item filho esquerdo apenas se 2i ≤ n etem filho direito apenas se 2i + 1 ≤ n.

Um no i e uma folha se nao tem filhos, ou seja, se 2i > n.

As folhas sao ⌊n/2⌋+ 1, . . . , n − 1, n.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 102: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Nıveis

Cada nıvel p, exceto talvez o ultimo, tem exatamente 2p nos eesses sao

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

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 103: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Nıveis

Cada nıvel p, exceto talvez o ultimo, tem exatamente 2p nos eesses sao

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

O no i pertence ao nıvel ???.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 104: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Nıveis

Cada nıvel p, exceto talvez o ultimo, tem exatamente 2p nos eesses sao

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

O no i pertence ao nıvel ⌊lg i⌋.

Prova: Se p e o nıvel do no i , entao

2p ≤ i < 2p+1 ⇒lg 2p ≤ lg i < lg 2p+1 ⇒

p ≤ lg i < p + 1

Logo, p = ⌊lg i⌋.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 105: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Nıveis

Cada nıvel p, exceto talvez o ultimo, tem exatamente 2p nos eesses sao

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

O no i pertence ao nıvel ⌊lg i⌋.

Prova: Se p e o nıvel do no i , entao

2p ≤ i < 2p+1 ⇒lg 2p ≤ lg i < lg 2p+1 ⇒

p ≤ lg i < p + 1

Logo, p = ⌊lg i⌋.

Portanto o numero total de nıveis e ???.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 106: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Nıveis

Cada nıvel p, exceto talvez o ultimo, tem exatamente 2p nos eesses sao

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

O no i pertence ao nıvel ⌊lg i⌋.

Prova: Se p e o nıvel do no i , entao

2p ≤ i < 2p+1 ⇒lg 2p ≤ lg i < lg 2p+1 ⇒

p ≤ lg i < p + 1

Logo, p = ⌊lg i⌋.

Portanto, o numero total de nıveis e 1 + ⌊lgn⌋.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 107: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Altura

A altura de um no i e o maior comprimento de um caminho de ia uma folha.

Os nos que tem altura zero sao as folhas.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 108: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Altura

A altura de um no i e o maior comprimento de um caminho de ia uma folha.

Os nos que tem altura zero sao as folhas.

Qual e a altura de um no i?

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 109: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Altura

A altura de um no i e o comprimento da sequencia

2 i , 22 i , 23 i , . . . , 2h i

onde 2h i ≤ n < 2(h+1) i .

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 110: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Altura

A altura de um no i e o comprimento da sequencia

2 i , 22 i , 23 i , . . . , 2h i

onde 2h i ≤ n < 2(h+1) i .

Assim,2h i ≤ n < 2h+1i ⇒2h ≤ n/i < 2h+1 ⇒h ≤ lg(n/i) < h + 1

Portanto, a altura de i e ⌊lg(n/i)⌋.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 111: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Max-heaps

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 112: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Max-heaps

Um no i satisfaz a propriedade de (max-)heap seA[⌊i/2⌋] ≥ A[i] (ou seja, pai ≥ filho).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 113: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Max-heaps

Um no i satisfaz a propriedade de (max-)heap seA[⌊i/2⌋] ≥ A[i] (ou seja, pai ≥ filho).

Uma arvore binaria completa e um max-heap se todo nodistinto da raiz satisfaz a propriedade de heap.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 114: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Max-heaps

Um no i satisfaz a propriedade de (max-)heap seA[⌊i/2⌋] ≥ A[i] (ou seja, pai ≥ filho).

Uma arvore binaria completa e um max-heap se todo nodistinto da raiz satisfaz a propriedade de heap.

O maximo ou maior elemento de um max-heap esta naraiz.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 115: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Max-heap

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

51

51

46

46

17

17

34

34

41

41

15

15

14

14

23

23

30

30

21

21 10

10 12

12

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 116: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Min-heaps

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 117: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Min-heaps

Um no i satisfaz a propriedade de (min-)heap seA[⌊i/2⌋] ≤ A[i] (ou seja, pai ≤ filho).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 118: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Min-heaps

Um no i satisfaz a propriedade de (min-)heap seA[⌊i/2⌋] ≤ A[i] (ou seja, pai ≤ filho).

Uma arvore binaria completa e um min-heap se todo nodistinto da raiz satisfaz a propriedade de min-heap.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 119: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Min-heaps

Um no i satisfaz a propriedade de (min-)heap seA[⌊i/2⌋] ≤ A[i] (ou seja, pai ≤ filho).

Uma arvore binaria completa e um min-heap se todo nodistinto da raiz satisfaz a propriedade de min-heap.

Vamos nos concentrar apenas em max-heaps.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 120: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Min-heaps

Um no i satisfaz a propriedade de (min-)heap seA[⌊i/2⌋] ≤ A[i] (ou seja, pai ≤ filho).

Uma arvore binaria completa e um min-heap se todo nodistinto da raiz satisfaz a propriedade de min-heap.

Vamos nos concentrar apenas em max-heaps.

Os algoritmos que veremos podem ser facilmentemodificados para trabalhar com min-heaps.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 121: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Manipulacao de max-heap

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

13

13

46

46

17

17

34

34

41

41

15

15

14

14

23

23

30

30

21

21 10

10 12

12

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 122: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Manipulacao de max-heap

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

46

46

13

13

17

17

34

34

41

41

15

15

14

14

23

23

30

30

21

21 10

10 12

12

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 123: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Manipulacao de max-heap

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

46

46

41

41

17

17

34

34

13

13

15

15

14

14

23

23

30

30

21

21 10

10 12

12

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 124: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Manipulacao de max-heap

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

46

46

41

41

17

17

34

34

21

21

15

15

14

14

23

23

30

30

13

13 10

10 12

12

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 125: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Manipulacao de max-heap

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

46

46

41

41

17

17

34

34

21

21

15

15

14

14

23

23

30

30

13

13 10

10 12

12

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 126: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Manipulacao de max-heap

Recebe A[1 . . . n] e i ≥ 1 tais que subarvores com raızes 2i e2i + 1 sao max-heaps e rearranja A de modo que subarvorecom raiz i seja um max-heap.

MAX-HEAPIFY(A, n, i)1 e ← 2i2 d ← 2i + 13 se e ≤ n e A[e] > A[i ]4 entao maior ← e5 senao maior ← i6 se d ≤ n e A[d ] > A[maior]7 entao maior ← d8 se maior = i9 entao A[i ] ↔ A[maior]

10 MAX-HEAPIFY(A, n,maior)

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 127: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Corretude de MAXHEAPIFY

A corretude de MAX-HEAPIFY segue por inducao na altura h dono i .

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 128: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Corretude de MAXHEAPIFY

A corretude de MAX-HEAPIFY segue por inducao na altura h dono i .

Base: para h = 1, o algoritmo funciona.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 129: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Corretude de MAXHEAPIFY

A corretude de MAX-HEAPIFY segue por inducao na altura h dono i .

Base: para h = 1, o algoritmo funciona.

Hipotese de inducao: MAX-HEAPIFY funciona para heaps dealtura < h.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 130: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Corretude de MAXHEAPIFY

A corretude de MAX-HEAPIFY segue por inducao na altura h dono i .

Base: para h = 1, o algoritmo funciona.

Hipotese de inducao: MAX-HEAPIFY funciona para heaps dealtura < h.

Passo de inducao:

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 131: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Corretude de MAXHEAPIFY

A corretude de MAX-HEAPIFY segue por inducao na altura h dono i .

Base: para h = 1, o algoritmo funciona.

Hipotese de inducao: MAX-HEAPIFY funciona para heaps dealtura < h.

Passo de inducao:

A variavel maior na linha 8 guarda o ındice do maior elementoentre A[i], A[2i] e A[2i + 1].Apos a troca na linha 9, temos A[2i],A[2i + 1] ≤ A[i].

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 132: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Corretude de MAXHEAPIFY

A corretude de MAX-HEAPIFY segue por inducao na altura h dono i .

Base: para h = 1, o algoritmo funciona.

Hipotese de inducao: MAX-HEAPIFY funciona para heaps dealtura < h.

Passo de inducao:

A variavel maior na linha 8 guarda o ındice do maior elementoentre A[i], A[2i] e A[2i + 1].Apos a troca na linha 9, temos A[2i],A[2i + 1] ≤ A[i].

O algoritmo MAX-HEAPIFY transforma a subarvore com raizmaior em um max-heap (hipotese de inducao).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 133: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Corretude de MAXHEAPIFY

Passo de inducao:

A variavel maior na linha 8 guarda o ındice do maior elementoentre A[i], A[2i] e A[2i + 1].Apos a troca na linha 9, temos A[2i],A[2i + 1] ≤ A[i].

O algoritmo MAX-HEAPIFY transforma a subarvore com raizmaior em um max-heap (hipotese de inducao).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 134: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Corretude de MAXHEAPIFY

Passo de inducao:

A variavel maior na linha 8 guarda o ındice do maior elementoentre A[i], A[2i] e A[2i + 1].Apos a troca na linha 9, temos A[2i],A[2i + 1] ≤ A[i].

O algoritmo MAX-HEAPIFY transforma a subarvore com raizmaior em um max-heap (hipotese de inducao).

A subarvore cuja raiz e o irmao de maior continua sendo ummax-heap.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 135: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Corretude de MAXHEAPIFY

Passo de inducao:

A variavel maior na linha 8 guarda o ındice do maior elementoentre A[i], A[2i] e A[2i + 1].Apos a troca na linha 9, temos A[2i],A[2i + 1] ≤ A[i].

O algoritmo MAX-HEAPIFY transforma a subarvore com raizmaior em um max-heap (hipotese de inducao).

A subarvore cuja raiz e o irmao de maior continua sendo ummax-heap.

Logo, a subarvore com raiz i torna-se um max-heap e portanto,o algoritmo MAX-HEAPIFY esta correto.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 136: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Complexidade de MAXHEAPIFY

MAX-HEAPIFY(A, n, i) Tempo1 e ← 2i ?2 d ← 2i + 1 ?3 se e ≤ n e A[e] > A[i ] ?4 entao maior ← e ?5 senao maior ← i ?6 se d ≤ n e A[d ] > A[maior] ?7 entao maior ← d ?8 se maior = i ?9 entao A[i ] ↔ A[maior] ?

10 MAX-HEAPIFY(A, n,maior) ?

h := altura de i = ⌊lg ni ⌋

T (h) := complexidade de tempo no pior caso

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 137: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Complexidade de MAXHEAPIFY

MAX-HEAPIFY(A, n, i) Tempo1 e ← 2i Θ(1)2 d ← 2i + 1 Θ(1)3 se e ≤ n e A[e] > A[i ] Θ(1)4 entao maior ← e O(1)5 senao maior ← i O(1)6 se d ≤ n e A[d ] > A[maior] Θ(1)7 entao maior ← d O(1)8 se maior = i Θ(1)9 entao A[i ] ↔ A[maior] O(1)

10 MAX-HEAPIFY(A, n,maior) T (h − 1)

h := altura de i = ⌊lg ni ⌋

T (h) ≤ T (h − 1) +Θ(5) +O(2).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 138: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Complexidade de MAXHEAPIFY

h := altura de i = ⌊lg ni ⌋

T (h) := complexidade de tempo no pior caso

T (h) ≤ T (h − 1) +Θ(1)

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 139: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Complexidade de MAXHEAPIFY

h := altura de i = ⌊lg ni ⌋

T (h) := complexidade de tempo no pior caso

T (h) ≤ T (h − 1) +Θ(1)

Solucao assintotica: T (n) e ???.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 140: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Complexidade de MAXHEAPIFY

h := altura de i = ⌊lg ni ⌋

T (h) := complexidade de tempo no pior caso

T (h) ≤ T (h − 1) +Θ(1)

Solucao assintotica: T (n) e O(h).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 141: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Complexidade de MAXHEAPIFY

h := altura de i = ⌊lg ni ⌋

T (h) := complexidade de tempo no pior caso

T (h) ≤ T (h − 1) +Θ(1)

Solucao assintotica: T (n) e O(h).

Como h ≤ lgn, podemos dizer que:

O consumo de tempo do algoritmo MAX-HEAPIFY e O(lg n)(ou melhor ainda, O(lg n

i )).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 142: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Construcao de um max-heap

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

14

14

13

13

34

34

17

17

15

15

10

10

46

46

23

23

12

12

41

41 30

30 21

21

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 143: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Construcao de um max-heap

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

14

14

13

13

34

34

17

17

15

15

10

10

46

46

23

23

12

12

41

41 30

30 21

21

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 144: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Construcao de um max-heap

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

14

14

13

13

34

34

17

17

15

15

21

21

46

46

23

23

12

12

41

41 30

30 10

10

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 145: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Construcao de um max-heap

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

14

14

13

13

34

34

17

17

15

15

21

21

46

46

23

23

12

12

41

41 30

30 10

10

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 146: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Construcao de um max-heap

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

14

14

13

13

34

34

17

17

41

41

21

21

46

46

23

23

12

12

15

15 30

30 10

10

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 147: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Construcao de um max-heap

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

14

14

13

13

34

34

17

17

41

41

21

21

46

46

23

23

12

12

15

15 30

30 10

10

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 148: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Construcao de um max-heap

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

14

14

13

13

34

34

23

23

41

41

21

21

46

46

17

17

12

12

15

15 30

30 10

10

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 149: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Construcao de um max-heap

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

14

14

13

13

34

34

23

23

41

41

21

21

46

46

17

17

12

12

15

15 30

30 10

10

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 150: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Construcao de um max-heap

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

14

14

13

13

46

46

23

23

41

41

21

21

34

34

17

17

12

12

15

15 30

30 10

10

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 151: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Construcao de um max-heap

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

14

14

13

13

46

46

23

23

41

41

21

21

34

34

17

17

12

12

15

15 30

30 10

10

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 152: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Construcao de um max-heap

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

14

14

41

41

46

46

23

23

13

13

21

21

34

34

17

17

12

12

15

15 30

30 10

10

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 153: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Construcao de um max-heap

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

14

14

41

41

46

46

23

23

30

30

21

21

34

34

17

17

12

12

15

15 13

13 10

10

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 154: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Construcao de um max-heap

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

14

14

41

41

46

46

23

23

30

30

21

21

34

34

17

17

12

12

15

15 13

13 10

10

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 155: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Construcao de um max-heap

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

46

46

41

41

14

14

23

23

30

30

21

21

34

34

17

17

12

12

15

15 13

13 10

10

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 156: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Construcao de um max-heap

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

46

46

41

41

34

34

23

23

30

30

21

21

14

14

17

17

12

12

15

15 13

13 10

10

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 157: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Construcao de um max-heap

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

46

46

41

41

34

34

23

23

30

30

21

21

14

14

17

17

12

12

15

15 13

13 10

10

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 158: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Construcao de um max-heap

Recebe um vetor A[1 . . . n] e rearranja A para que sejamax-heap.

BUILDMAXHEAP(A, n)1 para i ← ⌊n/2⌋ decrescendo ate 1 faca2 MAX-HEAPIFY(A, n, i)

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 159: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Construcao de um max-heap

Recebe um vetor A[1 . . . n] e rearranja A para que sejamax-heap.

BUILDMAXHEAP(A, n)1 para i ← ⌊n/2⌋ decrescendo ate 1 faca2 MAX-HEAPIFY(A, n, i)

Invariante:

No inıcio de cada iteracao, i + 1, . . . , n sao raızes demax-heaps.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 160: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Construcao de um max-heap

Recebe um vetor A[1 . . . n] e rearranja A para que sejamax-heap.

BUILDMAXHEAP(A, n)1 para i ← ⌊n/2⌋ decrescendo ate 1 faca2 MAX-HEAPIFY(A, n, i)

Invariante:

No inıcio de cada iteracao, i + 1, . . . , n sao raızes demax-heaps.

T (n) = complexidade de tempo no pior caso

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 161: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Construcao de um max-heap

Recebe um vetor A[1 . . . n] e rearranja A para que sejamax-heap.

BUILDMAXHEAP(A, n)1 para i ← ⌊n/2⌋ decrescendo ate 1 faca2 MAX-HEAPIFY(A, n, i)

Invariante:

No inıcio de cada iteracao, i + 1, . . . , n sao raızes demax-heaps.

T (n) = complexidade de tempo no pior caso

Analise grosseira: T (n) e n2 O(lgn) = O(n lgn).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 162: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Construcao de um max-heap

Analise mais cuidadosa: T (n) e O(n).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 163: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Construcao de um max-heap

Analise mais cuidadosa: T (n) e O(n).

Na iteracao i sao feitas O(hi) comparacoes e trocas nopior caso, onde hi e a altura da subarvore de raiz i .

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 164: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Construcao de um max-heap

Analise mais cuidadosa: T (n) e O(n).

Na iteracao i sao feitas O(hi) comparacoes e trocas nopior caso, onde hi e a altura da subarvore de raiz i .

Seja S(h) a soma das alturas de todos os nos de umaarvore binaria completa de altura h.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 165: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Construcao de um max-heap

Analise mais cuidadosa: T (n) e O(n).

Na iteracao i sao feitas O(hi) comparacoes e trocas nopior caso, onde hi e a altura da subarvore de raiz i .

Seja S(h) a soma das alturas de todos os nos de umaarvore binaria completa de altura h.

A altura de um heap e ⌊lgn⌋+ 1.

A complexidade de BUILDMAXHEAP e T (n) = O(S(lg n)).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 166: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Construcao de um max-heap

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 167: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Construcao de um max-heap

Pode-se provar por inducao que S(h) = 2h+1 − h − 2.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 168: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Construcao de um max-heap

Pode-se provar por inducao que S(h) = 2h+1 − h − 2.

Logo, a complexidade de BUILDMAXHEAP eT (n) = O(S(lg n)) = O(n).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 169: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Construcao de um max-heap

Pode-se provar por inducao que S(h) = 2h+1 − h − 2.

Logo, a complexidade de BUILDMAXHEAP eT (n) = O(S(lg n)) = O(n).

Mais precisamente, T (n) = Θ(n). (Por que?)

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 170: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Construcao de um max-heap

Pode-se provar por inducao que S(h) = 2h+1 − h − 2.

Logo, a complexidade de BUILDMAXHEAP eT (n) = O(S(lg n)) = O(n).

Mais precisamente, T (n) = Θ(n). (Por que?)

Veja no CLRS uma prova diferente deste fato.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 171: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

HeapSort

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

46

46

41

41

34

34

23

23

30

30

21

21

14

14

17

17

12

12

15

15 13

13 10

10

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 172: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

HeapSort

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

10

10

41

41

34

34

23

23

30

30

21

21

14

14

17

17

12

12

15

15 13

13 46

46

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 173: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

HeapSort

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

41

41

10

10

34

34

23

23

30

30

21

21

14

14

17

17

12

12

15

15 13

13 46

46

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 174: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

HeapSort

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

41

41

30

30

34

34

23

23

10

10

21

21

14

14

17

17

12

12

15

15 13

13 46

46

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 175: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

HeapSort

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

41

41

30

30

34

34

23

23

15

15

21

21

14

14

17

17

12

12

10

10 13

13 46

46

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 176: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

HeapSort

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

41

41

30

30

34

34

23

23

15

15

21

21

14

14

17

17

12

12

10

10 13

13 46

46

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 177: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

HeapSort

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

13

13

30

30

34

34

23

23

15

15

21

21

14

14

17

17

12

12

10

10 41

41 46

46

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 178: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

HeapSort

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

13

13

30

30

34

34

23

23

15

15

21

21

14

14

17

17

12

12

10

10 41

41 46

46

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 179: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

HeapSort

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

34

34

30

30

13

13

23

23

15

15

21

21

14

14

17

17

12

12

10

10 41

41 46

46

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 180: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

HeapSort

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

34

34

30

30

21

21

23

23

15

15

13

13

14

14

17

17

12

12

10

10 41

41 46

46

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 181: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

HeapSort

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

34

34

30

30

21

21

23

23

15

15

13

13

14

14

17

17

12

12

10

10 41

41 46

46

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 182: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

HeapSort

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

10

10

30

30

21

21

23

23

15

15

13

13

14

14

17

17

12

12

34

34 41

41 46

46

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 183: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

HeapSort

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

10

10

30

30

21

21

23

23

15

15

13

13

14

14

17

17

12

12

34

34 41

41 46

46

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 184: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

HeapSort

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

30

30

10

10

21

21

23

23

15

15

13

13

14

14

17

17

12

12

34

34 41

41 46

46

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 185: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

HeapSort

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

30

30

23

23

21

21

10

10

15

15

13

13

14

14

17

17

12

12

34

34 41

41 46

46

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 186: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

HeapSort

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

30

30

23

23

21

21

17

17

15

15

13

13

14

14

10

10

12

12

34

34 41

41 46

46

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 187: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

HeapSort

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

30

30

23

23

21

21

17

17

15

15

13

13

14

14

10

10

12

12

34

34 41

41 46

46

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 188: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

HeapSort

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9 10

10

11

11

12

12

nıvel

0

1

2

3

12

12

23

23

21

21

17

17

15

15

13

13

14

14

10

10

30

30

34

34 41

41 46

46

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 189: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

HeapSort

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

HEAPSORT(A, n)1 BUILD-MAX-HEAP(A, n)2 m ← n3 para i ← n decrescendo ate 2 faca4 A[1] ↔ A[i ]5 m ← m − 16 MAX-HEAPIFY(A,m, 1)

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 190: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

HeapSort

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

HEAPSORT(A, n)1 BUILD-MAX-HEAP(A, n)2 m ← n3 para i ← n decrescendo ate 2 faca4 A[1] ↔ A[i ]5 m ← m − 16 MAX-HEAPIFY(A,m, 1)

Invariantes:

No inıcio de cada iteracao na linha 3 vale que:

1 A[m . . . n] e crescente;

2 A[1 . . .m] ≤ A[m + 1];3 A[1 . . .m] e um max-heap.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 191: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

HeapSort

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

HEAPSORT(A, n) Tempo1 BUILD-MAX-HEAP(A, n) ?2 m ← n ?3 para i ← n decrescendo ate 2 faca ?4 A[1] ↔ A[i ] ?5 m ← m − 1 ?6 MAX-HEAPIFY(A,m, 1) ?

T (n) = complexidade de tempo no pior caso

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 192: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

HeapSort

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

HEAPSORT(A, n) Tempo1 BUILD-MAX-HEAP(A, n) Θ(n)2 m ← n Θ(1)3 para i ← n decrescendo ate 2 faca Θ(n)4 A[1] ↔ A[i ] Θ(n)5 m ← m − 1 Θ(n)6 MAX-HEAPIFY(A,m, 1) nO(lgn)

T (n) = ??

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 193: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

HeapSort

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

HEAPSORT(A, n) Tempo1 BUILD-MAX-HEAP(A, n) Θ(n)2 m ← n Θ(1)3 para i ← n decrescendo ate 2 faca Θ(n)4 A[1] ↔ A[i ] Θ(n)5 m ← m − 1 Θ(n)6 MAX-HEAPIFY(A,m, 1) nO(lgn)

T (n) = nO(lgn) +Θ(4n + 1) = O(n lg n)

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 194: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

HeapSort

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

HEAPSORT(A, n) Tempo1 BUILD-MAX-HEAP(A, n) Θ(n)2 m ← n Θ(1)3 para i ← n decrescendo ate 2 faca Θ(n)4 A[1] ↔ A[i ] Θ(n)5 m ← m − 1 Θ(n)6 MAX-HEAPIFY(A,m, 1) nO(lgn)

T (n) = nO(lgn) +Θ(4n + 1) = O(n lg n)

A complexidade de HEAPSORT no pior caso e O(n lgn).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 195: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

HeapSort

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

HEAPSORT(A, n) Tempo1 BUILD-MAX-HEAP(A, n) Θ(n)2 m ← n Θ(1)3 para i ← n decrescendo ate 2 faca Θ(n)4 A[1] ↔ A[i ] Θ(n)5 m ← m − 1 Θ(n)6 MAX-HEAPIFY(A,m, 1) nO(lgn)

T (n) = nO(lgn) +Θ(4n + 1) = O(n lg n)

A complexidade de HEAPSORT no pior caso e O(n lgn).

Como seria a complexidade de tempo no melhor caso?

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 196: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Filas com prioridades

Uma fila com prioridades e um tipo abstrato de dados queconsiste de uma colecao S de itens, cada um com um valor ouprioridade associada.

Algumas operacoes tıpicas em uma fila com prioridades sao:

MAXIMUM(S): devolve o elemento de S com a maiorprioridade;

EXTRACT-MAX(S): remove e devolve o elemento em S com amaior prioridade;

INCREASE-KEY(S, x , p): aumenta o valor da prioridade doelemento x para p; e

INSERT(S, x , p): insere o elemento x em S com prioridade p.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 197: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Implementacao com max-heap

HEAP-MAX(A, n)1 devolva A[1]

Complexidade de tempo: Θ(1).

HEAP-EXTRACT-MAX(A, n)1 n ≥ 1

2 max ← A[1]3 A[1] ← A[n]4 cor ← n − 15 MAX-HEAPIFY (A, n, 1)6 devolva max

Complexidade de tempo: O(lgn).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 198: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Implementacao com max-heap

HEAP-INCREASE-KEY(A, i , prior)1 Supoe que prior ≥ A[i]2 A[i ] ← prior3 enquanto i > 1 e A[⌊i/2⌋] < A[i ] faca4 A[i ] ↔ A[⌊i/2⌋]5 i ← ⌊i/2⌋

Complexidade de tempo: O(lgn).

MAX-HEAP-INSERT(A, n, prior)1 n ← n + 12 A[n] ← −∞3 HEAP-INCREASE-KEY(A, n, prior)

Complexidade de tempo: O(lgn).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 199: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

QuickSort

O algoritmo QUICKSORT segue o paradigma dedivisao-e-conquista.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 200: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

QuickSort

O algoritmo QUICKSORT segue o paradigma dedivisao-e-conquista.

Divisao: divida o vetor em dois subvetores A[p . . . q − 1] eA[q + 1 . . . r ] tais que

p q r

A ≤ x x > x

A[p . . . q − 1] ≤ A[q] < A[q + 1 . . . r ]

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 201: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

QuickSort

O algoritmo QUICKSORT segue o paradigma dedivisao-e-conquista.

Divisao: divida o vetor em dois subvetores A[p . . . q − 1] eA[q + 1 . . . r ] tais que

p q r

A ≤ x x > x

A[p . . . q − 1] ≤ A[q] < A[q + 1 . . . r ]

Conquista: ordene os dois subvetores recursivamente usandoo QUICKSORT;

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 202: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

QuickSort

O algoritmo QUICKSORT segue o paradigma dedivisao-e-conquista.

Divisao: divida o vetor em dois subvetores A[p . . . q − 1] eA[q + 1 . . . r ] tais que

p q r

A ≤ x x > x

A[p . . . q − 1] ≤ A[q] < A[q + 1 . . . r ]

Conquista: ordene os dois subvetores recursivamente usandoo QUICKSORT;

Combinacao: nada a fazer, o vetor esta ordenado.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 203: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Particao

Problema: Rearranjar um dado vetor A[p . . . r ] e devolver umındice q, p ≤ q ≤ r , tais que

A[p . . .q − 1] ≤ A[q] < A[q + 1 . . . r ]

Entrada:

p r

A 99 33 55 77 11 22 88 66 33 44

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 204: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Particao

Problema: Rearranjar um dado vetor A[p . . . r ] e devolver umındice q, p ≤ q ≤ r , tais que

A[p . . .q − 1] ≤ A[q] < A[q + 1 . . . r ]

Entrada:

p r

A 99 33 55 77 11 22 88 66 33 44

Saıda:

p q r

A 33 11 22 33 44 55 99 66 77 88

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 205: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Particione

p r

A 99 33 55 77 11 22 88 66 33 44

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 206: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Particione

i j x

A 99 33 55 77 11 22 88 66 33 44

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 207: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Particione

i j x

A 99 33 55 77 11 22 88 66 33 44

i j x

A 99 33 55 77 11 22 88 66 33 44

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 208: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Particione

i j x

A 99 33 55 77 11 22 88 66 33 44

i j x

A 99 33 55 77 11 22 88 66 33 44

i j x

A 33 99 55 77 11 22 88 66 33 44

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 209: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Particione

i j x

A 99 33 55 77 11 22 88 66 33 44

i j x

A 99 33 55 77 11 22 88 66 33 44

i j x

A 33 99 55 77 11 22 88 66 33 44

i j x

A 33 99 55 77 11 22 88 66 33 44

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 210: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Particione

i j x

A 99 33 55 77 11 22 88 66 33 44

i j x

A 99 33 55 77 11 22 88 66 33 44

i j x

A 33 99 55 77 11 22 88 66 33 44

i j x

A 33 99 55 77 11 22 88 66 33 44

i j x

A 33 99 55 77 11 22 88 66 33 44

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 211: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Particione

i j x

A 99 33 55 77 11 22 88 66 33 44

i j x

A 99 33 55 77 11 22 88 66 33 44

i j x

A 33 99 55 77 11 22 88 66 33 44

i j x

A 33 99 55 77 11 22 88 66 33 44

i j x

A 33 99 55 77 11 22 88 66 33 44

i j x

A 33 11 55 77 99 22 88 66 33 44

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 212: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Particione

i j x

A 33 11 55 77 99 22 88 66 33 44

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 213: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Particione

i j x

A 33 11 55 77 99 22 88 66 33 44

i j x

A 33 11 22 77 99 55 88 66 33 44

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 214: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Particione

i j x

A 33 11 55 77 99 22 88 66 33 44

i j x

A 33 11 22 77 99 55 88 66 33 44

i j x

A 33 11 22 77 99 55 88 66 33 44

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 215: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Particione

i j x

A 33 11 55 77 99 22 88 66 33 44

i j x

A 33 11 22 77 99 55 88 66 33 44

i j x

A 33 11 22 77 99 55 88 66 33 44

i j x

A 33 11 22 77 99 55 88 66 33 44

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 216: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Particione

i j x

A 33 11 55 77 99 22 88 66 33 44

i j x

A 33 11 22 77 99 55 88 66 33 44

i j x

A 33 11 22 77 99 55 88 66 33 44

i j x

A 33 11 22 77 99 55 88 66 33 44

i j

A 33 11 22 33 99 55 88 66 77 44

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 217: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Particione

i j x

A 33 11 55 77 99 22 88 66 33 44

i j x

A 33 11 22 77 99 55 88 66 33 44

i j x

A 33 11 22 77 99 55 88 66 33 44

i j x

A 33 11 22 77 99 55 88 66 33 44

i j

A 33 11 22 33 99 55 88 66 77 44

p q r

A 33 11 22 33 44 55 88 66 77 99

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 218: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Particione

Rearranja A[p . . . r ] de modo que p ≤ q ≤ r eA[p . . . q−1] ≤ A[q] < A[q+1 . . . r ]

PARTICIONE(A, p, r)1 x ← A[r ] x e o “pivo”2 i ← p−13 para j ← p ate r − 1 faca4 se A[j ] ≤ x5 entao i ← i + 16 A[i ] ↔ A[j ]7 A[i+1] ↔ A[r ]8 devolva i + 1

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 219: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Particione

Rearranja A[p . . . r ] de modo que p ≤ q ≤ r eA[p . . . q−1] ≤ A[q] < A[q+1 . . . r ]

PARTICIONE(A, p, r)1 x ← A[r ] x e o “pivo”2 i ← p−13 para j ← p ate r − 1 faca4 se A[j ] ≤ x5 entao i ← i + 16 A[i ] ↔ A[j ]7 A[i+1] ↔ A[r ]8 devolva i + 1

Invariantes:

No comeco de cada iteracao da linha 3 vale que:(1) A[p . . . i ] ≤ x (2) A[i+1 . . . j−1] > x (3) A[r ] = x

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 220: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Complexidade de PARTICIONE

PARTICIONE(A, p, r) Tempo

1 x ← A[r ] x e o “pivo” ?2 i ← p−1 ?3 para j ← p ate r − 1 faca ?4 se A[j ] ≤ x ?5 entao i ← i + 1 ?6 A[i ] ↔ A[j] ?7 A[i+1] ↔ A[r ] ?8 devolva i + 1 ?

T (n) = complexidade de tempo no pior caso sendon := r − p + 1

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 221: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Complexidade de PARTICIONE

PARTICIONE(A, p, r) Tempo

1 x ← A[r ] x e o “pivo” Θ(1)2 i ← p−1 Θ(1)3 para j ← p ate r − 1 faca Θ(n)4 se A[j ] ≤ x Θ(n)5 entao i ← i + 1 O(n)6 A[i ] ↔ A[j] O(n)7 A[i+1] ↔ A[r ] Θ(1)8 devolva i + 1 Θ(1)

T (n) = Θ(2n + 4) +O(2n) = Θ(n)

Conclusao:A complexidade de PARTICIONE e Θ(n).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 222: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

QuickSort

Rearranja um vetor A[p . . . r ] em ordem crescente.

QUICKSORT(A, p, r)1 se p < r2 entao q ← PARTICIONE(A, p, r)3 QUICKSORT(A, p, q − 1)4 QUICKSORT(A, q + 1, r)

p r

A 99 33 55 77 11 22 88 66 33 44

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 223: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

QuickSort

Rearranja um vetor A[p . . . r ] em ordem crescente.

QUICKSORT(A, p, r)1 se p < r2 entao q ← PARTICIONE(A, p, r)3 QUICKSORT(A, p, q − 1)4 QUICKSORT(A, q + 1, r)

p q r

A 33 11 22 33 44 55 88 66 77 99

No comeco da linha 3,

A[p . . . q−1] ≤ A[q] < A[q+1 . . . r ]

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 224: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

QuickSort

Rearranja um vetor A[p . . . r ] em ordem crescente.

QUICKSORT(A, p, r)1 se p < r2 entao q ← PARTICIONE(A, p, r)3 QUICKSORT(A, p, q − 1)4 QUICKSORT(A, q + 1, r)

p q r

A 11 22 33 33 44 55 88 66 77 99

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 225: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

QuickSort

Rearranja um vetor A[p . . . r ] em ordem crescente.

QUICKSORT(A, p, r)1 se p < r2 entao q ← PARTICIONE(A, p, r)3 QUICKSORT(A, p, q − 1)4 QUICKSORT(A, q + 1, r)

p q r

A 11 22 33 33 44 55 66 77 88 99

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 226: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Complexidade de QUICKSORT

QUICKSORT(A, p, r) Tempo

1 se p < r ?2 entao q ← PARTICIONE(A, p, r) ?3 QUICKSORT(A, p, q − 1) ?4 QUICKSORT(A, q + 1, r) ?

T (n) := complexidade de tempo no pior caso sendon := r − p + 1

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 227: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Complexidade de QUICKSORT

QUICKSORT(A, p, r) Tempo

1 se p < r Θ(1)2 entao q ← PARTICIONE(A, p, r) Θ(n)3 QUICKSORT(A, p, q − 1) T (k)4 QUICKSORT(A, q + 1, r) T (n − k − 1)

T (n) = T (k) + T (n − k − 1) +Θ(n + 1)

0 ≤ k := q − p ≤ n − 1

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 228: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Recorrencia

T (n) := consumo de tempo no pior caso

T (0) = Θ(1)

T (1) = Θ(1)

T (n) = T (k) + T (n − k − 1) +Θ(n) para n = 2, 3, 4, . . .

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 229: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Recorrencia

T (n) := consumo de tempo no pior caso

T (0) = Θ(1)

T (1) = Θ(1)

T (n) = T (k) + T (n − k − 1) +Θ(n) para n = 2, 3, 4, . . .

Recorrencia grosseira:

T (n) = T (0) + T (n − 1) +Θ(n)

T (n) e Θ(???).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 230: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Recorrencia

T (n) := consumo de tempo no pior caso

T (0) = Θ(1)

T (1) = Θ(1)

T (n) = T (k) + T (n − k − 1) +Θ(n) para n = 2, 3, 4, . . .

Recorrencia grosseira:

T (n) = T (0) + T (n − 1) +Θ(n)

T (n) e Θ(n2).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 231: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Recorrencia cuidadosa

T (n) := complexidade de tempo no pior caso

T (0) = Θ(1)

T (1) = Θ(1)

T (n) = max0≤k≤n−1

T (k) + T (n − k − 1)+Θ(n) para n = 2, 3, 4, . . .

T (n) = max0≤k≤n−1T (k) + T (n − k − 1)+ bn

Quero mostrar que T (n) = Θ(n2).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 232: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Demonstracao – T (n) = O(n2)

Vou provar que T (n) ≤ cn2 para n grande.

T (n) = max0≤k≤n−1

!

T (k) + T (n − k − 1)

"

+ bn

≤ max0≤k≤n−1

!

ck2 + c(n − k − 1)2

"

+ bn

= c max0≤k≤n−1

!

k2 + (n − k − 1)2

"

+ bn

= c(n − 1)2 + bn exercıcio

= cn2 − 2cn + c + bn

≤ cn2 ,

se c > b/2 e n ≥ c/(2c − b).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 233: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Continuacao – T (n) = Ω(n2)

Agora vou provar que T (n) ≥ dn2 para n grande.

T (n) = max0≤k≤n−1

!

T (k) + T (n−k−1)

"

+ bn

≥ max0≤k≤n−1

!

dk2 + d(n − k − 1)2

"

+ bn

= d max0≤k≤n−1

!

k2 + (n − k − 1)2

"

+ bn

= d(n − 1)2 + bn

= dn2 − 2dn + d + bn

≥ dn2 ,

se d < b/2 e n ≥ d/(2d − b).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 234: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Conclusao

T (n) e Θ(n2).

A complexidade de tempo do QUICKSORT no pior caso eΘ(n2).

A complexidade de tempo do QUICKSORT e O(n2).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 235: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

QuickSort no melhor caso

M(n) := complexidade de tempo no melhor caso

M(0) = Θ(1)

M(1) = Θ(1)

M(n) = min0≤k≤n−1

M(k) +M(n − k − 1)+Θ(n) para n = 2, 3, 4, . . .

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 236: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

QuickSort no melhor caso

M(n) := complexidade de tempo no melhor caso

M(0) = Θ(1)

M(1) = Θ(1)

M(n) = min0≤k≤n−1

M(k) +M(n − k − 1)+Θ(n) para n = 2, 3, 4, . . .

Mostre que, para n ≥ 1,

M(n) ≥(n − 1)

2lg

n − 1

2.

Isto implica que no melhor caso o QUICKSORT e Ω(n lgn).

Que e o mesmo que dizer que o QUICKSORT e Ω(n lgn).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 237: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

QuickSort no melhor caso

No melhor caso k e aproximadamente (n − 1)/2.

R(n) = R(

#

n−1

2

$

) + R(

%

n−1

2

&

) +Θ(n)

Solucao: R(n) e Θ(n lgn).

Humm, lembra a recorrencia do MERGESORT. . .

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 238: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Mais algumas conclusoes

M(n) e Θ(n lgn).

O consumo de tempo do QUICKSORT no melhor caso eΩ(n log n).

Mais precisamente, a complexidade de tempo do QUICKSORT

no melhor caso e Θ(n log n).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 239: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Caso medio

Apesar da complexidade de tempo do QUICKSORT no piorcaso ser Θ(n2), na pratica ele e o algoritmo mais eficiente.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 240: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Caso medio

Apesar da complexidade de tempo do QUICKSORT no piorcaso ser Θ(n2), na pratica ele e o algoritmo mais eficiente.

Mais precisamente, a complexidade de tempo do QUICKSORT

no caso medio e mais proximo do melhor caso do que do piorcaso.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 241: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Caso medio

Apesar da complexidade de tempo do QUICKSORT no piorcaso ser Θ(n2), na pratica ele e o algoritmo mais eficiente.

Mais precisamente, a complexidade de tempo do QUICKSORT

no caso medio e mais proximo do melhor caso do que do piorcaso.

Por que??

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 242: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Caso medio

Apesar da complexidade de tempo do QUICKSORT no piorcaso ser Θ(n2), na pratica ele e o algoritmo mais eficiente.

Mais precisamente, a complexidade de tempo do QUICKSORT

no caso medio e mais proximo do melhor caso do que do piorcaso.

Por que??

Suponha que (por sorte) o algoritmo PARTICIONE sempredivide o vetor na proporcao 1

10 para 910 . Entao

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 243: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Caso medio

Apesar da complexidade de tempo do QUICKSORT no piorcaso ser Θ(n2), na pratica ele e o algoritmo mais eficiente.

Mais precisamente, a complexidade de tempo do QUICKSORT

no caso medio e mais proximo do melhor caso do que do piorcaso.

Por que??

Suponha que (por sorte) o algoritmo PARTICIONE sempredivide o vetor na proporcao 1

10 para 910 . Entao

T (n) = T (

#

n−1

10

$

) + T (

%

9(n−1)

10

&

) +Θ(n)

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 244: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Caso medio

Apesar da complexidade de tempo do QUICKSORT no piorcaso ser Θ(n2), na pratica ele e o algoritmo mais eficiente.

Mais precisamente, a complexidade de tempo do QUICKSORT

no caso medio e mais proximo do melhor caso do que do piorcaso.

Por que??

Suponha que (por sorte) o algoritmo PARTICIONE sempredivide o vetor na proporcao 1

10 para 910 . Entao

T (n) = T (

#

n−1

10

$

) + T (

%

9(n−1)

10

&

) +Θ(n)

Solucao: T (n) e Θ(n lgn).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 245: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Arvore de recorrencian

n10

9n10

n100

9n100

9n100

81n100

81n1000

81n1000

729n1000

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 246: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Arvore de recorrencian

n10

9n10

n100

9n100

9n100

81n100

81n1000

81n1000

729n1000

Numero de nıveis ≤ log10/9 n.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 247: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Arvore de recorrencian

n10

9n10

n100

9n100

9n100

81n100

81n1000

81n1000

729n1000

Numero de nıveis ≤ log10/9 n.

Em cada nıvel o custo e ≤ n.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 248: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Arvore de recorrencian

n10

9n10

n100

9n100

9n100

81n100

81n1000

81n1000

729n1000

Numero de nıveis ≤ log10/9 n.

Em cada nıvel o custo e ≤ n.

Custo total e O(n log n).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 249: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

QuickSort Aleatorio

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 250: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

QuickSort Aleatorio

O pior caso do QUICKSORT ocorre devido a uma escolha infelizdo pivo.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 251: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

QuickSort Aleatorio

O pior caso do QUICKSORT ocorre devido a uma escolha infelizdo pivo.

Um modo de minimizar este problema e usar aleatoriedade.

PARTICIONE-ALEATORIO(A, p, r)1 i ← RANDOM(p, r)2 A[i] ↔ A[r ]3 devolva PARTICIONE(A, p, r)

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 252: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

QuickSort Aleatorio

O pior caso do QUICKSORT ocorre devido a uma escolha infelizdo pivo.

Um modo de minimizar este problema e usar aleatoriedade.

PARTICIONE-ALEATORIO(A, p, r)1 i ← RANDOM(p, r)2 A[i] ↔ A[r ]3 devolva PARTICIONE(A, p, r)

QUICKSORT-ALEATORIO(A, p, r)1 se p < r2 entao q ← PARTICIONE-ALEATORIO(A, p, r)3 QUICKSORT-ALEATORIO(A, p, q − 1)4 QUICKSORT-ALEATORIO(A, q + 1, r)

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 253: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Analise do caso medio

Recorrencia para o caso medio do algoritmoQUICKSORT-ALEATORIO.

T (n) = consumo de tempo medio do algoritmoQUICKSORT-ALEATORIO.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 254: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Analise do caso medio

Recorrencia para o caso medio do algoritmoQUICKSORT-ALEATORIO.

T (n) = consumo de tempo medio do algoritmoQUICKSORT-ALEATORIO.

PARTICIONE-ALEATORIO rearranja o vetor A e devolve umındice q tal que A[p . . .q − 1] ≤ A[q] e A[q + 1 . . . r ] > A[q].

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 255: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Analise do caso medio

Recorrencia para o caso medio do algoritmoQUICKSORT-ALEATORIO.

T (n) = consumo de tempo medio do algoritmoQUICKSORT-ALEATORIO.

PARTICIONE-ALEATORIO rearranja o vetor A e devolve umındice q tal que A[p . . .q − 1] ≤ A[q] e A[q + 1 . . . r ] > A[q].

T (0) = Θ(1)

T (1) = Θ(1)

T (n) =1

n

'

n−1(

k=0

(T (k) + T (n − 1 − k))

)

+Θ(n).

T (n) e Θ(???).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 256: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Analise do caso medio

T (n) =1

n

'

n−1(

k=0

(T (k) + T (n − 1 − k))

)

+ cn

=2

n

n−1(

k=0

T (k) + cn.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 257: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Analise do caso medio

T (n) =1

n

'

n−1(

k=0

(T (k) + T (n − 1 − k))

)

+ cn

=2

n

n−1(

k=0

T (k) + cn.

Vou mostrar que T (n) e O(n lgn).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 258: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Analise do caso medio

T (n) =1

n

'

n−1(

k=0

(T (k) + T (n − 1 − k))

)

+ cn

=2

n

n−1(

k=0

T (k) + cn.

Vou mostrar que T (n) e O(n lgn).

Vou mostrar que T (n) ≤ an lgn + b para n ≥ 1 onde a, b > 0sao constantes.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 259: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Demonstracao

T (n) ≤2

n

n−1(

k=0

T (k) + cn

≤2

n

n−1(

k=0

(ak lg k + b) + cn

=2a

n

n−1(

k=1

k lg k + 2b + cn

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 260: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Demonstracao

T (n) ≤2

n

n−1(

k=0

T (k) + cn

≤2

n

n−1(

k=0

(ak lg k + b) + cn

=2a

n

n−1(

k=1

k lg k + 2b + cn

Leman−1(

k=1

k lg k ≤1

2n2 lgn −

1

8n2.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 261: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Demonstracao

T (n) =2a

n

n−1(

k=1

k lg k + 2b + cn

≤2a

n

*

1

2n2 lgn −

1

8n2

+

+ 2b + cn

= an lgn −a

4n + 2b + cn

= an lgn + b +,

cn + b −a

4n-

≤ an lgn + b,

escolhendo a de modo que a4n ≥ cn + b para n ≥ 1.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 262: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Prova do Lema

n−1(

k=1

k lg k =

⌈n/2⌉−1(

k=1

k lg k +n−1(

k=⌈n/2⌉

k lg k

≤ (lg n − 1)

⌈n/2⌉−1(

k=1

k + lgnn−1(

k=⌈n/2⌉

k

= lgnn−1(

k=1

k −⌈n/2⌉−1(

k=1

k

≤1

2n(n − 1) lgn −

1

2

,n

2− 1

- n

2

≤1

2n2 lgn −

1

8n2

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 263: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Conclusao

O consumo de tempo de QUICKSORT-ALEATORIO no casomedio e O(n lgn).

Exercıcio Mostre que T (n) = Ω(n lgn).

Conclusao:

O consumo de tempo de QUICKSORT-ALEATORIO no casomedio e Θ(n lgn).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 264: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

O problema da ordenacao - cota inferior

Estudamos diversos algoritmos para o problema daordenacao.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 265: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

O problema da ordenacao - cota inferior

Estudamos diversos algoritmos para o problema daordenacao.

Todos eles tem algo em comum: usam somentecomparacoes entre dois elementos do conjunto a serordenado para definir a posicao relativa desses elementos.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 266: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

O problema da ordenacao - cota inferior

Estudamos diversos algoritmos para o problema daordenacao.

Todos eles tem algo em comum: usam somentecomparacoes entre dois elementos do conjunto a serordenado para definir a posicao relativa desses elementos.

Isto e, o resultado da comparacao de xi com xj , i = j ,define se xi sera posicionado antes ou depois de xj noconjunto ordenado.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 267: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

O problema da ordenacao - cota inferior

Estudamos diversos algoritmos para o problema daordenacao.

Todos eles tem algo em comum: usam somentecomparacoes entre dois elementos do conjunto a serordenado para definir a posicao relativa desses elementos.

Isto e, o resultado da comparacao de xi com xj , i = j ,define se xi sera posicionado antes ou depois de xj noconjunto ordenado.

Todos os algoritmos dao uma cota superior para o numerode comparacoes efetuadas por um algoritmo que resolva oproblema da ordenacao.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 268: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

O problema da ordenacao - cota inferior

Estudamos diversos algoritmos para o problema daordenacao.

Todos eles tem algo em comum: usam somentecomparacoes entre dois elementos do conjunto a serordenado para definir a posicao relativa desses elementos.

Isto e, o resultado da comparacao de xi com xj , i = j ,define se xi sera posicionado antes ou depois de xj noconjunto ordenado.

Todos os algoritmos dao uma cota superior para o numerode comparacoes efetuadas por um algoritmo que resolva oproblema da ordenacao.

A menor cota superior e dada pelos algoritmosMERGESORT e o HEAPSORT, que efetuam Θ(n logn)comparacoes no pior caso.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 269: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

O problema da ordenacao - cota inferior

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 270: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

O problema da ordenacao - cota inferior

Sera que e possıvel projetar um algoritmo de ordenacaobaseado em comparacoes ainda mais eficiente?

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 271: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

O problema da ordenacao - cota inferior

Sera que e possıvel projetar um algoritmo de ordenacaobaseado em comparacoes ainda mais eficiente?

Veremos a seguir que nao!

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 272: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

O problema da ordenacao - cota inferior

Sera que e possıvel projetar um algoritmo de ordenacaobaseado em comparacoes ainda mais eficiente?

Veremos a seguir que nao!

E possıvel provar que qualquer algoritmo que ordena nelementos baseado apenas em comparacoes deelementos efetua no mınimo Ω(n logn) comparacoes nopior caso.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 273: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

O problema da ordenacao - cota inferior

Sera que e possıvel projetar um algoritmo de ordenacaobaseado em comparacoes ainda mais eficiente?

Veremos a seguir que nao!

E possıvel provar que qualquer algoritmo que ordena nelementos baseado apenas em comparacoes deelementos efetua no mınimo Ω(n logn) comparacoes nopior caso.

Para demonstrar esse fato, vamos representar osalgoritmos de ordenacao em um modelo computacionalabstrato, denominado arvore (binaria) de decisao.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 274: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Arvores de Decisao - Modelo Abstrato

Os nos internos de uma arvore de decisao representamcomparacoes feitas pelo algoritmo.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 275: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Arvores de Decisao - Modelo Abstrato

Os nos internos de uma arvore de decisao representamcomparacoes feitas pelo algoritmo.

As subarvores de cada no interno representampossibilidades de continuidade das acoes do algoritmoapos a comparacao.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 276: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Arvores de Decisao - Modelo Abstrato

Os nos internos de uma arvore de decisao representamcomparacoes feitas pelo algoritmo.

As subarvores de cada no interno representampossibilidades de continuidade das acoes do algoritmoapos a comparacao.

No caso das arvores binarias de decisao, cada no possuiapenas duas subarvores. Tipicamente, as duassubarvores representam os caminhos a serem seguidosconforme o resultado (verdadeiro ou falso) da comparacaoefetuada.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 277: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Arvores de Decisao - Modelo Abstrato

Os nos internos de uma arvore de decisao representamcomparacoes feitas pelo algoritmo.

As subarvores de cada no interno representampossibilidades de continuidade das acoes do algoritmoapos a comparacao.

No caso das arvores binarias de decisao, cada no possuiapenas duas subarvores. Tipicamente, as duassubarvores representam os caminhos a serem seguidosconforme o resultado (verdadeiro ou falso) da comparacaoefetuada.

As folhas sao as respostas possıveis do algoritmo apos asdecisoes tomadas ao longo dos caminhos da raiz ate asfolhas.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 278: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Arvores de decisao para o problema da ordenacao

Considere a seguinte definicao alternativa do problema daordenacao:

Problema da Ordenacao:

Dado um conjunto de n inteiros x1, x2, . . . , xn, encontre umapermutacao p dos ındices 1 ≤ i ≤ n tal quexp(1) ≤ xp(2) ≤ . . . ≤ xp(n).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 279: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Arvores de decisao para o problema da ordenacao

Considere a seguinte definicao alternativa do problema daordenacao:

Problema da Ordenacao:

Dado um conjunto de n inteiros x1, x2, . . . , xn, encontre umapermutacao p dos ındices 1 ≤ i ≤ n tal quexp(1) ≤ xp(2) ≤ . . . ≤ xp(n).

E possıvel representar um algoritmo para o problema daordenacao atraves de uma arvore de decisao da seguinteforma:

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 280: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Arvores de decisao para o problema da ordenacao

Considere a seguinte definicao alternativa do problema daordenacao:

Problema da Ordenacao:

Dado um conjunto de n inteiros x1, x2, . . . , xn, encontre umapermutacao p dos ındices 1 ≤ i ≤ n tal quexp(1) ≤ xp(2) ≤ . . . ≤ xp(n).

E possıvel representar um algoritmo para o problema daordenacao atraves de uma arvore de decisao da seguinteforma:

Os nos internos representam comparacoes entre doiselementos do conjunto, digamos xi ≤ xj .

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 281: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Arvores de decisao para o problema da ordenacao

Considere a seguinte definicao alternativa do problema daordenacao:

Problema da Ordenacao:

Dado um conjunto de n inteiros x1, x2, . . . , xn, encontre umapermutacao p dos ındices 1 ≤ i ≤ n tal quexp(1) ≤ xp(2) ≤ . . . ≤ xp(n).

E possıvel representar um algoritmo para o problema daordenacao atraves de uma arvore de decisao da seguinteforma:

Os nos internos representam comparacoes entre doiselementos do conjunto, digamos xi ≤ xj .As ramificacoes representam os possıveis resultados dacomparacao: verdadeiro se xi ≤ xj , ou falso se xi > xj .

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 282: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Arvores de decisao para o problema da ordenacao

Considere a seguinte definicao alternativa do problema daordenacao:

Problema da Ordenacao:

Dado um conjunto de n inteiros x1, x2, . . . , xn, encontre umapermutacao p dos ındices 1 ≤ i ≤ n tal quexp(1) ≤ xp(2) ≤ . . . ≤ xp(n).

E possıvel representar um algoritmo para o problema daordenacao atraves de uma arvore de decisao da seguinteforma:

Os nos internos representam comparacoes entre doiselementos do conjunto, digamos xi ≤ xj .As ramificacoes representam os possıveis resultados dacomparacao: verdadeiro se xi ≤ xj , ou falso se xi > xj .As folhas representam possıveis solucoes: as diferentespermutacoes dos n ındices.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 283: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Arvores de Decisao para o Problema da Ordenacao

Veja a arvore de decisao que representa o comportamento doInsertion Sort para um conjunto de 3 elementos:

x1 ≤ x2

x1 ≤ x3

x1 ≤ x3

x2 ≤ x3

x2 ≤ x3⟨1, 2, 3⟩

⟨1, 3, 2⟩

⟨2, 1, 3⟩

⟨2, 3, 1⟩⟨3, 1, 2⟩ ⟨3, 2, 1⟩

Sim

Sim

Sim

Sim

Sim

Nao Nao

Nao

NaoNao

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 284: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Arvores de decisao para o problema da ordenacao

Ao representarmos um algoritmo de ordenacao qualquerbaseado em comparacoes por uma arvore binaria dedecisao, todas as permutacoes de n elementos devem serpossıveis solucoes.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 285: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Arvores de decisao para o problema da ordenacao

Ao representarmos um algoritmo de ordenacao qualquerbaseado em comparacoes por uma arvore binaria dedecisao, todas as permutacoes de n elementos devem serpossıveis solucoes.

Assim, a arvore binaria de decisao deve ter pelo menos n!folhas, podendo ter mais (nada impede que duassequencias distintas de decisoes terminem no mesmoresultado).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 286: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Arvores de decisao para o problema da ordenacao

Ao representarmos um algoritmo de ordenacao qualquerbaseado em comparacoes por uma arvore binaria dedecisao, todas as permutacoes de n elementos devem serpossıveis solucoes.

Assim, a arvore binaria de decisao deve ter pelo menos n!folhas, podendo ter mais (nada impede que duassequencias distintas de decisoes terminem no mesmoresultado).

O caminho mais longo da raiz a uma folha representa opior caso de execucao do algoritmo.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 287: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Arvores de decisao para o problema da ordenacao

Ao representarmos um algoritmo de ordenacao qualquerbaseado em comparacoes por uma arvore binaria dedecisao, todas as permutacoes de n elementos devem serpossıveis solucoes.

Assim, a arvore binaria de decisao deve ter pelo menos n!folhas, podendo ter mais (nada impede que duassequencias distintas de decisoes terminem no mesmoresultado).

O caminho mais longo da raiz a uma folha representa opior caso de execucao do algoritmo.

A altura mınima de uma arvore binaria de decisao compelo menos n! folhas fornece o numero mınimo decomparacoes que o melhor algoritmo de ordenacaobaseado em comparacoes deve efetuar.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 288: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Cota inferior

Qual a altura mınima, em funcao de n, de uma arvorebinaria de decisao com pelo menos n! folhas?

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 289: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Cota inferior

Qual a altura mınima, em funcao de n, de uma arvorebinaria de decisao com pelo menos n! folhas?

Uma arvore binaria de decisao T com altura h tem, nomaximo, 2h folhas.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 290: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Cota inferior

Qual a altura mınima, em funcao de n, de uma arvorebinaria de decisao com pelo menos n! folhas?

Uma arvore binaria de decisao T com altura h tem, nomaximo, 2h folhas.

Portanto, se T tem pelo menos n! folhas, entao n! ≤ 2h, ouseja, h ≥ log2 n!.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 291: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Cota inferior

Qual a altura mınima, em funcao de n, de uma arvorebinaria de decisao com pelo menos n! folhas?

Uma arvore binaria de decisao T com altura h tem, nomaximo, 2h folhas.

Portanto, se T tem pelo menos n! folhas, entao n! ≤ 2h, ouseja, h ≥ log2 n!.

Mas,

log2 n! =.n

i=1 log i

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 292: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Cota inferior

Qual a altura mınima, em funcao de n, de uma arvorebinaria de decisao com pelo menos n! folhas?

Uma arvore binaria de decisao T com altura h tem, nomaximo, 2h folhas.

Portanto, se T tem pelo menos n! folhas, entao n! ≤ 2h, ouseja, h ≥ log2 n!.

Mas,

log2 n! =.n

i=1 log i≥

.ni=⌈n/2⌉ log i

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 293: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Cota inferior

Qual a altura mınima, em funcao de n, de uma arvorebinaria de decisao com pelo menos n! folhas?

Uma arvore binaria de decisao T com altura h tem, nomaximo, 2h folhas.

Portanto, se T tem pelo menos n! folhas, entao n! ≤ 2h, ouseja, h ≥ log2 n!.

Mas,

log2 n! =.n

i=1 log i≥

.ni=⌈n/2⌉ log i

≥.n

i=⌈n/2⌉ logn/2

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 294: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Cota inferior

Qual a altura mınima, em funcao de n, de uma arvorebinaria de decisao com pelo menos n! folhas?

Uma arvore binaria de decisao T com altura h tem, nomaximo, 2h folhas.

Portanto, se T tem pelo menos n! folhas, entao n! ≤ 2h, ouseja, h ≥ log2 n!.

Mas,

log2 n! =.n

i=1 log i≥

.ni=⌈n/2⌉ log i

≥.n

i=⌈n/2⌉ logn/2

≥ (n/2 − 1) logn/2

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 295: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Cota inferior

Qual a altura mınima, em funcao de n, de uma arvorebinaria de decisao com pelo menos n! folhas?

Uma arvore binaria de decisao T com altura h tem, nomaximo, 2h folhas.

Portanto, se T tem pelo menos n! folhas, entao n! ≤ 2h, ouseja, h ≥ log2 n!.

Mas,

log2 n! =.n

i=1 log i≥

.ni=⌈n/2⌉ log i

≥.n

i=⌈n/2⌉ logn/2

≥ (n/2 − 1) logn/2= n/2 log n − n/2 − logn + 1

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 296: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Cota inferior

Qual a altura mınima, em funcao de n, de uma arvorebinaria de decisao com pelo menos n! folhas?

Uma arvore binaria de decisao T com altura h tem, nomaximo, 2h folhas.

Portanto, se T tem pelo menos n! folhas, entao n! ≤ 2h, ouseja, h ≥ log2 n!.

Mas,

log2 n! =.n

i=1 log i≥

.ni=⌈n/2⌉ log i

≥.n

i=⌈n/2⌉ logn/2

≥ (n/2 − 1) logn/2= n/2 log n − n/2 − logn + 1≥ n/4 log n, para n ≥ 16.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 297: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Cota inferior

Qual a altura mınima, em funcao de n, de uma arvorebinaria de decisao com pelo menos n! folhas?

Uma arvore binaria de decisao T com altura h tem, nomaximo, 2h folhas.

Portanto, se T tem pelo menos n! folhas, entao n! ≤ 2h, ouseja, h ≥ log2 n!.

Mas,

log2 n! =.n

i=1 log i≥

.ni=⌈n/2⌉ log i

≥.n

i=⌈n/2⌉ logn/2

≥ (n/2 − 1) logn/2= n/2 log n − n/2 − logn + 1≥ n/4 log n, para n ≥ 16.

Entao, h ∈ Ω(n log n).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 298: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Outro jeito

Devemos ter n! ≤ 2h, ou seja lgn! ≤ h.

Temos que

(n!)2 =n−1/

i=0

(n−i)(i+1) ≥n/

i=1

n = nn

Portanto,

h ≥ lg(n!) ≥1

2n lgn.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 299: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Conclusao

Provamos entao que Ω(n log n) e uma cota inferior para oproblema da ordenacao.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 300: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Conclusao

Provamos entao que Ω(n log n) e uma cota inferior para oproblema da ordenacao.

Portanto, os algoritmos Mergesort e Heapsort saoalgoritmos otimos.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 301: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Conclusao

Provamos entao que Ω(n log n) e uma cota inferior para oproblema da ordenacao.

Portanto, os algoritmos Mergesort e Heapsort saoalgoritmos otimos.

Veremos depois algoritmos lineares para ordenacao, ouseja, que tem complexidade O(n). (Como???)

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 302: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Cotas inferiores de problemas

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 303: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Cotas inferiores de problemas

Em geral e muito difıcil provar cotas inferiores nao triviaisde um problema.

Um problema com entrada de tamanho n tem como cotainferior trivial Ω(n).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 304: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Cotas inferiores de problemas

Em geral e muito difıcil provar cotas inferiores nao triviaisde um problema.

Um problema com entrada de tamanho n tem como cotainferior trivial Ω(n).

Sao pouquıssimos problemas para os quais se conheceuma cota inferior que coincide com a cota superior.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 305: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Cotas inferiores de problemas

Em geral e muito difıcil provar cotas inferiores nao triviaisde um problema.

Um problema com entrada de tamanho n tem como cotainferior trivial Ω(n).

Sao pouquıssimos problemas para os quais se conheceuma cota inferior que coincide com a cota superior.

Um deles e o problema da ordenacao.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 306: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Cotas inferiores de problemas

Em geral e muito difıcil provar cotas inferiores nao triviaisde um problema.

Um problema com entrada de tamanho n tem como cotainferior trivial Ω(n).

Sao pouquıssimos problemas para os quais se conheceuma cota inferior que coincide com a cota superior.

Um deles e o problema da ordenacao.

Veremos mais dois exemplos: busca em um vetorordenado e o problema de encontrar o maximo.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 307: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Busca em vetor ordenado

Dado um vetor crescente A[p . . . r ] e um elemento x , devolverum ındice i tal que A[i ] = x ou −1 se tal ındice nao existe.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 308: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Busca em vetor ordenado

Dado um vetor crescente A[p . . . r ] e um elemento x , devolverum ındice i tal que A[i ] = x ou −1 se tal ındice nao existe.

BUSCA-BINARIA(A, p, r , x)1 se p ≤ r2 entao q ← ⌊(p + r)/2⌋3 se A[q] > x4 entao devolvaBUSCA-BINARIA(A, p, q − 1, x)5 se A[q] < x6 entao devolvaBUSCA-BINARIA(A, q + 1, r , x)7 devolva q A[q] = x8 senao9 devolva −1

Numero de comparacoes: O(lgn).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 309: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Busca em vetor ordenado

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 310: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Busca em vetor ordenado

E possıvel projetar um algoritmo mais rapido?

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 311: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Busca em vetor ordenado

E possıvel projetar um algoritmo mais rapido?

Nao, se o algoritmo baseia-se em comparacoes do tipoA[i] < x , A[i] > x ou A[i] = x .

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 312: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Busca em vetor ordenado

E possıvel projetar um algoritmo mais rapido?

Nao, se o algoritmo baseia-se em comparacoes do tipoA[i] < x , A[i] > x ou A[i] = x .

A cota inferior do numero de comparacoes para oproblema da busca em vetor ordenado e Ω(lg n).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 313: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Busca em vetor ordenado

E possıvel projetar um algoritmo mais rapido?

Nao, se o algoritmo baseia-se em comparacoes do tipoA[i] < x , A[i] > x ou A[i] = x .

A cota inferior do numero de comparacoes para oproblema da busca em vetor ordenado e Ω(lg n).

Pode-se provar isso usando o modelo de arvore dedecisao.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 314: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Cota inferior

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 315: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Cota inferior

Todo algoritmo para o problema da busca em vetorordenado baseado em comparacoes pode serrepresentado atraves de uma arvore de decisao.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 316: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Cota inferior

Todo algoritmo para o problema da busca em vetorordenado baseado em comparacoes pode serrepresentado atraves de uma arvore de decisao.

Cada no interno corresponde a uma comparacao com oelemento procurado x .

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 317: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Cota inferior

Todo algoritmo para o problema da busca em vetorordenado baseado em comparacoes pode serrepresentado atraves de uma arvore de decisao.

Cada no interno corresponde a uma comparacao com oelemento procurado x .

As ramificacoes correspondem ao resultado dacomparacao.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 318: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Cota inferior

Todo algoritmo para o problema da busca em vetorordenado baseado em comparacoes pode serrepresentado atraves de uma arvore de decisao.

Cada no interno corresponde a uma comparacao com oelemento procurado x .

As ramificacoes correspondem ao resultado dacomparacao.

As folhas correspondem as possıveis respostas doalgoritmo. Entao tal arvore deve ter pelo menos n + 1folhas.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 319: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Cota inferior

Todo algoritmo para o problema da busca em vetorordenado baseado em comparacoes pode serrepresentado atraves de uma arvore de decisao.

Cada no interno corresponde a uma comparacao com oelemento procurado x .

As ramificacoes correspondem ao resultado dacomparacao.

As folhas correspondem as possıveis respostas doalgoritmo. Entao tal arvore deve ter pelo menos n + 1folhas.

Logo, a altura da arvore e pelo menos Ω(lg n).

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 320: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Problema do Maximo

Problema:Encontrar o maior elemento de um vetor A[1 . . . n].

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 321: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Problema do Maximo

Problema:Encontrar o maior elemento de um vetor A[1 . . . n].

Existe um algoritmo que faz o servico com n − 1comparacoes.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 322: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Problema do Maximo

Problema:Encontrar o maior elemento de um vetor A[1 . . . n].

Existe um algoritmo que faz o servico com n − 1comparacoes.

Existe um algoritmo que faz menos comparacoes?

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 323: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Problema do Maximo

Problema:Encontrar o maior elemento de um vetor A[1 . . . n].

Existe um algoritmo que faz o servico com n − 1comparacoes.

Existe um algoritmo que faz menos comparacoes?

Nao, se o algoritmo e baseado em comparacoes.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 324: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Problema do Maximo

Problema:Encontrar o maior elemento de um vetor A[1 . . . n].

Existe um algoritmo que faz o servico com n − 1comparacoes.

Existe um algoritmo que faz menos comparacoes?

Nao, se o algoritmo e baseado em comparacoes.

Considere um algoritmo generico baseado emcomparacoes que resolve o problema.Que “cara” ele tem?

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 325: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Maximo

O algoritmo consiste, no fundo, na determinacao de umacolecao A de pares ou arcos (i , j) de elementos distintosem 1, . . . , n tais que A[i ] < A[j ] e existe um “sorvedouro”.

Eis o paradigma de um algoritmo baseado em comparacoes:

MAXIMO(A, n)1 A ← ∅2 enquanto A “nao possui sorvedouro” faca3 Escolha ındice i e j em 1, . . . , n4 se A[i ] < A[j ]5 entao A ← A ∪ (i , j)6 senao A ← A ∪ (j , i)7 devolva A

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2

Page 326: MC458 — Projeto e Análise de Algoritmos Icid/cursos/MC448/Material-didatico/2016s2/pjr... · MC458 — Projeto e Analise de Algoritmos I ... Um algoritmo A tem complexidade de

Conclusao

Qualquer conjunto A devolvido pelo metodo contem uma“arvore enraizada” e portanto contem pelo menos n − 1 arcos.

Assim, qualquer algoritmo baseado em comparacoes queencontra o maior elemento de um vetor A[1 . . . n] faz pelomenos n − 1 comparacoes.

C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e Analise de Algoritmos I v. 2.2