Classificação Externa: Intercalação de Partições Classificadas

Documentos relacionados
Classificação Externa: Intercalação de Partições Classificadas

Arquivos Seqüenciais: Intercalação

Classificação Externa: Geração de Partições Classificadas

Classificação Externa: Geração de Partições Classificadas

ORDENAÇÃO EXTERNA DE ARQUIVOS: GERAÇÃO DE PARTIÇÕES CLASSIFICADAS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

ESTRUTURA DE DADOS E ALGORITMOS. Árvores Binárias de Busca. Cristina Boeres

Intercalação de vários arquivos. Estrutura de Dados II Prof Jairo Francisco de Souza

Ordenação Externa. Ordenação Externa. Ordenação Externa. Ordenação Externa

Algoritmo MergeSort. Estrutura de Dados II Prof Jairo Francisco de Souza

heapsort (int *x, int n) { int i, e, s, f, aux; /*fase de pré-processamento - cria heap inicial*/ for (i=1; i<n; i++) { e = x[i]; s = i; f = (s-1)/2;

Edital de Seleção 024/2017 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Edital de Seleção 023/2018 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

ÁRVORES BINÁRIAS DE BUSCA. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

Árvores Genéricas de Busca

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula

Memória secundária. Memória secundária

Algoritmos de Ordenação. Profº Carlos Alberto T. Batista

Edital de Seleção 032/2016 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Edital de Seleção 055/2017 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Árvores Binárias e AVL Felipe Barros Pontes Gustavo Márcio de Morais Cunha Márcio de Medeiros Ribeiro

ALGORITMOS DE ORDENAÇÃO

void subdivide (LISTA_ENC *pl, LISTA_ENC *pl1, LISTA_ENC *pl2) { int cont, k=1; for (cont=tam(*pl)/2;cont;cont--) {

Edital de Seleção 053/2016 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Lista de Exercícios sobre Listas Implementadas por Encadeamento

Análise empírica de algoritmos de ordenação

Ordenação em Memória Primária Estrutura de Dados II

BCC202 - Estrutura de Dados I

Árvores. SCC-214 Projeto de Algoritmos. Thiago A. S. Pardo. Um nó após o outro, adjacentes Sem relações hierárquicas entre os nós, em geral

Árvores B. Prof. Márcio Bueno. / Fonte: Material da Prof a Ana Eliza Lopes Moura

ESTRUTURA DE DADOS ORDENANDO LISTAS

ÁRVORE B. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

Introdução à Computação II (Noturno) BCC Unesp Rio Claro/SP 2015 em PDF via Moodle: Escolha apenas 5 exercícios para entrega Exercício 01 (Pilhas)

Aula 12 Métodos de Classificação: - Classificação por Inserção Direta - Classificação por Seleção Direta

Memória Secundária e Ordenação externa Algoritmos e Estruturas de Dados III

Arquivos Seqüenciais Atualização em Lote

Árvores de Pesquisa. A árvore de pesquisa é uma estrutura de dados muito eficiente para armazenar informação.

Dicionários. TAD Orientado a conteúdo

Árvores Binárias de Busca

Estruturas de Dados Apresentação

MÉTODOS DE ORDENAÇÃO. Introdução à Programação SI2

Ordenação Externa. Profa. Graça Nunes

ALGORITMOS AVANÇADOS. UNIDADE V Estruturas de dados dos tipos Árvore Binária e Árvore AVL. Luiz Leão

ESTRUTURA DE DADOS ORDENANDO LISTAS

Teoria da Computação. Aula 9 Pesquisa em Memória Secundária 5COP096. Aula 9 Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr

Trabalho Prático 1. Valor: 1,0 pontos (10% da nota total) Data de Entrega: 02/05/2010

Ordenação: QuickSort. Prof. Túlio Toffolo BCC202 Aula 15 Algoritmos e Estruturas de Dados I

Arvores, Percursos não recursivos, Arvores heterogêneas. Aula 19

ORGANIZAÇÃO DE ARQUIVOS INDEXADOS

B-Árvores. Siang Wun Song - Universidade de São Paulo - IME/USP. MAC Estruturas de Dados

SUMÁRIO. Fundamentos Árvores Binárias Árvores Binárias de Busca

Árvores. Fabio Gagliardi Cozman. PMR2300 Escola Politécnica da Universidade de São Paulo

Exercícios: Árvores. Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de estrutura de dados em linguagem C

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA

# Estrutura de Dados # Aula 06 Pilhas Estáticas. Prof. Leinylson Fontinele Pereira

Introdução à Inteligência Artificial MAC MAC 415. Exercício Programa 1 Busca

2. Diga qual é a diferença entre tipos de informação elementares e tipos de informação estruturados.

B-tree. B-Trees. Estrutura do nodo da B-tree. Balanceamento. Disposição dos elementos ordenados na B-tree. Exemplo de uma B-tree de ordem 3

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Lista de Exercícios 04

Estruturas de Dados 2

Acesso Sequencial Indexado

Técnicas Inteligência Artificial

Sistemas de arquivos

Aula T19 BCC202 Pesquisa (Parte 1) Pesquisa Binária. Túlio Toffolo

Operações Coseqüenciais. Processamento Coseqüencial. Modelo para implementação de processos coseqüenciais

Aula 15: Pesquisa em Memória Primária. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

ÁRVORE BINÁRIA DE BUSCA

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB

Classificação e Pesquisa Aula 6 Métodos de Ordenação: ShellSort e QuickSort. Prof. Esp. Pedro Luís Antonelli Anhanguera Educacional

Algoritmos e Estruturas de Dados II. Ordenação Externa II. Ordenação Externa. Ordenação Externa. Ordenação Externa.

Árvores. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira

O Problema da Ordenação Métodos de Ordenação Parte 1

ÁRVORES E ÁRVORES BINÁRIAS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

Ordenação: HeapSort. Prof. Túlio Toffolo BCC202 Aula 17 Algoritmos e Estruturas de Dados I

Transcrição:

Classificação Externa: Intercalação de Partições Classificadas Vanessa Braganholo Baseado no Material de: Inhaúma Neves Ferraz (IC/UFF)

Relembrando: Modelo da Classificação Externa 2

Aula Passada: Etapa de Classificação 3

Aula de Hoje: Etapa de Intercalação 4

Objetivo da Etapa de Intercalação } Transformar um conjunto de partições classificadas por determinado critério, em um único arquivo contendo todos os registros de todas as partições originais do conjunto } O arquivo gerado deve estar classificado pelo mesmo critério de classificação das partições iniciais 5

Problema } Considere a existência de R partições geradas pelo processo de geração de partições } Como gerar o arquivo a partir das R partições? 6

