Ordenação e Busca em...

39
Ordenação e Busca em Arquivos Cristina D. A. Ciferri Thiago A. S. Pardo Leandro C. Cintra M.C.F. de Oliveira Moacir Ponti Jr.

Transcript of Ordenação e Busca em...

Page 1: Ordenação e Busca em Arquivoswiki.icmc.usp.br/images/f/f7/SCC0607022018ordenacaoInternaExterna.pdf · Heapsort n Parte 1 = leitura; parte 2 = ordenação n começa ordenando um

Ordenação e

Busca em Arquivos

Cristina D. A. Ciferri Thiago A. S. Pardo Leandro C. Cintra M.C.F. de Oliveira Moacir Ponti Jr.

Page 2: Ordenação e Busca em Arquivoswiki.icmc.usp.br/images/f/f7/SCC0607022018ordenacaoInternaExterna.pdf · Heapsort n Parte 1 = leitura; parte 2 = ordenação n começa ordenando um

Ordenação n  Facilita a busca n  Pode ajudar a diminuir o número de

acessos a disco

Page 3: Ordenação e Busca em Arquivoswiki.icmc.usp.br/images/f/f7/SCC0607022018ordenacaoInternaExterna.pdf · Heapsort n Parte 1 = leitura; parte 2 = ordenação n começa ordenando um

Busca Sequencial e Binária n  Busca sequencial

n  recupera cada registro do arquivo, verificando se os valores dos atributos satisfazem à condição de seleção

n  Busca binária n  recupera registros quando a condição de

seleção envolve uma comparação de igualdade no atributo que determina a ordenação do arquivo

Page 4: Ordenação e Busca em Arquivoswiki.icmc.usp.br/images/f/f7/SCC0607022018ordenacaoInternaExterna.pdf · Heapsort n Parte 1 = leitura; parte 2 = ordenação n começa ordenando um

Custos: Comparações

n  n: número de registros que são comparados n  todos os registros são varridos (pior caso) Ø  complexidade: O(n)

Cbusca_sequencial = n

Cbusca_binária = log2(n) + 1

n  n: número de registros que são comparados Ø  complexidade: O(log n)

Page 5: Ordenação e Busca em Arquivoswiki.icmc.usp.br/images/f/f7/SCC0607022018ordenacaoInternaExterna.pdf · Heapsort n Parte 1 = leitura; parte 2 = ordenação n começa ordenando um

Custos: Acessos a Disco

n  b: número de blocos que contêm os registros n  todos os blocos são varridos

Cbusca_sequencial = b

Cbusca_binária = log2(b) + ⎡s/bfr⎤ - 1

n  log2(b): custo para localizar o primeiro registro n  ⎡s/bfr⎤: blocos ocupados pelos registros que

satisfazem à condição de seleção n  1: custo para recuperar o primeiro registro

Page 6: Ordenação e Busca em Arquivoswiki.icmc.usp.br/images/f/f7/SCC0607022018ordenacaoInternaExterna.pdf · Heapsort n Parte 1 = leitura; parte 2 = ordenação n começa ordenando um

Ordenação Interna

Page 7: Ordenação e Busca em Arquivoswiki.icmc.usp.br/images/f/f7/SCC0607022018ordenacaoInternaExterna.pdf · Heapsort n Parte 1 = leitura; parte 2 = ordenação n começa ordenando um

Arquivo Completo Cabe em RAM

n  Etapas 1.  leitura de todos os registros armazenados

em disco para a RAM 2.  ordenação dos registros em RAM

§ escolha do campo base para ordenação § uso de um método de ordenação

3.  escrita de todos os registros armazenados em RAM para o disco

Page 8: Ordenação e Busca em Arquivoswiki.icmc.usp.br/images/f/f7/SCC0607022018ordenacaoInternaExterna.pdf · Heapsort n Parte 1 = leitura; parte 2 = ordenação n começa ordenando um

Arquivo Ordenado n  Registros de tamanho fixo

A N A | R U A b A U G U S T O b P A I V A | I B A T E | b b

