Algoritmos de ordenação em forma paralela.

Documentos relacionados
Análise e Complexidade de Algoritmos

Métodos de Ordenação Parte I

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

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;

Algoritmos de Ordenação

ESTRUTURAS DE DADOS E ALGORITMOS ALGORITMOS DE ORDENAÇÃO EM TEMPO LINEAR

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

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

BCC202 - Estrutura de Dados I

ALGORITMOS DE ORDENAÇÃO

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

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

Divisão-e-Conquista ( ) CAL ( ) MIEIC/FEUP. ./rr (1) Técnicas de Concepção de Algoritmos

Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I

Vectores: Algoritmos de Ordenação. Algoritmos e Estruturas de Dados 2009/2010

ALGORITMOS AVANÇADOS. UNIDADE III Algoritmo de Ordenação por Intercalação (Mergesort) Luiz Leão

Análise de algoritmos

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

Projeto e Análise de Algoritmos Aula 4: Dividir para Conquistar ou Divisão e Conquista ( )

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

QuickSort CI/2015. Análise e Projeto de Algoritmos. - Prof. Lucídio A. F. Cabral

BUSCA EM ARRAYS. Prof. André Backes. Ato de procurar por um elemento em um conjunto de dados

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

Banco de Dados. Métodos de Ordenação de Dados. Prof. Walteno Martins Parreira Jr

5. Algoritmos de Ordenação

Algoritmos e Estrutura de Dados. Algoritmos Prof. Tiago A. E. Ferreira

Ordenação em Tempo Linear. Leitura: Cormen Capítulo 8

Algoritmos de Ordenação: QuickSort

Métodos de Ordenação

MÉTODOS DE CLASSIFICAÇÃO EM MEMÓRIA PRIMÁRIA. George Gomes Cabral

Estruturas de Dados 2

Extra- Algoritmos de Ordenação

Projeto e Análise de Algoritmos

Introdução à Ciência da Computação II

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

Tópico 5 Algoritmos de Ordenação. Parte II - métodos de ordenação: counting sort, radix sort e bucket sort.

Quick Sort. Considerações Sobre Algoritmos de Ordenação. Estagiário PAE: Jesimar da S. Arantes Professor: Claudio Quick F. M.

Bubble Sort. Tempo total O(n 2 )

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

Estruturas de Dados Algoritmos de Ordenação

Análise e desenho de algoritmos Paralelos Implementação em Java

Ordenação e Busca em Arquivos

Métodos de Classificação

Pedro Ribeiro 2014/2015

Divisão e conquista. Eficiência de divisão e conquista

PLANO DE DISCIPLINA DISCIPLINA: Análise de Algoritmos

Lista 1 - PMR2300. Fabio G. Cozman 3 de abril de 2013

Algoritmos de ordenação Quicksort

Algoritmos de ordenação: Bucketsort, Radixsort e Seleção

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 12: MEMÓRIA CACHE: FUNÇÃO DE MAPEAMENTO (PARTE 1)

5. Análise de Complexidade de Algoritmos. João Pascoal Faria (versão original) Ana Paula Rocha (versão 2003/2004) Luís Paulo Reis (versão 2005/2006)

Organização e comunicação em plataformas paralelas

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

Análise e desenho de algoritmos paralelos

Paradigmas de programação

Divisão e conquista. Há divisão quando o algoritmo tem pelo menos 2 chamadas recursivas no corpo

Busca em Memória Primária Estrutura de Dados II

Busca em Memória Primária Estrutura de Dados II

Métodos de Ordenação Parte 4

PLANO DE DISCIPLINA DISCIPLINA: Análise de Algoritmos

Métodos de Busca Parte 1

Algoritmos de Ordenação: Tempo Linear

Métodos de Ordenação Parte 3

TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ESTRUTURAS DE DADOS AVANÇADAS Aula 3

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

Decisões arquiteturais importantes. Projeto arquitetural x projeto de algoritmos. Decomposição de dados. Decomposição de dados

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

Árvores B Partes I e II

Algoritmos de Ordenação

Ordenação. Prof. Túlio A. M. Toffolo Prof. Marco Antonio M. Carvalho BCC402 Aula 04 Algoritmos e Programação Avançada

QuickSort. Estrutura de Dados II Jairo Francisco de Souza

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