Algoritmo Básico } De cada um dos arquivos a intercalar basta ter em memória um registro } Considera-se cada arquivo como uma pilha } Topo da pilha: registro em memória } Em cada iteração do algoritmo, o topo da pilha com menor chave é gravado no arquivo de saída e é substituído pelo seu sucessor } Pilhas vazias têm topo igual a high value } O algoritmo termina quando todos os topos da pilha tiverem high value 7

Esquema Básico de Intercalação Programa de Intercalação 31 76 41 69 13 2 6 70 40 20 10 51 15 Arquivos por intercalar (cada coluna representa um arquivo) 60 2 6 10 13 15 20 31 40 41 51 60 69 70 76 8 Livro pág. 55

Número de iterações } A cada iteração, encontra-se a menor chave (O(n)) } n é o número de arquivos a intercalar } Número de iterações = número total de registros a serem ordenados 31 76 41 69 13 2 6 70 40 20 10 51 15 60 9

Mas } E se a quantidade de arquivos a intercalar for muito grande? } Encontrar o menor valor de chave pode ser uma tarefa custosa } Operação de busca da menor chave tem que ser repetida várias e várias vezes, até os arquivos terminarem 10

Otimização do Algoritmo } Árvore Binária de Vencedores 11

Árvore binária de vencedores } Nós folha representam as chaves que estão nos topos das pilhas dos arquivos a intercalar } Cada nó interno representa o menor de seus dois filhos } A raiz representa o menor nó da árvore 12

