36
Filas de Prioridades Letícia Rodrigues Bueno UFABC

Filas de Prioridadesprofessor.ufabc.edu.br/.../materiais/filaprioridades.pdfFilas de Prioridades Author Letícia Rodrigues Bueno Created Date 8/15/2014 3:41:28 PM Keywords ()

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Filas de Prioridadesprofessor.ufabc.edu.br/.../materiais/filaprioridades.pdfFilas de Prioridades Author Letícia Rodrigues Bueno Created Date 8/15/2014 3:41:28 PM Keywords ()

Filas de Prioridades

Letícia Rodrigues Bueno

UFABC

Page 2: Filas de Prioridadesprofessor.ufabc.edu.br/.../materiais/filaprioridades.pdfFilas de Prioridades Author Letícia Rodrigues Bueno Created Date 8/15/2014 3:41:28 PM Keywords ()

Heaps

• Heaps: lista linear com chaves s1, . . . , sn com propriedadesi ≤ s⌊i/2⌋, para 1 < i < n;

Page 3: Filas de Prioridadesprofessor.ufabc.edu.br/.../materiais/filaprioridades.pdfFilas de Prioridades Author Letícia Rodrigues Bueno Created Date 8/15/2014 3:41:28 PM Keywords ()

Heaps

• Heaps: lista linear com chaves s1, . . . , sn com propriedadesi ≤ s⌊i/2⌋, para 1 < i < n;

95 60 78 39 28 66 70 331 2 3 4 5 6 7 8

95

60 78

39 28 66 70

33

Page 4: Filas de Prioridadesprofessor.ufabc.edu.br/.../materiais/filaprioridades.pdfFilas de Prioridades Author Letícia Rodrigues Bueno Created Date 8/15/2014 3:41:28 PM Keywords ()

Heaps

• Heaps: lista linear com chaves s1, . . . , sn com propriedadesi ≤ s⌊i/2⌋, para 1 < i < n;

95 60 78 39 28 66 70 331 2 3 4 5 6 7 8

95

60 78

39 28 66 70

33

Page 5: Filas de Prioridadesprofessor.ufabc.edu.br/.../materiais/filaprioridades.pdfFilas de Prioridades Author Letícia Rodrigues Bueno Created Date 8/15/2014 3:41:28 PM Keywords ()

Heaps

• Heaps: lista linear com chaves s1, . . . , sn com propriedadesi ≤ s⌊i/2⌋, para 1 < i < n;

95 60 78 39 28 66 70 331 2 3 4 5 6 7 8

95

60 78

39 28 66 70

33

Page 6: Filas de Prioridadesprofessor.ufabc.edu.br/.../materiais/filaprioridades.pdfFilas de Prioridades Author Letícia Rodrigues Bueno Created Date 8/15/2014 3:41:28 PM Keywords ()

Heaps

• Heaps: lista linear com chaves s1, . . . , sn com propriedadesi ≤ s⌊i/2⌋, para 1 < i < n;

95 60 78 39 28 66 70 331 2 3 4 5 6 7 8

95

60 78

39 28 66 70

33

Page 7: Filas de Prioridadesprofessor.ufabc.edu.br/.../materiais/filaprioridades.pdfFilas de Prioridades Author Letícia Rodrigues Bueno Created Date 8/15/2014 3:41:28 PM Keywords ()

Heaps

• Heaps: lista linear com chaves s1, . . . , sn com propriedadesi ≤ s⌊i/2⌋, para 1 < i < n;

95 60 78 39 28 66 70 331 2 3 4 5 6 7 8

95

60 78

39 28 66 70

33

Page 8: Filas de Prioridadesprofessor.ufabc.edu.br/.../materiais/filaprioridades.pdfFilas de Prioridades Author Letícia Rodrigues Bueno Created Date 8/15/2014 3:41:28 PM Keywords ()

Heaps - Aplicações

• Dois tipos: heap mínimo e heap máximo;

Page 9: Filas de Prioridadesprofessor.ufabc.edu.br/.../materiais/filaprioridades.pdfFilas de Prioridades Author Letícia Rodrigues Bueno Created Date 8/15/2014 3:41:28 PM Keywords ()

Heaps - Aplicações

• Dois tipos: heap mínimo e heap máximo;

• Aplicações: implementação de lista de prioridades;