A N T O N I A | R U A b X V b D E b M A I O | I B A T E | b

J O A O | R U A b A | R I O b C L A R O | b b b b b b b b b

M A R I A | R U A b 1 | S A O b C A R L O S | b b b b b b b

P E D R O | R U A b X V | S A O b C A R L O S | b b b b b b

ordenação baseada em um determinado campo, usando suas chaves

Page 9: Ordenação e Busca em Arquivoswiki.icmc.usp.br/images/f/f7/SCC0607022018ordenacaoInternaExterna.pdf · Heapsort n Parte 1 = leitura; parte 2 = ordenação n começa ordenando um

Chave (KEY) n  Está associada a um registro e permite

a sua recuperação n  Chave primária

n  identifica univocamente um registro n  não tem repetição

n  Chave secundária n  não identifica univocamente um registro n  tem repetição

Page 10: Ordenação e Busca em Arquivoswiki.icmc.usp.br/images/f/f7/SCC0607022018ordenacaoInternaExterna.pdf · Heapsort n Parte 1 = leitura; parte 2 = ordenação n começa ordenando um

Forma Canônica da Chave n  Uma única representação para uma

determinada chave n  Exemplo

n  "Ana", "ANA", ou "ana" devem indicar o mesmo registro

n  Forma canônica: todos os caracteres em letras maiúsculas à ANA

Page 11: Ordenação e Busca em Arquivoswiki.icmc.usp.br/images/f/f7/SCC0607022018ordenacaoInternaExterna.pdf · Heapsort n Parte 1 = leitura; parte 2 = ordenação n começa ordenando um

Custo n  Soma dos custos das 3 etapas

n  custo para ler o arquivo do disco para a RAM n  custo para escrever o arquivo da RAM para o disco n  custo do método de ordenação escolhido

n  Quicksort: O(n lg(n)) n  Heapsort: O(n lg(n))

n  n: número de registros que são comparados

n  Importante n  leitura e escrita sequenciais minimizam

acessos a disco

Page 12: Ordenação e Busca em Arquivoswiki.icmc.usp.br/images/f/f7/SCC0607022018ordenacaoInternaExterna.pdf · Heapsort n Parte 1 = leitura; parte 2 = ordenação n começa ordenando um

Como Melhorar o Desempenho (custo)?

n  Paralelizando a ordenação com o processamento de entrada e saída (ou seja, leitura e escrita de registros)

parte 1 = leitura; parte 2 = ordenação

parte 1 = ordenação; parte 2 = escrita

possíveis paralelismos

Page 13: Ordenação e Busca em Arquivoswiki.icmc.usp.br/images/f/f7/SCC0607022018ordenacaoInternaExterna.pdf · Heapsort n Parte 1 = leitura; parte 2 = ordenação n começa ordenando um

Heapsort n  Parte 1 = leitura; parte 2 = ordenação

n  começa ordenando um conjunto inicial de registros, construindo o heap

n  conforme mais dados vão chegando, eles vão sendo incorporados ao heap

n  Não é necessário que o arquivo inteiro esteja carregado em RAM n  lê uma página de disco (bloco de disco) por vez e

opera sobre seus registros antes de ler a próxima página (bloco de disco)

Page 14: Ordenação e Busca em Arquivoswiki.icmc.usp.br/images/f/f7/SCC0607022018ordenacaoInternaExterna.pdf · Heapsort n Parte 1 = leitura; parte 2 = ordenação n começa ordenando um

n  Estrutura que mantém as chaves n  Árvore binária, implementada como

vetor A

B C

E H I D

G F

E H I D G F A B C 1 2 3 4 5 6 7 8 9

Filhos de i: 2i e 2i+1

Pai de j: ⎣j/2⎦

Heap

Page 15: Ordenação e Busca em Arquivoswiki.icmc.usp.br/images/f/f7/SCC0607022018ordenacaoInternaExterna.pdf · Heapsort n Parte 1 = leitura; parte 2 = ordenação n começa ordenando um

Construção do heap