Busca em Regiões Ortogonais

A Invenção da B-Tree. Árvores B Parte I. Problema. Problema. Introdução. Leandro C. Cintra Maria Cristina F. de Oliveira. Solução?

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

Quicksort. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Ordenação. Insertion Sort

Quicksort Letícia Rodrigues Bueno

O mais leve e o mais pesado Algoritmos de Ordenação

Programação Concorrente e Paralela

Aula 2. Divisão e conquista. Exemplo 1: Número de inversões de uma permutação (problema 2-4 do CLRS; veja também sec 5.4 do KT)

Ordenação em Tempo Linear

Análise de algoritmos. Parte I

Mergesort. Aula 04. Algoritmo Mergesort. Divisão e Conquista. Divisão e Conquista- MergeSort

Divisão e Conquista. Fernando Lobo. Algoritmos e Estrutura de Dados II. É uma técnica para resolver problemas (veremos outras técnicas mais adiante).

PLANO DE DISCIPLINA DISCIPLINA: Algoritmos e Programação

Algoritmos e Estruturas de Dados I Prof. Tiago Eugenio de Melo

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

Aula 19: Métodos eficientes de ordenação

Existem duas categorias de algoritmos de ordenação: Os algoritmos de ordenação são avaliados de acordo com os seguintes critérios:

Classes, Herança e Interfaces

Modelagem com relações de recorrência. Exemplo: Determinada população dobra a cada ano; população inicial = 5 a n = população depois de n anos

Análise de Algoritmos

Arquitecturas Paralelas I Computação Paralela em Larga Escala LESI - 4º Ano. Desenvolvimento de Aplicações Paralelas

Algoritmos de Ordenação: Cota Inferior

Estruturas de Dados 2

Árvore-B. Árvore B. Características Gerais. Sistemas de Banco de Dados. Características Gerais. Revisão

Algoritmos e Estrutura de Dados. Aula 01 Apresentação da Disciplina e Introdução aos Algoritmos Prof. Tiago A. E. Ferreira

Análise de Algoritmos

Transcrição:

ISUTIC 2017 Algoritmos de ordenação em forma paralela. Docente: MSc. Angel Alberto Vazquez Sánchez

Bibliografía A. Grama, Introduction to parallel computing. Pearson Education, 2003. I. Foster, Designing and Building Parallel Programs: Concepts and Tools for Parallel Software Engineering, 1st ed. Addison Wesley, 1995. Parallel Programming in Java, Coursera Course.

Introdução A ordenação é um das operações mas realizadas por um computador. devido a que os dados ordenados que são mais fáceis de manipular que os dados ordenados aleatoriamente, muitos algoritmos requerem dados ordenados. Ordenar que é de uma importância adicional para a computação paralela devido a sua próxima relação à tarefa de enrutar dados entre processos, o qual é uma parte essencial de muitos algoritmos paralelos. Muitos algoritmos paralelos foram investigados para uma variedade de arquitetura de computadores paralelos.

Ordenação A ordenação é definida como a tarefa de organizar uma coleção desorganizada de elementos em ordem monotonamente crescente (decrescente).

Ordenação Especificamente, seja S= a 1, a 2,, a n uma seqüência de n elementos em uma ordem arbitrária; a ordenação transforma S em uma seqüência monotonamente crescente S= a' 1, a' 2,,a' n tal que a' i a' j para 1 i j n, e S é uma permutação do S.

Ordenação Os algoritmos de ordenação estão categorizados como internos ou externos. Na ordenação interna, o numero de elementos a ser ordenado é pequena e suficiente para ajustarse na memória do processo principal. Em contraste, algoritmo de ordenação externa usa armazenamento auxiliar (como o disco rígido) para ordenar devido a que o número de elementos a ser ordenados que é muito grande para ajustar-se à memória.

Ordenação Os algoritmos de ordenação podem categorizar-se como apoiados em comparação e não apoiados em comparação: Nos algoritmos apoiados em comparação, ordena uma seqüência desordenada de elementos mediante a comparação de pares de elementos repetidamente, e se não estarem na ordem correta se intercambiam. Esta operação fundamental é chamada compara-intercambia. O limite inferior da complexidade seqüencial para qualquer algoritmo de ordenação apoiada em comparação é Θ(n log n) onde n é o número de elementos a ordenar.