Page 10: Filas de Prioridadesprofessor.ufabc.edu.br/.../materiais/filaprioridades.pdfFilas de Prioridades Author Letícia Rodrigues Bueno Created Date 8/15/2014 3:41:28 PM Keywords ()

Heaps - Aplicações

• Dois tipos: heap mínimo e heap máximo;

• Aplicações: implementação de lista de prioridades;

OperaçãoLista Lista

Heapnão-ordenada Ordenada

Seleção O(n) O(1) O(1)Inserção O(1) O(n) O(log n)Remoção O(n) O(1) O(log n)Alteração O(n) O(n) O(log n)Construção O(n) O(n log n) O(n)

Page 11: Filas de Prioridadesprofessor.ufabc.edu.br/.../materiais/filaprioridades.pdfFilas de Prioridades Author Letícia Rodrigues Bueno Created Date 8/15/2014 3:41:28 PM Keywords ()

Métodos Heap: aumentando prioridade

Método subir:

95

60 78

39 28 66 70

33

Page 12: Filas de Prioridadesprofessor.ufabc.edu.br/.../materiais/filaprioridades.pdfFilas de Prioridades Author Letícia Rodrigues Bueno Created Date 8/15/2014 3:41:28 PM Keywords ()

Métodos Heap: aumentando prioridade

Método subir:

95

60 78

39 28 66 70

33 98

Page 13: Filas de Prioridadesprofessor.ufabc.edu.br/.../materiais/filaprioridades.pdfFilas de Prioridades Author Letícia Rodrigues Bueno Created Date 8/15/2014 3:41:28 PM Keywords ()

Métodos Heap: aumentando prioridade

Método subir:

95

60 78

39 28 98 70

33

Page 14: Filas de Prioridadesprofessor.ufabc.edu.br/.../materiais/filaprioridades.pdfFilas de Prioridades Author Letícia Rodrigues Bueno Created Date 8/15/2014 3:41:28 PM Keywords ()

Métodos Heap: aumentando prioridade

Método subir:

95

60 98

39 28 78 70

33

Page 15: Filas de Prioridadesprofessor.ufabc.edu.br/.../materiais/filaprioridades.pdfFilas de Prioridades Author Letícia Rodrigues Bueno Created Date 8/15/2014 3:41:28 PM Keywords ()

Métodos Heap: aumentando prioridade

Método subir:

98

60 95

39 28 78 70

33

Page 16: Filas de Prioridadesprofessor.ufabc.edu.br/.../materiais/filaprioridades.pdfFilas de Prioridades Author Letícia Rodrigues Bueno Created Date 8/15/2014 3:41:28 PM Keywords ()

Métodos Heap: diminuindo prioridade

Método descer:

95

60 78

39 28 66 70

33

Page 17: Filas de Prioridadesprofessor.ufabc.edu.br/.../materiais/filaprioridades.pdfFilas de Prioridades Author Letícia Rodrigues Bueno Created Date 8/15/2014 3:41:28 PM Keywords ()

Métodos Heap: diminuindo prioridade

Método descer:

95

60 78

39 28 66 70

33

37

Page 18: Filas de Prioridadesprofessor.ufabc.edu.br/.../materiais/filaprioridades.pdfFilas de Prioridades Author Letícia Rodrigues Bueno Created Date 8/15/2014 3:41:28 PM Keywords ()

Métodos Heap: diminuindo prioridade

Método descer:

37

60 78

39 28 66 70

33

Page 19: Filas de Prioridadesprofessor.ufabc.edu.br/.../materiais/filaprioridades.pdfFilas de Prioridades Author Letícia Rodrigues Bueno Created Date 8/15/2014 3:41:28 PM Keywords ()

Métodos Heap: diminuindo prioridade

Método descer:

78

60 37

39 28 66 70

33

Page 20: Filas de Prioridadesprofessor.ufabc.edu.br/.../materiais/filaprioridades.pdfFilas de Prioridades Author Letícia Rodrigues Bueno Created Date 8/15/2014 3:41:28 PM Keywords ()

Métodos Heap: diminuindo prioridade

Método descer:

78

60 70

39 28 66 37

33

Page 21: Filas de Prioridadesprofessor.ufabc.edu.br/.../materiais/filaprioridades.pdfFilas de Prioridades Author Letícia Rodrigues Bueno Created Date 8/15/2014 3:41:28 PM Keywords ()

Métodos Heap

1 subir(i):2 j = ⌊i/2⌋3 se j ≥ 1 então4 se T [i] > T [j] então5 T [i] ⇔ T [j]6 subir(j)