n  Algoritmo n  insere o elemento no fim do vetor n  enquanto o elemento for menor do que o

seu pai, troca-o de lugar com o pai

n  Exemplo n  heap com 9 posições n  chaves: F, D, C, G, H, I, B, E, A

Page 16: Ordenação e Busca em Arquivoswiki.icmc.usp.br/images/f/f7/SCC0607022018ordenacaoInternaExterna.pdf · Heapsort n Parte 1 = leitura; parte 2 = ordenação n começa ordenando um

n  Elemento: F

F 1 2 3 4 5 6 7 8 9

1 2 3 4 5 6 7 8 9

Construção do heap

Page 17: Ordenação e Busca em Arquivoswiki.icmc.usp.br/images/f/f7/SCC0607022018ordenacaoInternaExterna.pdf · Heapsort n Parte 1 = leitura; parte 2 = ordenação n começa ordenando um

n  Elemento: D

D F 1 2 3 4 5 6 7 8 9

F D 1 2 3 4 5 6 7 8 9

Construção do heap

Page 18: Ordenação e Busca em Arquivoswiki.icmc.usp.br/images/f/f7/SCC0607022018ordenacaoInternaExterna.pdf · Heapsort n Parte 1 = leitura; parte 2 = ordenação n começa ordenando um

n  Elemento: C

C F D 1 2 3 4 5 6 7 8 9

D F C 1 2 3 4 5 6 7 8 9

Construção do heap

Page 19: Ordenação e Busca em Arquivoswiki.icmc.usp.br/images/f/f7/SCC0607022018ordenacaoInternaExterna.pdf · Heapsort n Parte 1 = leitura; parte 2 = ordenação n começa ordenando um

n  Elemento: G

G C F D 1 2 3 4 5 6 7 8 9

Construção do heap

Page 20: Ordenação e Busca em Arquivoswiki.icmc.usp.br/images/f/f7/SCC0607022018ordenacaoInternaExterna.pdf · Heapsort n Parte 1 = leitura; parte 2 = ordenação n começa ordenando um

n  Elemento: H

G H C F D 1 2 3 4 5 6 7 8 9

Construção do heap

Page 21: Ordenação e Busca em Arquivoswiki.icmc.usp.br/images/f/f7/SCC0607022018ordenacaoInternaExterna.pdf · Heapsort n Parte 1 = leitura; parte 2 = ordenação n começa ordenando um

n  Elemento: I

G H I C F D 1 2 3 4 5 6 7 8 9

Construção do heap

Page 22: Ordenação e Busca em Arquivoswiki.icmc.usp.br/images/f/f7/SCC0607022018ordenacaoInternaExterna.pdf · Heapsort n Parte 1 = leitura; parte 2 = ordenação n começa ordenando um

n  Elemento: B

G H I D B F C 1 2 3 4 5 6 7 8 9

G H I B C F D 1 2 3 4 5 6 7 8 9

Construção do heap

Page 23: Ordenação e Busca em Arquivoswiki.icmc.usp.br/images/f/f7/SCC0607022018ordenacaoInternaExterna.pdf · Heapsort n Parte 1 = leitura; parte 2 = ordenação n começa ordenando um

n  Elemento: E

F H I D G B E C 1 2 3 4 5 6 7 8 9

G H I D E B F C 1 2 3 4 5 6 7 8 9

Construção do heap

Page 24: Ordenação e Busca em Arquivoswiki.icmc.usp.br/images/f/f7/SCC0607022018ordenacaoInternaExterna.pdf · Heapsort n Parte 1 = leitura; parte 2 = ordenação n começa ordenando um

n  Elemento: A

E H I D G F A B C 1 2 3 4 5 6 7 8 9

F H I D G A B E C 1 2 3 4 5 6 7 8 9

Construção do heap

Page 25: Ordenação e Busca em Arquivoswiki.icmc.usp.br/images/f/f7/SCC0607022018ordenacaoInternaExterna.pdf · Heapsort n Parte 1 = leitura; parte 2 = ordenação n começa ordenando um