Árvore binária de vencedores } Cada nó interno tem quatro componentes } Vencedor: valor da menor chave daquela sub-árvore } EndVencedor: ponteiro para o arquivo que tem aquela chave } Left: ponteiro para o filho da esquerda } Rigth: ponteiro para o filho da direita 13

Exemplo } Arquivos a serem ordenados } Cada coluna abaixo representa um arquivo com suas respectivas chaves 31 76 41 69 13 2 6 70 40 20 10 51 15 60 14

Árvore Binária de Vencedores } Colocar em memória o primeiro registro de cada arquivo } Cada registro é um nó folha da árvore (aqui usamos apenas as chaves para simplificar) 31 76 41 69 13 2 6 15 31 76 41 69 13 2 6 70 40 20 10 51 15 60

Árvore Binária de Vencedores } Criar um nó raiz para cada 2 nós folha, com o menor dos dois valores 31 41 2 31 76 41 69 13 2 6 16 31 76 41 69 13 2 6 70 40 20 10 51 15 60

Árvore Binária de Vencedores } Representação do nó interno 41 } Vencedor: 41 } EndVencedor: 3 } Left: 41 } Rigth: 69 31 41 2 31 76 41 69 13 2 6 17 31 76 41 69 13 2 6 70 40 20 10 51 15 60

Árvore Binária de Vencedores Atenção: valores de chave se repetem em vários níveis 31 2 31 41 2 31 76 41 69 13 2 6 18 31 76 41 69 13 2 6 70 40 20 10 51 15 60

Árvore Binária de Vencedores Raiz tem chave de menor valor 2 31 2 31 41 2 31 76 41 69 13 2 6 19 31 76 41 69 13 2 6 70 40 20 10 51 15 60

Uso da Árvore de Vencedores no algoritmo de Intercalação } Chave da raíz é retirada e registro correspondente é inserido no arquivo 20

Árvore Binária de Vencedores 2 31 2 31 41 2 31 76 41 69 13 2 6 21 31 76 41 69 13 2 6 70 HV HV HV 40 20 10 HV HV 51 15 HV 60

Árvore Binária de Vencedores Só é necessário comparar 20 com os seus ascendentes 31 31 41 31 76 41 69 13 20 6 22 31 76 41 69 13 20 6 70 HV HV HV 40 51 10 HV HV HV 15 60

Árvore Binária de Vencedores 6 31 6 31 41 13 31 76 41 69 13 20 6 23 31 76 41 69 13 20 6 70 HV HV HV 40 51 10 HV HV HV 15 60

Árvore Binária de Vencedores 31 31 41 13 31 76 41 69 13 20 10 24 31 76 41 69 13 20 10 70 HV HV HV 40 51 15 HV HV HV 60 HV

Árvore Binária de Vencedores 10 31 10 31 41 13 31 76 41 69 13 20 10 25 31 76 41 69 13 20 10 70 HV HV HV 40 51 15 HV HV HV 60 HV

Árvore Binária de Vencedores 13 31 13 31 41 13 26 31 76 41 69 13 20 15 31 76 41 69 13 20 15 70 HV HV HV 40 51 60 HV HV HV HV

Árvore Binária de Vencedores 15 31 15 31 41 20 27 31 76 41 69 40 20 15 31 76 41 69 40 20 15 70 HV HV HV HV 51 60 HV HV HV

Árvore Binária de Vencedores 20 31 20 31 41 20 28 31 76 41 69 40 20 60 31 76 41 69 40 20 60 70 HV HV HV HV 51 HV HV HV

Árvore Binária de Vencedores 31 31 40 31 41 40 29 31 76 41 69 40 51 60 31 76 41 69 40 51 60 70 HV HV HV HV HV HV HV

