Sie sind auf Seite 1von 10

UFOP ED-II Prof.

Guilherme Tavares de Assis

UFOP ED-II Prof. Guilherme Tavares de Assis

Ordenao Externa
A ordenao externa consiste em ordenar arquivos de tamanho maior que a memria interna disponvel.

Ordenao Externa
Estrutura de Dados II Prof. Guilherme Tavares de Assis

Os mtodos de ordenao externa so diferentes dos de ordenao interna.


Os algoritmos devem diminuir o nmero de acesso s unidades de memria externa.

Universidade Federal de Ouro Preto UFOP Instituto de Cincias Exatas e Biolgicas ICEB Departamento de Computao DECOM
1

Nas memrias externas, os dados ficam em um arquivo sequencial.


Apenas um registro pode ser acessado em um dado momento: restrio forte comparada com as possibilidades de acesso em um vetor.
2

UFOP ED-II Prof. Guilherme Tavares de Assis

UFOP ED-II Prof. Guilherme Tavares de Assis

Ordenao Externa
Fatores que determinam as diferenas das tcnicas de ordenao externa em relao ordenao interna:
Custo de acesso a memria secundria muito maior do que o acesso a memria primria.
O custo principal na ordenao externa est relacionado transferncia de dados entre a memria interna e externa.

Ordenao Externa
O mtodo mais importante de ordenao externa o de ordenao por intercalao.
Intercalar significa combinar dois ou mais blocos ordenados em um nico bloco ordenado. A intercalao utilizada como uma operao auxiliar na ordenao.

Restries de acesso a dados:


Fitas so acessadas somente sequencialmente. Em discos, acesso direto muito caro.

O foco dos algoritmos para ordenao externa reduzir o nmero de passadas sobre o arquivo.
Uma boa medida de complexidade de um algoritmo de ordenao por intercalao o nmero de vezes que um item lido ou escrito na memria interna. Os bons mtodos de ordenao externa geralmente envolvem menos do que dez passadas sobre o arquivo.
3 4

Os mtodos de ordenao externa so dependentes do estado atual da tecnologia.

UFOP ED-II Prof. Guilherme Tavares de Assis

UFOP ED-II Prof. Guilherme Tavares de Assis

Ordenao Externa
Estratgia geral dos mtodos de ordenao externa:
1.

Intercalao Balanceada de Vrios Caminhos


Para exemplificao, ordene um arquivo, armazenado em uma fita de entrada, que possui os seguintes 22 registros:
INTERCALACAOBALANCEADA

Quebre o arquivo em blocos do tamanho da memria interna disponvel. Ordene cada bloco na memria interna. Intercale os blocos ordenados, fazendo vrias passadas sobre o arquivo.
A cada passada so criados blocos ordenados cada vez maiores, at que todo o arquivo esteja ordenado.

2. 3.

Consideraes:
memria interna com capacidade para trs itens; seis unidades disponveis de fita magntica.

UFOP ED-II Prof. Guilherme Tavares de Assis

UFOP ED-II Prof. Guilherme Tavares de Assis

Intercalao Balanceada de Vrios Caminhos


Fase de criao dos blocos ordenados, envolvendo:
quebra do arquivo em blocos do tamanho da memria interna disponvel; ordenao de cada bloco na memria interna.
Fita 1: I N T Fita 2: C E R Fita 3: A A L A C O A B L A C N A D E A

Intercalao Balanceada de Vrios Caminhos


Fase de intercalao, envolvendo os passos:
1. 2. 3.

Leitura do primeiro registro de cada fita. Retirada do registro contendo a menor chave, armazenando-o em uma fita de sada. Leitura de um novo registro da fita de onde o registro retirado proveniente.
Ao ler o terceiro registro de um dos blocos, a fita correspondente fica inativa. A fita reativada quando o terceiro registro das outras fitas forem lidos. Neste momento, um bloco de nove registros ordenados foi formado na fita de sada.

Memria: ordenao de E R C
7

4.

Repetio do processo para os blocos restantes.


8

UFOP ED-II Prof. Guilherme Tavares de Assis

UFOP ED-II Prof. Guilherme Tavares de Assis

Intercalao Balanceada de Vrios Caminhos


Resultado da 1 passada sobre o arquivo na fase de intercalao:
Fita 4: A A C E I L N R T Fita 5: A A A B C C L N O Fita 6: A A D E

Intercalao Balanceada de Vrios Caminhos


Quantas passadas so necessrias para ordenar um arquivo de tamanho arbitrrio?
Seja n o nmero de registros do arquivo. Seja m o nmero de palavras possveis na memria interna, sendo uma palavra igual a um registro do arquivo. Logo, a primeira fase produz n/m blocos ordenados. Seja P(n) o nmero de passadas na fase de intercalao. Seja f o nmero de fitas utilizadas em cada passada. Logo, P(n) = log f (n/m) No exemplo apresentado, tem-se: P(n) = log 3 (22/3) 2
9 10