1 descer(i, n):2 j = 2 ∗ i3 se j ≤ n então4 se j < n então4 se T [j + 1] > T [j] então5 j = j + 16 se T [i] < T [j] então7 T [i] ⇔ T [j]8 descer(j, n)

Page 22: Filas de Prioridadesprofessor.ufabc.edu.br/.../materiais/filaprioridades.pdfFilas de Prioridades Author Letícia Rodrigues Bueno Created Date 8/15/2014 3:41:28 PM Keywords ()

Métodos Heap

1 subir(i):2 j = ⌊i/2⌋3 se j ≥ 1 então4 se T [i] > T [j] então5 T [i] ⇔ T [j]6 subir(j)

1 descer(i, n):2 j = 2 ∗ i3 se j ≤ n então4 se j < n então4 se T [j + 1] > T [j] então5 j = j + 16 se T [i] < T [j] então7 T [i] ⇔ T [j]8 descer(j, n)

Análise da complexidade:

Page 23: Filas de Prioridadesprofessor.ufabc.edu.br/.../materiais/filaprioridades.pdfFilas de Prioridades Author Letícia Rodrigues Bueno Created Date 8/15/2014 3:41:28 PM Keywords ()

Métodos Heap

1 subir(i):2 j = ⌊i/2⌋3 se j ≥ 1 então4 se T [i] > T [j] então5 T [i] ⇔ T [j]6 subir(j)

1 descer(i, n):2 j = 2 ∗ i3 se j ≤ n então4 se j < n então4 se T [j + 1] > T [j] então5 j = j + 16 se T [i] < T [j] então7 T [i] ⇔ T [j]8 descer(j, n)

Análise da complexidade:

• Subir: percurso decaminho em árvorebinária completa;

Page 24: Filas de Prioridadesprofessor.ufabc.edu.br/.../materiais/filaprioridades.pdfFilas de Prioridades Author Letícia Rodrigues Bueno Created Date 8/15/2014 3:41:28 PM Keywords ()

Métodos Heap

1 subir(i):2 j = ⌊i/2⌋3 se j ≥ 1 então4 se T [i] > T [j] então5 T [i] ⇔ T [j]6 subir(j)

1 descer(i, n):2 j = 2 ∗ i3 se j ≤ n então4 se j < n então4 se T [j + 1] > T [j] então5 j = j + 16 se T [i] < T [j] então7 T [i] ⇔ T [j]8 descer(j, n)

Análise da complexidade:

• Subir: percurso decaminho em árvorebinária completa;

• Descer: percurso decaminho em árvorebinária completa;

Page 25: Filas de Prioridadesprofessor.ufabc.edu.br/.../materiais/filaprioridades.pdfFilas de Prioridades Author Letícia Rodrigues Bueno Created Date 8/15/2014 3:41:28 PM Keywords ()

Métodos Heap

1 subir(i):2 j = ⌊i/2⌋3 se j ≥ 1 então4 se T [i] > T [j] então5 T [i] ⇔ T [j]6 subir(j)

1 descer(i, n):2 j = 2 ∗ i3 se j ≤ n então4 se j < n então4 se T [j + 1] > T [j] então5 j = j + 16 se T [i] < T [j] então7 T [i] ⇔ T [j]8 descer(j, n)

Análise da complexidade:

• Subir: percurso decaminho em árvorebinária completa;

• Descer: percurso decaminho em árvorebinária completa;

• Complexidade:O(log n)

Page 26: Filas de Prioridadesprofessor.ufabc.edu.br/.../materiais/filaprioridades.pdfFilas de Prioridades Author Letícia Rodrigues Bueno Created Date 8/15/2014 3:41:28 PM Keywords ()

Métodos Heap: inserir, remover e construir

Page 27: Filas de Prioridadesprofessor.ufabc.edu.br/.../materiais/filaprioridades.pdfFilas de Prioridades Author Letícia Rodrigues Bueno Created Date 8/15/2014 3:41:28 PM Keywords ()

Métodos Heap: inserir, remover e construir

• Inserir: insere em n + 1 e aplica subir(). Complexidade:

Page 28: Filas de Prioridadesprofessor.ufabc.edu.br/.../materiais/filaprioridades.pdfFilas de Prioridades Author Letícia Rodrigues Bueno Created Date 8/15/2014 3:41:28 PM Keywords ()

Métodos Heap: inserir, remover e construir