Árvore Binária de Vencedores 40 41 40 70 41 40 70 76 41 69 40 51 60 70 76 41 69 40 51 60 HV HV HV HV HV HV HV 30

Árvore Binária de Vencedores 41 41 51 70 41 51 70 76 41 69 HV 51 60 70 76 41 69 HV 51 60 HV HV HV HV HV HV 31

Árvore Binária de Vencedores 51 69 51 70 69 51 70 76 HV 69 HV 51 60 70 76 HV 69 HV 51 60 HV HV HV HV HV 32

Árvore Binária de Vencedores 60 69 60 70 69 HV 70 76 HV 69 HV HV 60 70 76 HV 69 HV HV 60 HV HV HV HV 33

Árvore Binária de Vencedores 69 69 HV 70 69 HV 70 76 HV 69 HV HV HV 70 76 HV 69 HV HV HV HV HV HV 34

Árvore Binária de Vencedores 70 70 HV 70 HV HV 70 76 HV HV HV HV HV 70 76 HV HV HV HV HV HV HV 35

Árvore Binária de Vencedores 76 76 HV 76 HV HV HV 76 HV HV HV HV HV HV 76 HV HV HV HV HV HV 36

Árvore Binária de Vencedores HV HV HV HV HV HV HV HV HV HV HV HV HV HV HV HV HV HV HV HV 37

Discussão } Montagem da árvore: O(n) } A cada iteração, faz-se log n comparações (n é o número de arquivos a comparar) } Número de iterações: número total de registros a serem ordenados 38

Exercício } Montar a árvore de vencedores para a seguinte situação } Simular a execução do algoritmo de intercalação 2 55 40 3 13 7 12 6 45 43 15 70 67 41 21 17 49 57 16 79 80 82 23 98 25 39

Problema } Seria ideal poder intercalar todas as partições de uma só vez e obter o arquivo classificado, utilizando, por exemplo, a árvore de vencedores, mas: (i) O número de arquivos a intercalar pode gerar uma árvore de vencedores maior do que a capacidade da memória (ii) Sistemas Operacionais estabelecem número máximo de arquivos abertos simultaneamente } Esse número pode ser bem menor do que o número de partições existentes } Curiosidade: ver o número máximo de arquivos que podem ser abertos no linux: } ulimit Hn 40

Solução } A intercalação vai exigir uma série de fases durante as quais registros são lidos de um conjunto de arquivos e gravados em outro (partições) 41

Etapa de Intercalação 42

Estágio de Intercalação Estratégias de distribuição e intercalação: } Intercalação balanceada de N caminhos } Intercalação ótima 43

Medida de Eficiência } Uma medida de eficiência do estágio de intercalação é dada pelo número de passos sobre os dados: Número de passos = No. total de registros lidos No. total de registros no arquivo classificado } Número de passos representa o número médio de vezes que um registro é lido (ou gravado) durante o estágio de intercalação 44

Intercalação balanceada de N caminhos

Intercalação Balanceada de N caminhos } Primeiro passo: determinar o número de arquivos (F) que o algoritmo irá manipular } Metade dos arquivos (F/2) será usada para leitura (entrada) } A outra metade (F/2), para escrita (saída) 46

Exemplo } Número de arquivos F = 4 Entrada Saída Arquivo 1 Arquivo 2 Arquivo 3 Arquivo 4 47

Intercalação Balanceada de N caminhos } Passo 2: Distribuir todas as partições, tão equilibradamente quanto possível, nos F/2 arquivos de entrada } Atenção: aqui fazemos apenas uma fila para ver que variável de arquivo vai processar cada partição 48

Exemplo } Número de arquivos F = 4 } Partições a serem intercaladas = 20 Entrada Saída Arquivo 1 Arquivo 2 Arquivo 3 Arquivo 4 P1 P2 P3 P10 P11 P12 P13 P20 49

Intercalação Balanceada de N caminhos } Início da fase de intercalação: intercalar as primeiras F/2 partições, gravando o resultado em um dos F/2 arquivos de saída 50