Repetindo o processo de intercalao nos blocos formados aps a 1 passada sobre o arquivo, tem-se o arquivo ordenado (2 passada sobre o mesmo):
Fita 1: A A A A A A A B C C C D E E I L L N N O R T Fita 2: Fita 3:

UFOP ED-II Prof. Guilherme Tavares de Assis

UFOP ED-II Prof. Guilherme Tavares de Assis

Intercalao Balanceada de Vrios Caminhos


No exemplo, foram utilizadas 2f fitas para uma intercalaode-f-caminhos. possvel usar apenas f + 1 fitas, a saber:
Encaminhe todos os blocos para uma nica fita de sada. Redistribua estes blocos entre as fitas de onde eles foram lidos.

Implementao por meio de Substituio por Seleo


A implementao do mtodo de intercalao balanceada pode ser feita utilizando filas de prioridades.
As duas fases do mtodo (quebra do arquivo e intercalao) podem ser implementadas de forma eficiente e elegante. Substitui o menor item existente na memria interna pelo prximo item da fita de entrada.

No exemplo, apenas quatro fitas seriam suficientes.


A intercalao dos blocos a partir das fitas 1, 2 e 3 seria dirigida para a fita 4. Ao final, o segundo e o terceiro blocos ordenados de nove registros seriam transferidos de volta para as fitas 1 e 2.

Estrutura ideal para implementao: heap. Operao de substituio na memria interna:


Retirar o menor item da fila de prioridades. Colocar um novo item no seu lugar. Reconstituir a propriedade do heap.
11 12

Custo envolvido: uma passada a mais em cada intercalao.

UFOP ED-II Prof. Guilherme Tavares de Assis

UFOP ED-II Prof. Guilherme Tavares de Assis

Implementao por meio de Substituio por Seleo


Processo de funcionamento para gerao dos blocos ordenados:
Inicialmente, m itens so inseridos na fila de prioridades inicialmente vazia. O menor item da fila de prioridades substitudo pelo prximo item de entrada.
Se o prximo item menor do que o que est saindo, ento ele deve ser marcado como membro do prximo bloco e, assim, tratado como maior do que todos os itens do bloco corrente.

Implementao por meio de Substituio por Seleo


Ent. E R C A L A C A O B A 1 I N R T A C E L A A B 2 N E E E E E A A A O O 3 T T T C C L L C C C C Ent. L A N C E A D A 1 C L O A A C E N A A D 2 O O A N N N N D D D 3 A A A A C E A A A

Item marcado (vermelho)

Blocos ordenados gerados

Quando um item marcado vai para o topo da fila, o bloco corrente encerrado e um novo bloco ordenado iniciado.
13

Bloco 1: I N R T Bloco 2: A C E L Bloco 3: A A B C L O

Bloco 4: A A C E N Bloco 5: A A D
14

UFOP ED-II Prof. Guilherme Tavares de Assis

UFOP ED-II Prof. Guilherme Tavares de Assis

Implementao por meio de Substituio por Seleo


Aps gerados os blocos ordenados, faz-se a intercalao dos mesmos utilizando fila de prioridades.
Monte uma fila de prioridades de tamanho f a partir dos primeiros itens de cada um dos f blocos ordenados. Repita o processo abaixo at que no haja mais itens nos blocos ordenados:
Substitua o item do topo da fila de prioridades, escrevendo-o em uma fita de sada, pelo prximo item do mesmo bloco do item que est sendo substitudo. Reconstitua a propriedade da fila de prioridades.

Implementao por meio de Substituio por Seleo


Para valores pequenos de f, no vantajoso utilizar seleo por substituio para intercalar blocos, j que o menor item pode ser obtido por f-1 comparaes. Quando f 8, o mtodo considerado adequado, realizando log2 f comparaes para se obter o menor item.

15

16

UFOP ED-II Prof. Guilherme Tavares de Assis

UFOP ED-II Prof. Guilherme Tavares de Assis

Consideraes Prticas
As operaes de entrada e sada de dados devem ser implementadas eficientemente.
Deve-se procurar realizar a leitura, a escrita e o processamento interno dos dados de forma simultnea.

Consideraes Prticas
Escolha da ordem de intercalao f:
Fitas magnticas:
f deve ser igual ao nmero de unidades de fita disponveis menos um, j que a fase de intercalao pode usar f fitas de entrada e uma fita de sada. O nmero de fitas de entrada deve ser no mnimo dois.

