Filas de Prioridadesprofessor.ufabc.edu.br/.../materiais/filaprioridades.pdfFilas de Prioridades...
Transcript of Filas de Prioridadesprofessor.ufabc.edu.br/.../materiais/filaprioridades.pdfFilas de Prioridades...
![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 () ...](https://reader036.fdocuments.us/reader036/viewer/2022062920/5f0265317e708231d4041091/html5/thumbnails/1.jpg)
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 () ...](https://reader036.fdocuments.us/reader036/viewer/2022062920/5f0265317e708231d4041091/html5/thumbnails/2.jpg)
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 () ...](https://reader036.fdocuments.us/reader036/viewer/2022062920/5f0265317e708231d4041091/html5/thumbnails/3.jpg)
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 () ...](https://reader036.fdocuments.us/reader036/viewer/2022062920/5f0265317e708231d4041091/html5/thumbnails/4.jpg)
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 () ...](https://reader036.fdocuments.us/reader036/viewer/2022062920/5f0265317e708231d4041091/html5/thumbnails/5.jpg)
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 () ...](https://reader036.fdocuments.us/reader036/viewer/2022062920/5f0265317e708231d4041091/html5/thumbnails/6.jpg)
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 () ...](https://reader036.fdocuments.us/reader036/viewer/2022062920/5f0265317e708231d4041091/html5/thumbnails/7.jpg)
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 () ...](https://reader036.fdocuments.us/reader036/viewer/2022062920/5f0265317e708231d4041091/html5/thumbnails/8.jpg)
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 () ...](https://reader036.fdocuments.us/reader036/viewer/2022062920/5f0265317e708231d4041091/html5/thumbnails/9.jpg)
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 () ...](https://reader036.fdocuments.us/reader036/viewer/2022062920/5f0265317e708231d4041091/html5/thumbnails/10.jpg)
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 () ...](https://reader036.fdocuments.us/reader036/viewer/2022062920/5f0265317e708231d4041091/html5/thumbnails/11.jpg)
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 () ...](https://reader036.fdocuments.us/reader036/viewer/2022062920/5f0265317e708231d4041091/html5/thumbnails/12.jpg)
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 () ...](https://reader036.fdocuments.us/reader036/viewer/2022062920/5f0265317e708231d4041091/html5/thumbnails/13.jpg)
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 () ...](https://reader036.fdocuments.us/reader036/viewer/2022062920/5f0265317e708231d4041091/html5/thumbnails/14.jpg)
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 () ...](https://reader036.fdocuments.us/reader036/viewer/2022062920/5f0265317e708231d4041091/html5/thumbnails/15.jpg)
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 () ...](https://reader036.fdocuments.us/reader036/viewer/2022062920/5f0265317e708231d4041091/html5/thumbnails/16.jpg)
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 () ...](https://reader036.fdocuments.us/reader036/viewer/2022062920/5f0265317e708231d4041091/html5/thumbnails/17.jpg)
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 () ...](https://reader036.fdocuments.us/reader036/viewer/2022062920/5f0265317e708231d4041091/html5/thumbnails/18.jpg)
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 () ...](https://reader036.fdocuments.us/reader036/viewer/2022062920/5f0265317e708231d4041091/html5/thumbnails/19.jpg)
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 () ...](https://reader036.fdocuments.us/reader036/viewer/2022062920/5f0265317e708231d4041091/html5/thumbnails/20.jpg)
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 () ...](https://reader036.fdocuments.us/reader036/viewer/2022062920/5f0265317e708231d4041091/html5/thumbnails/21.jpg)
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 () ...](https://reader036.fdocuments.us/reader036/viewer/2022062920/5f0265317e708231d4041091/html5/thumbnails/22.jpg)
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 () ...](https://reader036.fdocuments.us/reader036/viewer/2022062920/5f0265317e708231d4041091/html5/thumbnails/23.jpg)
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 () ...](https://reader036.fdocuments.us/reader036/viewer/2022062920/5f0265317e708231d4041091/html5/thumbnails/24.jpg)
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 () ...](https://reader036.fdocuments.us/reader036/viewer/2022062920/5f0265317e708231d4041091/html5/thumbnails/25.jpg)
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 () ...](https://reader036.fdocuments.us/reader036/viewer/2022062920/5f0265317e708231d4041091/html5/thumbnails/26.jpg)
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 () ...](https://reader036.fdocuments.us/reader036/viewer/2022062920/5f0265317e708231d4041091/html5/thumbnails/27.jpg)
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 () ...](https://reader036.fdocuments.us/reader036/viewer/2022062920/5f0265317e708231d4041091/html5/thumbnails/28.jpg)
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 () ...](https://reader036.fdocuments.us/reader036/viewer/2022062920/5f0265317e708231d4041091/html5/thumbnails/29.jpg)
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 () ...](https://reader036.fdocuments.us/reader036/viewer/2022062920/5f0265317e708231d4041091/html5/thumbnails/30.jpg)
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 () ...](https://reader036.fdocuments.us/reader036/viewer/2022062920/5f0265317e708231d4041091/html5/thumbnails/31.jpg)
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 () ...](https://reader036.fdocuments.us/reader036/viewer/2022062920/5f0265317e708231d4041091/html5/thumbnails/32.jpg)
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 () ...](https://reader036.fdocuments.us/reader036/viewer/2022062920/5f0265317e708231d4041091/html5/thumbnails/33.jpg)
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 () ...](https://reader036.fdocuments.us/reader036/viewer/2022062920/5f0265317e708231d4041091/html5/thumbnails/34.jpg)
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 () ...](https://reader036.fdocuments.us/reader036/viewer/2022062920/5f0265317e708231d4041091/html5/thumbnails/35.jpg)
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 () ...](https://reader036.fdocuments.us/reader036/viewer/2022062920/5f0265317e708231d4041091/html5/thumbnails/36.jpg)
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.