Exemplo: Fase 1 } Número de arquivos F = 4 } Partições a serem intercaladas = 20 (istros cada) Entrada Saída Arquivo 1 Arquivo 2 Arquivo 3 Arquivo 4 P1 P11 P2 P12 P3 P13 P10 P20 51

Exemplo: Fase 1 } Número de arquivos F = 4 } Partições a serem intercaladas = 20 (istros cada) Entrada Saída Arquivo 1 Arquivo 2 Arquivo 3 Arquivo 4 200 reg P21 P2 P12 P3 P13 P10 P20 52

Exemplo: Fase 1 } Número de arquivos F = 4 } Partições a serem intercaladas = 20 (istros cada) Entrada Saída Arquivo 1 Arquivo 2 Arquivo 3 Arquivo 4 200 reg P21 200 reg P22 P3 P13 P10 P20 53

Exemplo: Fase 1 } Número de arquivos F = 4 } Partições a serem intercaladas = 20 (istros cada) Entrada Saída Arquivo 1 Arquivo 2 Arquivo 3 Arquivo 4 200 reg P21 200 reg P22 200 reg P23 P10 P20 54

Exemplo: Fase 1 } Número de arquivos F = 4 } Partições a serem intercaladas = 20 (istros cada) Entrada Saída Arquivo 1 Arquivo 2 Arquivo 3 Arquivo 4 200 reg P21 200 reg P22 200 reg P23 200 reg P24 P10 P20 55

Exemplo: Fase 1 } Número de arquivos F = 4 } Partições a serem intercaladas = 20 (istros cada) Entrada Saída Arquivo 1 Arquivo 2 Arquivo 3 Arquivo 4 200 reg P21 200 reg P22 200 reg P23 200 reg P29 200 reg P30 56

Exemplo: Fase 1 } Número de arquivos F = 4 } Partições a serem intercaladas = 20 (istros cada) Entrada Saída Arquivo 1 Arquivo 2 Arquivo 3 Arquivo 4 200 reg P21 200 reg P22 200 reg P23 Resultado da Primeira Fase: 10 partições de 200 registros cada 200 reg P29 200 reg P30 57

Intercalação Balanceada de N caminhos } No final de cada fase, o conjunto de partições de saída torna-se o conjunto de entrada 58

Exemplo: Fase 2 } Número de arquivos F = 4 } Partições a serem intercaladas = 10 (200 registros cada) Entrada Saída Arquivo 1 Arquivo 2 Arquivo 3 Arquivo 4 200 reg P21 200 reg P22 200 reg P23 200 reg P29 200 reg P30 59

Intercalação Balanceada de N caminhos } A intercalação termina quando, em uma fase, grava-se apenas uma partição 60

Número de Fases: 5 } Fase 1: 20 partições com istros cada } Fase 2: 10 partições com 200 registros cada } Fase 3: 5 partições com 400 registros cada } Fase 4: 2 partições com 800 registros cada + 1 partição com 400 registros cada } Fase 5: 1 partição com 1600 registros + 1 partição com 400 registros } Resultado da Fase 5: 1 partição com 2000 registros 61

Número de Fases: 5 } Fase 1: 20 partições com istros cada } Fase 2: 10 partições com 200 registros cada } Fase 3: 5 partições com 400 registros cada } Fase 4: 2 partições com 800 registros cada + 1 partição com 400 registros cada } Fase 5: 1 partição com 1600 registros + 1 partição com 400 registros Pode ocorrer que partições sejam copiadas de um arquivo para outro sem qualquer processamento 62

Número de Passos Número de passos = No. total de registros lidos } Número de registros lidos } Fase 1: 20 partições com istros cada = 2000 } Fase 2: 10 partições com 200 registros cada = 2000 } Fase 3: 5 partições com 400 registros cada = 2000 } Fase 4: 2 partições com 800 registros cada + 1 partição com 400 registros cada = 2000 } Fase 5: 1 partição com 1600 registros + 1 partição com 400 registros = 2000 2000 * 5 = 10000 registros lidos No. total de registros no arquivo classificado 63