Os computadores de maior porte possuem uma ou mais unidades independentes para processamento de entrada e sada.
Assim, pode-se realizar processamento e operaes de E/S simultaneamente.

Discos magnticos:
Mesmo raciocnio apresentado, porm o acesso direto menos eficiente que o sequencial.

Sedegwick (1988) sugere considerar f grande o suficiente para completar a ordenao em poucos passos.
Porm, a melhor escolha para f depende de parmetros relacionados com o sistema de computao disponvel.
17 18

UFOP ED-II Prof. Guilherme Tavares de Assis

UFOP ED-II Prof. Guilherme Tavares de Assis

Intercalao Polifsica
Problemas com a intercalao balanceada de vrios caminhos:
Necessita de um grande nmero de fitas, fazendo vrias leituras e escritas entre as fitas envolvidas.
Para uma intercalao balanceada de f caminhos so necessrias, geralmente, 2f fitas. Alternativamente, pode-se copiar o arquivo de uma nica fita de sada para f fitas de entrada, reduzindo o nmero de fitas para f + 1.

Intercalao Polifsica
Processo de funcionamento da intercalao polifsica:
Os blocos ordenados so distribudos de forma desigual entre as fitas disponveis. Uma fita deixada livre. Em seguida, a intercalao de blocos ordenados executada at que uma das fitas de entrada se esvazie. A fita vazia torna-se a prxima fita de sada.

H um custo de uma cpia adicional do arquivo.

Soluo: intercalao polifsica.

19

20

UFOP ED-II Prof. Guilherme Tavares de Assis

UFOP ED-II Prof. Guilherme Tavares de Assis

Intercalao Polifsica
Blocos ordenados obtidos por meio de seleo por substituio:
Fita 1: I N R T Fita 2: A A C E N Fita 3: A C E L A A D A A B C L O

Intercalao Polifsica
Intercalao-de-2-caminhos das fitas 2 e 3 para a fita 1:
Fita 1: A A A A A A A B C C C D E E I L L N N O R T Fita 2: Fita 3:

Intercalao-de-2-caminhos das fitas 1 e 2 para a fita 3:


Fita 1: A A B C L O Fita 2: Fita 3: A A C E I N N R T

Observaes:
A intercalao realizada em muitas fases. As fases no envolvem todos os blocos. Nenhuma cpia direta entre fitas realizada.

A A A C D E L

Intercalao-de-2-caminhos das fitas 1 e 3 para a fita 2:


Fita 1: Fita 2: A A A A B C C E I L N N O R T Fita 3: A A A C D E L
21

22

UFOP ED-II Prof. Guilherme Tavares de Assis

UFOP ED-II Prof. Guilherme Tavares de Assis

Intercalao Polifsica
A implementao da intercalao polifsica simples. A parte mais delicada est na distribuio inicial dos blocos ordenados entre as fitas. No exemplo apresentado, a distribuio dos blocos nas diversas etapas foi:
fita1 fita2 fita3 total 3 2 0 5 1 0 2 3 0 1 1 2 1 0 0 1

Intercalao Polifsica
Anlise:
A anlise da intercalao polifsica complicada. O que se sabe que ela ligeiramente melhor do que a intercalao balanceada para valores pequenos de f. Para valores de f > 8, a intercalao balanceada de vrios caminhos pode ser mais rpida.

23

24

UFOP ED-II Prof. Guilherme Tavares de Assis

UFOP ED-II Prof. Guilherme Tavares de Assis

Quicksort Externo
Quicksort externo foi proposto por Monard em 1980. O algoritmo utiliza o paradigma de diviso e conquista. O algoritmo ordena in situ um arquivo A = {R1, ... , Rn} de n registros.
Os registros encontram-se armazenados consecutivamente em memria secundria de acesso randmico.

Quicksort Externo
Para ordenar o arquivo A = {R1, ... , Rn}, o algoritmo:
particiona A da seguinte forma: {R1, ... , Ri} Ri+1 Ri+2 ... Rj2 Rj1 {Rj, ... , Rn}; chama recursivamente o algoritmo em cada um dos subarquivos gerados: A1 = {R1, . . . ,Ri} e A2 = {Rj , . . . ,Rn}.

O algoritmo utiliza somente O(log n) unidades de memria interna, no sendo necessria alguma memria externa adicional.

Os registros ordenados {Ri+1, ..., Rj-1} correspondem ao piv do algoritmo, encontrando-se na memria interna durante a execuo do mesmo.
Os subarquivos A1 e A2 contm os registros menores que Ri+1 e maiores que Rj-1, respectivamente.
25 26

UFOP ED-II Prof. Guilherme Tavares de Assis