• Inserir: insere em n + 1 e aplica subir(). Complexidade:O(log n);

Page 29: Filas de Prioridadesprofessor.ufabc.edu.br/.../materiais/filaprioridades.pdfFilas de Prioridades Author Letícia Rodrigues Bueno Created Date 8/15/2014 3:41:28 PM Keywords ()

Métodos Heap: inserir, remover e construir

• Inserir: insere em n + 1 e aplica subir(). Complexidade:O(log n);

• Remover: remove posição 1, coloca chave n em 1 eaplica método descer(). Complexidade:

Page 30: Filas de Prioridadesprofessor.ufabc.edu.br/.../materiais/filaprioridades.pdfFilas de Prioridades Author Letícia Rodrigues Bueno Created Date 8/15/2014 3:41:28 PM Keywords ()

Métodos Heap: inserir, remover e construir

• Inserir: insere em n + 1 e aplica subir(). Complexidade:O(log n);

• Remover: remove posição 1, coloca chave n em 1 eaplica método descer(). Complexidade: O(log n);

Page 31: Filas de Prioridadesprofessor.ufabc.edu.br/.../materiais/filaprioridades.pdfFilas de Prioridades Author Letícia Rodrigues Bueno Created Date 8/15/2014 3:41:28 PM Keywords ()

Métodos Heap: inserir, remover e construir

• Inserir: insere em n + 1 e aplica subir(). Complexidade:O(log n);

• Remover: remove posição 1, coloca chave n em 1 eaplica método descer(). Complexidade: O(log n);

• Construção: para i = ⌊n/2⌋ até 1 aplique descer(i ,n).

Page 32: Filas de Prioridadesprofessor.ufabc.edu.br/.../materiais/filaprioridades.pdfFilas de Prioridades Author Letícia Rodrigues Bueno Created Date 8/15/2014 3:41:28 PM Keywords ()

Métodos Heap: inserir, remover e construir

• Inserir: insere em n + 1 e aplica subir(). Complexidade:O(log n);

• Remover: remove posição 1, coloca chave n em 1 eaplica método descer(). Complexidade: O(log n);

• Construção: para i = ⌊n/2⌋ até 1 aplique descer(i ,n).Complexidade:

Page 33: Filas de Prioridadesprofessor.ufabc.edu.br/.../materiais/filaprioridades.pdfFilas de Prioridades Author Letícia Rodrigues Bueno Created Date 8/15/2014 3:41:28 PM Keywords ()

Métodos Heap: inserir, remover e construir

• Inserir: insere em n + 1 e aplica subir(). Complexidade:O(log n);

• Remover: remove posição 1, coloca chave n em 1 eaplica método descer(). Complexidade: O(log n);

• Construção: para i = ⌊n/2⌋ até 1 aplique descer(i ,n).Complexidade: O(n);

95 60 78 39 28 66 70 331 2 3 4 5 6 7 8

folhas

Page 34: Filas de Prioridadesprofessor.ufabc.edu.br/.../materiais/filaprioridades.pdfFilas de Prioridades Author Letícia Rodrigues Bueno Created Date 8/15/2014 3:41:28 PM Keywords ()

Exercícios

1. Escreva uma função que decida se um vetor V [1 . . . n] éum heap.

Page 35: Filas de Prioridadesprofessor.ufabc.edu.br/.../materiais/filaprioridades.pdfFilas de Prioridades Author Letícia Rodrigues Bueno Created Date 8/15/2014 3:41:28 PM Keywords ()

Exercícios

1. Escreva uma função que decida se um vetor V [1 . . . n] éum heap.

2. O que você acha de ordenarmos um vetor em ordemdecrescente com o objetivo de transformá-lo em um heap?

Page 36: Filas de Prioridadesprofessor.ufabc.edu.br/.../materiais/filaprioridades.pdfFilas de Prioridades Author Letícia Rodrigues Bueno Created Date 8/15/2014 3:41:28 PM Keywords ()

Bibliografia Utilizada

CORMEN, T. H.; LEISERSON, C. E.; RIVEST, R. L. e STEIN, C.Introduction to Algorithms, 3a edição, MIT Press, 2009.

SZWARCFITER, J. L. e MARKENZON, L. Estruturas de Dados eseus Algoritmos, LTC, 1994.

ZIVIANI, N. Projeto de Algoritmos: com implementações em Pascal eC, 2a edição, Cengage Learning, 2009.