Número de Passos Número de passos = 10000 No. total de registros no arquivo classificado } Número total de registros no arquivo classificado: 2000 64

Número de Passos Número de passos = 10000 = 5 2000 } Portanto: número de passos = número de fases 65

Intercalação Balanceada de N caminhos } O balanceamento do processo baseia-se em colocar nos arquivos de entrada aproximadamente o mesmo número de registros 66

Intercalação Ótima

Intercalação Ótima } F arquivos } F 1 para entrada } 1 para saída 68

Exemplo } Número de arquivos F = 4 Entrada Saída Arquivo 1 Arquivo 2 Arquivo 3 Arquivo 4 69

Intercalação Ótima } Durante cada fase do algoritmo, F-1 partições são intercaladas e gravadas no arquivo de saída 70

Exemplo } Número de arquivos F = 4 } Partições a serem intercaladas = 20 Entrada Saída Arquivo 1 Arquivo 2 Arquivo 3 Arquivo 4 P1 P2 P3 P4 P5 P6 P7 P19 P8 P20 P9 71

Intercalação Ótima } Do conjunto inicial de partições removem-se as partições intercaladas e a ele agrega-se a partição gerada na intercalação } Algoritmo termina quando este conjunto tiver apenas uma partição 72

Exemplo } Número de arquivos F = 4 } Partições a serem intercaladas = 20 (istros cada) Entrada Saída Arquivo 1 Arquivo 2 Arquivo 3 Arquivo 4 P1 P2 P3 P4 P5 P6 P7 P8 P9 P19 P20 73

Exemplo } Número de arquivos F = 4 } Partições a serem intercaladas = 20 (istros cada) Entrada Saída Arquivo 1 Arquivo 2 Arquivo 3 Arquivo 4 300 reg P21 P4 P5 P6 P7 P8 P9 P19 P20 74

Exemplo } Número de arquivos F = 4 } Partições a serem intercaladas = 20 (istros cada) Entrada Saída Arquivo 1 Arquivo 2 Arquivo 3 Arquivo 4 300 reg P21 P4 P5 P6 P7 P8 P9 P19 P20 75

Exemplo } Número de arquivos F = 4 } Partições a serem intercaladas = 20 (istros cada) Entrada Saída Arquivo 1 Arquivo 2 Arquivo 3 Arquivo 4 P4 P5 P6 P7 P8 P9 P19 P20 300 reg P21 76

Exemplo } Número de arquivos F = 4 } Partições a serem intercaladas = 20 (istros cada) Entrada Saída Arquivo 1 Arquivo 2 Arquivo 3 Arquivo 4 P4 P5 P6 P7 P8 P9 P19 P20 300 reg P21 77

Exemplo } Número de arquivos F = 4 } Partições a serem intercaladas = 20 (istros cada) Entrada Saída Arquivo 1 Arquivo 2 Arquivo 3 Arquivo 4 300 reg P22 P7 P8 P9 P19 P20 300 reg P21 78

Resumo do Exemplo Fase Arquivo1 Arquivo2 Arquivo3 Arquivo4 N. de leituras 1 1:100 2:100 3:100 21:300 300 2 4:100 5:100 6:100 22:300 300 3 7:100 8:100 9:100 23:300 300 4 10:100 11:100 12:100 24:300 300 5 13:100 14:100 15:100 25:300 300 6 16:100 17:100 18:100 26:300 300 7 19:100 20:100 21:300 27:500 500 8 22:300 23:300 24:300 28:900 900 9 25:300 26:300 27:500 29:1100 1100 10 28:900 29:1100 ---------- 30:2000 2000 TOTAL 6300 Número de passos = 6300 = 2000 3,15 79