Quicksort Externo
Para a partio do arquivo, utilizada uma rea de memria interna para o armazenamento do piv.
Tamanho da rea = j i 1, sendo necessariamente 3.

Nas chamadas recursivas, deve-se considerar que:


deve ser ordenado, inicialmente, o subarquivo de menor tamanho; subarquivos vazios ou com um nico registro so ignorados; caso o arquivo de entrada A possua no mximo (j i 1) registros, ele ordenado em um nico passo.

27

UFOP ED-II Prof. Guilherme Tavares de Assis

UFOP ED-II Prof. Guilherme Tavares de Assis

Quicksort Externo: Partio


Consideraes sobre o funcionamento de uma partio:
Os valores das chaves de Ri e Rj so denominados limite inferior (Linf) e limite superior (Lsup) da partio.
Tais limites so inicializados com os valores - e +.

Quicksort Externo: Partio


Os primeiros "tamanho da rea" (TamArea) - 1 registros so lidos, alternativamente, dos extremos de A e armazenados na rea de memria interna. Ao ler o TamArea-simo registro, cuja chave C:
C comparada com Lsup e, sendo maior, j recebe Es e o registro escrito em A2; caso contrrio, C comparada com Linf e, sendo menor, i recebe Ei e o registro escrito em A1; Caso contrrio (Linf C Lsup), o registro inserido na rea de memria interna.

A leitura de A controlada por apontadores de leitura inferior (Li) e superior (Ls).


A cada leitura no extremo inferior, Li incrementado; a cada leitura no extremo superior, Ls decrementado.

A escrita em A controlada por apontadores de escrita inferior (Ei) e superior (Es).


A cada escrita no extremo inferior, Ei incrementado; a cada escrita no extremo superior, Es decrementado.
29

Para garantir que os apontadores de escrita estejam atrs dos apontadores de leitura, a ordem alternada de leitura interrompida se (Li = Ei) ou (Ls = Es).
Nenhum registro pode ser destrudo durante a ordenao in situ.
30

UFOP ED-II Prof. Guilherme Tavares de Assis

UFOP ED-II Prof. Guilherme Tavares de Assis

Quicksort Externo: Partio


Quando a rea de memria enche, deve-se remover um registro da mesma, considerando os tamanhos atuais de A1 e A2.
Sendo Esq e Dir a 1 e a ltima posio de A, os tamanhos de A1 e A2 so, respectivamente, (T1 = Ei Esq) e (T2 = Dir Es). Se (T1 < T2), o registro de menor chave removido da memria, sendo escrito em Ei (A1), e Linf atualizado com tal chave. Se (T2 T1), o registro de maior chave removido da memria, sendo escrito em Es (A2), e Lsup atualizado com tal chave.

Quicksort Externo: Partio


O processo de partio continua at que Li e Ls se cruzem, ou seja, (Ls < Li). Neste momento, os registros armazenados na rea de memria interna devem ser copiados, j ordenados, em A.
Enquanto existir registros na rea de memria, o menor deles removido e escrito na posio indicada por Ei em A.

O objetivo escrever o registro removido da memria no subarquivo de menor tamanho, no intuito de dividir A de forma uniforme e, assim, balancear a rvore gerada pelas recurses.
Isso minimiza a quantidade de operaes de leitura e escrita efetuadas pelo algoritmo.
31 32

UFOP ED-II Prof. Guilherme Tavares de Assis

UFOP ED-II Prof. Guilherme Tavares de Assis

Quicksort Externo: Programa

Quicksort Externo: Programa

33

34

UFOP ED-II Prof. Guilherme Tavares de Assis

UFOP ED-II Prof. Guilherme Tavares de Assis

Quicksort Externo: Programa

Quicksort Externo: Programa

35

36

UFOP ED-II Prof. Guilherme Tavares de Assis

UFOP ED-II Prof. Guilherme Tavares de Assis

Quicksort Externo: Programa

Quicksort Externo: Programa

37

38

UFOP ED-II Prof. Guilherme Tavares de Assis

UFOP ED-II Prof. Guilherme Tavares de Assis

Quicksort Externo: Programa

Quicksort Externo: Anlise


Seja n o nmero de registros a serem ordenados e seja b o tamanho do bloco de leitura ou gravao do SO. Melhor caso: O (n / b)
Ocorre quando o arquivo de entrada j est ordenado.

Pior caso: O (n2 / TamArea )


Ocorre quando as parties geradas possuem tamanhos inadequados: maior tamanho possvel e vazio. A medida que n cresce, a probabilidade de ocorrncia do pior caso tende a zero.

Caso Mdio: O (n / b log (n / TamArea) )


Maior probabilidade de ocorrer.
39 40

Das könnte Ihnen auch gefallen