n  Percebe-se que

n  O heap se rearranja conforme novos elementos são inseridos

n  Portanto, não é preciso ter todos os registros para se iniciar a ordenação

n  Enquanto ordenação é feita, novos blocos de registros podem ser lidos e adicionados ao final do vetor, para serem absorvidos na sequência

Paralelismo leitura/ordenação

Page 26: Ordenação e Busca em Arquivoswiki.icmc.usp.br/images/f/f7/SCC0607022018ordenacaoInternaExterna.pdf · Heapsort n Parte 1 = leitura; parte 2 = ordenação n começa ordenando um

Vetor/heap Leitura de 1º bloco de registros

Vetor/heap Leitura de 2º bloco de registros

Ordenação do bloco: adicionando registro por registro ao heap

Vetor/heap Leitura de 3º bloco de registros

Ordenação dos blocos: adicionando registro por registro ao heap

...

Paralelismo leitura/ordenação

Page 27: Ordenação e Busca em Arquivoswiki.icmc.usp.br/images/f/f7/SCC0607022018ordenacaoInternaExterna.pdf · Heapsort n Parte 1 = leitura; parte 2 = ordenação n começa ordenando um

Heapsort

n  Parte 1 = ordenação; parte 2 = escrita n  recupera o registro da raiz do heap n  enquanto rearranja o heap, grava esse registro no

arquivo de saída

n  Rearranjo do heap n  retira o elemento da raiz n  coloca o último elemento k do heap como raiz n  enquanto k for maior do que seus filhos, troca-o

de lugar com seu menor filho

Page 28: Ordenação e Busca em Arquivoswiki.icmc.usp.br/images/f/f7/SCC0607022018ordenacaoInternaExterna.pdf · Heapsort n Parte 1 = leitura; parte 2 = ordenação n começa ordenando um

Exemplo

E H I D G F A B C 1 2 3 4 5 6 7 8 9

Recupera-se raiz A, colocando em seu lugar F

E H I D G --- F B C 1 2 3 4 5 6 7 8 9

Enquanto grava A no arquivo ordenado, rearranja heap

F H I D G --- B E C 1 2 3 4 5 6 7 8 9

Page 29: Ordenação e Busca em Arquivoswiki.icmc.usp.br/images/f/f7/SCC0607022018ordenacaoInternaExterna.pdf · Heapsort n Parte 1 = leitura; parte 2 = ordenação n começa ordenando um

Exemplo

Recupera-se raiz B, colocando em seu lugar G

Enquanto grava B no arquivo ordenado, rearranja heap

F H I D --- --- G E C 1 2 3 4 5 6 7 8 9

F H I D G --- B E C 1 2 3 4 5 6 7 8 9

F H I G --- --- C E D 1 2 3 4 5 6 7 8 9

E assim por diante, até heap esvaziar

Page 30: Ordenação e Busca em Arquivoswiki.icmc.usp.br/images/f/f7/SCC0607022018ordenacaoInternaExterna.pdf · Heapsort n Parte 1 = leitura; parte 2 = ordenação n começa ordenando um

Ordenação Externa

Page 31: Ordenação e Busca em Arquivoswiki.icmc.usp.br/images/f/f7/SCC0607022018ordenacaoInternaExterna.pdf · Heapsort n Parte 1 = leitura; parte 2 = ordenação n começa ordenando um

Arquivo Completo não Cabe em RAM

n  Funcionalidade n  classifica registros de arquivos armazenados

em disco

n  Restrição n  tamanho do arquivo é maior do que o

tamanho da memória principal disponível

n  Algoritmo típico n  sort-merge externo pode ordenar arquivos

realmente grandes

Page 32: Ordenação e Busca em Arquivoswiki.icmc.usp.br/images/f/f7/SCC0607022018ordenacaoInternaExterna.pdf · Heapsort n Parte 1 = leitura; parte 2 = ordenação n começa ordenando um

Sort-Merge Externo n  Fase 1

n  cria subarquivos ordenados (i.e., runs) a partir do arquivo original