Resumo do Exemplo Fase Arquivo1 Arquivo2 Arquivo3 Arquivo4 N. de leituras 1 1:100 2:100 3:100 21:300 300 2 4:100 5:100 6:100 22:300 300 3 7:100 8:100 9:100 23:300 300 4 10:100 11:100 12:100 24:300 300 5 13:100 14:100 15:100 25:300 300 6 16:100 17:100 18:100 26:300 300 7 19:100 20:100 21:300 27:500 500 8 22:300 23:300 24:300 28:900 900 9 25:300 26:300 27:500 29:1100 1100 10 28:900 29:1100 ---------- 30:2000 2000 TOTAL 6300 Notar que o conceito de Fase desse algoritmo é diferente do usado no algoritmo anterior. Usando esse conceito o algoritmo anterior teria 21 fases. Número de passos = 6300 = 2000 3,15 80

Possível forma de Implementação } Usar uma lista que contém os nomes dos arquivos a ordenar } A cada passo do algoritmo, retirar os 3 primeiros itens da lista, intercalá-los, colocar o arquivo resultante no final da lista } O algoritmo pára quando a lista tiver apenas 1 arquivo (que será o resultante) 81

Exemplo (F = 4 e 10 partições): P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 Entrada Saída Arquivo 1 Arquivo 2 Arquivo 3 Arquivo 4 82

Exemplo (F = 4 e 10 partições): P4 P5 P6 P7 P8 P9 P10 Entrada Saída Arquivo 1 Arquivo 2 Arquivo 3 Arquivo 4 P1 P2 P3 83

Exemplo (F = 4 e 10 partições): P4 P5 P6 P7 P8 P9 P10 Entrada Saída Arquivo 1 Arquivo 2 Arquivo 3 Arquivo 4 300 reg P11 84

Exemplo (F = 4 e 10 partições): P4 P5 P6 P7 P8 P9 P10 P11 Entrada Saída Arquivo 1 Arquivo 2 Arquivo 3 Arquivo 4 85

Exemplo (F = 4 e 10 partições): P7 P8 P9 P10 P11 Entrada Saída Arquivo 1 Arquivo 2 Arquivo 3 Arquivo 4 P4 P5 P6 86

Exemplo (F = 4 e 10 partições): P7 P8 P9 P10 P11 Entrada Saída Arquivo 1 Arquivo 2 Arquivo 3 Arquivo 4 300 reg P12 87

Exemplo (F = 4 e 10 partições): P7 P8 P9 P10 P11 P12 Entrada Saída Arquivo 1 Arquivo 2 Arquivo 3 Arquivo 4 88

Exemplo (F = 4 e 10 partições): P10 P11 P12 Entrada Saída Arquivo 1 Arquivo 2 Arquivo 3 Arquivo 4 P7 P8 P9 89

Exemplo (F = 4 e 10 partições): P10 P11 P12 Entrada Saída Arquivo 1 Arquivo 2 Arquivo 3 Arquivo 4 300 reg P13 90

Exemplo (F = 4 e 10 partições): P10 P11 P12 P13 Entrada Saída Arquivo 1 Arquivo 2 Arquivo 3 Arquivo 4 91

Exemplo (F = 4 e 10 partições): P13 Entrada Saída Arquivo 1 Arquivo 2 Arquivo 3 Arquivo 4 P10 300 reg P11 300 reg P12 92

Exemplo (F = 4 e 10 partições): P13 Entrada Saída Arquivo 1 Arquivo 2 Arquivo 3 Arquivo 4 700 reg P14 93

Exemplo (F = 4 e 10 partições): P13 P14 Entrada Saída Arquivo 1 Arquivo 2 Arquivo 3 Arquivo 4 94

Exemplo (F = 4 e 10 partições): Entrada Saída Arquivo 1 Arquivo 2 Arquivo 3 Arquivo 4 300 reg P13 700 reg P14 95

Exemplo (F = 4 e 10 partições): Entrada Saída Arquivo 1 Arquivo 2 Arquivo 3 Arquivo 4 700 reg P15 96