Ordenação Os algoritmos de ordenação podem categorizar-se como apoiados em comparação e não apoiados em comparação: Os algoritmos não apoiados em comparação ordenam usando certas propriedades conhecidas dos elementos (tais como sua representação binária ou sua distribuição). O limite inferior de complexidade para estes algoritmos é Θ(n)

Problemas na ordenação em computadores paralelas Paralelizar um algoritmo de ordenação seqüencial implica distribuir os elementos a ordenar nos processos disponíveis. Este processo provoca um grupo de problemas que se devem resolver para fazer mais clara a apresentação dos algoritmos paralelos.

Problemas na ordenação em computadores paralelas Onde a seqüências de entrada e saída são armazenadas? Nos algoritmos de ordenação seqüencia, as seqüências de entrada e saída são armazenados na memória do processo. Entretanto, na ordenação paralela há dois lugares onde estas seqüências podem residir. Estas podem ser armazenadas em só um dos processos ou pode ser distribuída entre processos. A última aproximação é particularmente útil se a ordenação for um passo imediato de outro algoritmo.

Problemas na ordenação em computadores paralelas Como a comparação é realizada? Um algoritmo de ordenação seqüencial pode facilmente realizar uma comparación-intercambio de dois elementos porque eles estão armazenados localmente na memória do processo. Nos algoritmos de ordenação paralela, este passo não é tão fácil. Se os elementos residirem no mesmo processo, a comparação é realizada facilmente. Mas se os elementos residem em processos diferentes a situação se torna mais complicada

Problemas na ordenação em computadores paralelas Como a comparação é realizada? Um elemento por processo compare-exchange mais de um elemento por processo compare-split

Ordenação Borbulha e seus variantes O algoritmo de ordenação seqüencial borbulha compara e intercambia elementos adjacentes na seqüência a ser ordenada. Dada uma seqüência <a 1, a 2,..., a n >, o primeiro algoritmo realiza n-1 operações de comparación-intercambio na seguinte ordem:(a 1, a 2 ), (a 2, a 3 ),..., (a n-1, a n ). Este passo move o elemento maior ao final da seqüência. O último elemento da seqüência transformada é ignorado e a série de comparación-intercambio é aplicada à seqüência resultante.

Ordenação Borbulha e seus variantes A seqüência é ordenada logo depois de n-1 reiterações. Podemos melhorar o rendimento do a ordenação borbulha terminando quando não se realizarem intercâmbios durante uma reiteração. Uma reiteração no ciclo interno da ordenação borbulha toma uma tempo de Θ(n), e realizamos um total de Θ(n) reiterações; por isso a complexidade da ordenação por borbulha é Θ(n 2 ). A ordenação borbulha é difícil de paralelizar.

Ordenação Borbulha e seus variantes

Ordenação Borbulha e seus variantes Odd-Even Transposition O algoritmo odd-even transposition ordena n elementos em n fases (n é par), cada uma das quais requer de n/2 operações de comparação - intercâmbio. Este algoritmo alterna entre dois passes chamadas fases odd e even.

Ordenação Borbulha e seus variantes Seja <a 1, a 2,..., a n > a seqüência a ser ordenada. Durante a fase odd, elementos com índices ímpares são comparados com seus vizinhos, e se não estarem em ordem eles são intercambiados; isto é: os pares (a 1, a 2 ), (a 3, a 4 ),..., (a n-1, a n ) são comparados-intercambiados (assumindo que n é par). Similarmente, duranta a fase even, elementos com índice par é comparado com seu vizinho direito, e se não estarem em ordem são intercambiadas; isto é: os pares (a 2, a 3 ), (a 4, a 5 ),..., (a n-2, a n-1 ) são comparados-intercambiados. Logo depois de n fases de intercâmbios odd-even, a seqüência está ordenada.

Odd-Even Transposition Cada fase del algoritmo (tanto odd como even) requiere de Θ(n) comparaciones, y hay un total de n fases; por tanto, la complejidad secuencial es Θ(n 2 ). Cada fase do algoritmo (tanto odd como even) requer de Θ(n) comparações, e há um total de n fases; portanto, a complexidade seqüencial é Θ(n 2 ).

Odd-Even Transposition

Odd-Even Transposition