n  Fase 2 n  combina os subarquivos ordenados em

subarquivos ordenados maiores até que o arquivo completo esteja ordenado

Page 33: Ordenação e Busca em Arquivoswiki.icmc.usp.br/images/f/f7/SCC0607022018ordenacaoInternaExterna.pdf · Heapsort n Parte 1 = leitura; parte 2 = ordenação n começa ordenando um

g 24

a 19

d 31

c 33

b 14

e 16

r 16

d 21

m 3

p 2

d 7

a 14

arquivo original

Page 34: Ordenação e Busca em Arquivoswiki.icmc.usp.br/images/f/f7/SCC0607022018ordenacaoInternaExterna.pdf · Heapsort n Parte 1 = leitura; parte 2 = ordenação n começa ordenando um

g 24

a 19

d 31

c 33

b 14

e 16

r 16

d 21

m 3

p 2

d 7

a 14

a 19

d 31

g 24

b 14

c 33

e 16

d 21

m 3

r 16

a 14

d 7

p 2

fase 1

arquivo original

Page 35: Ordenação e Busca em Arquivoswiki.icmc.usp.br/images/f/f7/SCC0607022018ordenacaoInternaExterna.pdf · Heapsort n Parte 1 = leitura; parte 2 = ordenação n começa ordenando um

g 24

a 19

d 31

c 33

b 14

e 16

r 16

d 21

m 3

p 2

d 7

a 14

a 19

d 31

g 24

b 14

c 33

e 16

d 21

m 3

r 16

a 14

d 7

p 2

a 19

b 14

c 33

d 31

e 16

g 24

a 14

d 7

d 21

m 3

p 2

r 16

fase 1 fase 2 (passo 1)

arquivo original

Page 36: Ordenação e Busca em Arquivoswiki.icmc.usp.br/images/f/f7/SCC0607022018ordenacaoInternaExterna.pdf · Heapsort n Parte 1 = leitura; parte 2 = ordenação n começa ordenando um

g 24

a 19

d 31

c 33

b 14

e 16

r 16

d 21

m 3

p 2

d 7

a 14

a 19

d 31

g 24

b 14

c 33

e 16

d 21

m 3

r 16

a 14

d 7

p 2

a 19

b 14

c 33

d 31

e 16

g 24

a 14

d 7

d 21

m 3

p 2

r 16

a 14

a 19

b 14

c 33

d 7

d 21

d 31

e 16

g 24

m 3

p 2

r 16

arquivo final ordenado

fase 1 fase 2 (passo 1)

fase 2 (passo 2)

arquivo original

Page 37: Ordenação e Busca em Arquivoswiki.icmc.usp.br/images/f/f7/SCC0607022018ordenacaoInternaExterna.pdf · Heapsort n Parte 1 = leitura; parte 2 = ordenação n começa ordenando um

Custo do Algoritmo

n  ( 2 * b ) n  número de acessos a disco na fase 1

n  cada bloco do arquivo é acessado duas vezes n  fase de leitura dos dados para a memória n  fase de escrita dos dados ordenados no disco

( 2 * b ) + ( 2 * ( b * ( logdm b ) ) )

Page 38: Ordenação e Busca em Arquivoswiki.icmc.usp.br/images/f/f7/SCC0607022018ordenacaoInternaExterna.pdf · Heapsort n Parte 1 = leitura; parte 2 = ordenação n começa ordenando um

Custo do Algoritmo ( 2 * b ) + ( 2 * ( b * ( logdm b ) ) )

n  ( 2 * ( b * ( logdm b ) ) ) n  número de acessos a disco na fase 2

n  cada bloco dos subarquivos é acessado várias vezes, dependendo do grau de combinação n  fase de leitura dos dados para a memória n  fase de escrita dos dados ordenados no disco

Page 39: Ordenação e Busca em Arquivoswiki.icmc.usp.br/images/f/f7/SCC0607022018ordenacaoInternaExterna.pdf · Heapsort n Parte 1 = leitura; parte 2 = ordenação n começa ordenando um

usar multiway merging