Exemplo (F = 4 e 10 partições): P15 Entrada Saída Arquivo 1 Arquivo 2 Arquivo 3 Arquivo 4 } DICA: agora basta renomear a partição P15 para o nome do arquivo de saída desejado 97

Escolha do melhor método } Seleção com Substituição ou Seleção Natural? } Depende do cenário: } Usar a estimativa de tamanho das partições para decidir } Verificar se há restrições quanto ao número de arquivos que podem ser manipulados ao mesmo tempo para decidir entre Intercalação Ótima ou Árvore de Vencedores 98

Cenário 1 } Arquivo com 400.000 registros de cliente } Restrições } Limite de memória: 20.000 registros (M = 20.000) } Apenas 10 arquivos podem ser manipulados ao mesmo tempo 99

Cenário 1 Geração de Partições } Seleção com Substituição } Partições de tamanho médio 2 * M = 40.000 } Número de partições geradas = 400.000 / 40.000 = 10 } Custo de I/O = 400.000 } Seleção Natural } Partições de tamanho médio e * M = 2,718 * 20.000 = 54.360 } Número de partições geradas = 400.000 / 54.360 = 8 } Custo de I/O = 400.000 + custo do reservatório 8-1 vezes = 400.000 + 20.000 * 7 = 540.000 100

Cenário 1 Intercalação } Seleção com Substituição } 10 partições, 2 fases } FASE 1 = 40.000 * 9 = 360.000 } FASE 2 = 360.000 + 40.000 = 400.000 } TOTAL = 760.000 } Seleção Natural } 8 partições, 1 fase } FASE 1 = 400.000 101

Cenário 1 - Totais } Seleção com Substituição } Geração + Intercalação = 400.000 + 760.000 = 1.160.000 } Seleção Natural } Geração + Intercalação = 540.000 + 400.000 = 940.000 } Método escolhido para geração das partições: Seleção Natural 102

Cenário 2 } Arquivo com 400.000 registros de cliente } Restrições } Limite de memória: 10.000 registros (M = 10.000) } Apenas 10 arquivos podem ser manipulados ao mesmo tempo 103

Cenário 2 Geração de Partições } Seleção com Substituição } Partições de tamanho médio 2 * M = 20.000 } Número de partições geradas = 400.000 / 20.000 = 20 } Custo de I/O = 400.000 } Seleção Natural } Partições de tamanho médio e * M = 2,718 * 10.000 = 27.180 } Número de partições geradas = 400.000 / 27180 = 15 } Custo de I/O = 400.000 + custo do reservatório 15-1 vezes = 400.000 + 10.000 * 14 = 540.000 104

Cenário 2 Intercalação } Seleção com Substituição } 20 partições, 3 fases } FASE 1 = 20.000 * 9 = 180.000 } FASE 2 = 20.000 * 9 = 180.000 } FASE 3 = 180.000 + 180.000 + 20.000 + 20.000 = 400.000 } TOTAL = 760.000 } Seleção Natural } 15 partições, 2 fases } FASE 1 = 27.180 * 9 = 244.620 } FASE 2 = 27.180 * 6 + 244.620 = 407.700 } TOTAL = 652.320 105

Cenário 2 - Totais } Seleção com Substituição } Geração + Intercalação = 400.000 + 760.000 = 1.160.000 } Seleção Natural } Geração + Intercalação = 540.000 + 652.320 = 1.192.320 } Método escolhido para geração das partições: Seleção com Substituição 106

Implementação } Problema: fazer intercalação de N partições ordenadas para gerar um único arquivo ordenado } Restrição: Sistema Operacional pode lidar com apenas 4 arquivos ao mesmo tempo } Entrada: } Lista com nomes dos arquivos a intercalar } Saída: } Arquivo resultante ordenado, chamado saida.dat 107

Exercício } Implementar o algoritmo de intercalação utilizando árvore binária de vencedores } Entrada: } Lista com os nomes dos arquivos de entrada } Nome do arquivo de saída } Estrutura dos arquivos: Clientes (CodCliente, Nome, DataNascimento) 108