Odd-Even Transposition É fácil paralelizar a ordenação por transposição even-odd. Durante cada fase do algoritmo, as operações compare-exchange nos pares de elementos são desenvolvidas simultaneamente. Considera o caso de un-elemento-por-processo. Seja n o número de processos (também o número de elementos a ordenar). Além disso que os processos são ordenados em um acerto unidimensional.

Odd-Even Transposition O elemento ai inicialmente reside no processo Pi para i = 1, 2,..., n. Durante a fase odd, cada processo com uma etiqueta ímpar comparaintercambia com o elemento residente no vizinho direito. Similarmente, durante a fase even, cada processo com uma etiqueta par comparaintercambia seus elementos com o elemento do vizinho direito.

Odd-Even Transposition

Odd-Even Transposition Se p é o número de processos, onde p<n. Então tempo de execução paralelo é: Ver derivação da equação na seção 9.3.1 do livro Introduction to parallel computing

Estudo independente Ler o epígrafe 9.3.2 Shellsort do livro Introduction to parallel computing. Entregar uma folha com um resumo de dito método.

Quicksort Quicksort é um algoritmo divide-y-vencerás que ordena uma seqüência dividindo-a recursivamente em subsecuencias menores. Assume que a seqüência de n-elementos a ser ordenada é armazenada em um acerto A[1..n]. Consiste em dois passos: Divide e conquista Durante o passo de divide, uma seqüência A[q..r] é particionado (re-ordenado) em dois subsecuencias não esvazia A[q..s] e A[s+1..r] tal que cada elemento na primeira sub-seqüencia é menor que ou igual a cada elemento na segunda sub-seqüencia.

Quicksort Durante o passo de conquista, seqüencia-as são ordenadas aplicando quicksort recursivamente. Desde que as seqüencia A[q..s] e A[s+1..r] são ordenados e a primeira sub-seqüencia tem menores elementos que a segunda, a seqüência completa está ordenada.

Quicksort

Quicksort A complexidade de partir a seqüência de tamanho k é Θ(k) O rendimento do Quicksort é grandemente afetado pela maneira em que particiona uma seqüência. De forma general a melhor partição possível é quando se divide em partes iguais e cada parte tem k /2 e k /2 elementos, obtendo um tempo de T(n) = Θ(n log n)

Quicksort paralelo O algoritmo Quicksort pode ser paralelizado em uma variedade de maneiras. As linhas 14 e 15 do algoritmo mostram que, durante cada chamada ao Quicksort, o array é partido em duas partes e cada parte é resolvida de maneira recursiva. Ordenar os dois array mas pequenos representam dois sub-problemas completamente independentes que podem ser resolvidos em paralelo. portanto, uma maneira de paralelizar Quicksort é executálo inicialmente em um processo simples, então, quando o algoritmo realiza sua chamada recursiva (linhas 14 e 15), atribui um dos sub-problemas em outro processo.

Quicksort paralelo Agora cada um desses processos ordena seu array usando Quicksort e atribuindo um de seu sub-problemas a outro processo. O algoritmo termina quando o array não pode ser dividido. Até a terminação, cada processo mantém um elemento do array, e a ordem ordenada pode ser recuperado ao percorrer os processos. Esta formulação dessa quicksort n processos para ordenar n elementos.

Quicksort paralelo Sua maior desvantagem é que a divisão do array A[q.. r] em dois acertos menor, A[q.. s] e A[s+1.. r], é feito por um processo seqüencial. Desde que um processo deve partir o acerto original A[1.. n], o tempo de execução desta formulação demarcada de maneira inferior por Ω(n). A principal limitação desta formulação é que realiza o passado divisão de maneira seqüencial.

Quicksort paralelo O tempo de execução desta variante é T (n) = 2T (n/2) + Θ(n) O término Θ(n) es debido a que particionando el arreglo. Comparando esta complejidad con la complejidad del algoritmo Θ(n log n) Entretanto, sem paralelizar o passado do particionado, o melhor que podemos fazer é usar sozinho Θ(log n) processos para ordenar n elementos em um tempo Θ(n).

Estudo independente Estudar o epígrafe 9.4.2 Parallel Formulation for ao CRCW PRAM do livro Introduction to parallel computing. Entregar um resumo em uma folha.

Conclusões