Divisão e Conquista Análise de algoritmos UNISUL Ciência da Computação

Slides:



Advertisements
Apresentações semelhantes
AULA 02 PROGRAMAÇÃO LINEAR INTEIRA
Advertisements

AULA 01 PROGRAMAÇÃO DINÂMICA
Geometria Computacional Fecho Convexo II
Programação em Java Prof. Maurício Braga
Inteligência Artificial
Análise de Decisão Aplicada a Gerência Empresarial – UVA Grafos - V
Amintas engenharia.
Matrizes especiais Matriz linha Matriz do tipo 1 x n, ou seja, com uma única linha. Por exemplo, a matriz A =[ ], do tipo 1 x 4. Matriz coluna.
Operações Algébricas Operações Topológicas
MÁQUINAS UNIVERSAIS Fabrício Dias
COMPREENDER A DIVISÃO.
Solved Exercises 1. Finding the Peak. Let A= a1,…,an be a sequence of n numbers with the following property: there is p in {1,…,n} for which (i) the.
Celso C. Ribeiro Caroline T. Rocha
UNIVERSIDADE LUTERANA DO BRASIL COMUNIDADE EVANGÉLICA LUTERANA SÃO PAULO Reconhecida pela Portaria Ministerial nº 681 de 07/12/89 – DOU de 11/12/89 Campus.
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ESTRUTURAS DE DADOS AVANÇADAS Aula /08/2011 Professor Leomir J. Borba-
Algoritmos de Ordenação
Universidade Bandeirante de São Paulo Fundamentos da Álgebra
Universidade Bandeirante de São Paulo Fundamentos da Álgebra
ENGENHARIA DE MÉTODOS Prof. Adolfo Sérgio Furtado da Silva
Sejam A e B duas matrizes do mesmo tipo denomina-se soma de
MATRIZES * DEFINIÇÃO *ALGUMAS APLICAÇÕES * TIPOS
SISTEMAS DE EQUAÇÕES.
Análise Projeto de Algoritmos
1 Complexidade de Algoritmos Complexidade de pior caso Complexidade de melhor caso de uso bem menos freqüente em algumas situações específicas Complexidade.
Árvores.
1 MergeSort Seja uma lista A de n elementos. O algoritmo consiste das seguintes fases Dividir A em 2 sub-listas de tamanho n/2 Conquistar: ordenar cada.
David Menotti Estruturas de Dados I DECOM – UFOP
BCC101 – Matemática Discreta
MATRIZES Prof. Marlon.
Polinômios Prof. Marlon.
Estruturas de Dados e Complexidade de Algoritmos
Estruturas/Variáveis Compostas Multidimensionais *MATRIZES*
RECURSIVIDADE Análise de algoritmos UNISUL Ciência da Computação
Programação Dinámica Análise de algoritmos UNISUL
Experiments with Strassen’s Algorithm: from sequential to parallel
Consideremos o sistema
Pequena revisão e alguns erros comuns
Paralelização do algoritmo de Strassen
A Lógica das Sentenças Abertas Profa. Ana Florencia Aula 9
Revisão do conceito de matrizes
MECÂNICA - ESTÁTICA Vetores Forças Cap. 2.
Semana 03: Comandos de desvio de fluxo. Expressões lógicas.
Algoritmos de Ordenação 4
Resultantes de Sistemas de Forças Cap. 4
MECÂNICA - ESTÁTICA Vetores Forças Cap. 2.
Compressão de Textos Juliano Palmieri Lage.
Pesquisa em Memória Primária
SISTEMAS LINEARES.
Aula 02 Variáveis, Matrizes, Gráficos
Agenda Memória Secundária RAID.
Salas de Matemática.
Operações com frações (semana 9).
Arquitetura de computadores
4 Questões do Quadrado Está pronto? B A
Ordenação por inserção
Pesquisa Operacional Sistemas Lineares
Busca com informação e exploração
Pesquisa Operacional: Método Simplex – Duas Fases
Semana 03 Comandos de desvio de fluxo. Expressões lógicas.
Faculdade de Informática e Tecnologia de Pernambuco ESTRUTURA DE DADOS
Mergesort Katia Guimarães.
1 2 Observa ilustração. Cria um texto. Observa ilustração.
Campus de Caraguatatuba Aula 8: Noções Básicas sobre Erros (2)
Campus de Caraguatatuba Aula 12: Sistemas de Equações Lineares (2)
BCC /01 Aula Teórica 09 Funções Material Didático Proposto. 1 BCC701 – Programação de Computadores I Universidade Federal de Ouro Preto Departamento.
Campus de Caraguatatuba
BCC 101 – Matemática Discreta I
Campus de Caraguatatuba Aula 9: Noções Básicas sobre Erros (3)
ATAL – Prof. Jorge Figueiredo Ordenação AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação.
Ordenação Professor Paulo Gomide 27 de outubro de 2015.
Transcrição da apresentação:

Divisão e Conquista Análise de algoritmos UNISUL Ciência da Computação Prof. Maria Inés Castiñeira, Dra.

Divisão e conquista Pegar um problema de entrada grande. Quebrar a entrada em pedaços menores (DIVISÃO). Resolver cada pedaço separadamente. (CONQUISTA) Como resolver os pedaços? Combinar os resultados. 232

Exemplo: Mergesort

Técnica DeC (Div. e Conquista) A técnica de divisão e conquista consiste em 3 passos básicos: 1. Divisão: Dividir o problema original, em subproblemas menores. 2. Conquista:Resolver cada subproblema recursivamente. 3. Combinação: Combinar as soluções encontradas, compondo uma solução para o problema origina 235

Técnica DeC Algoritmos baseados em divisão e conquista são, em geral, recursivos. A maioria dos algoritmos de divisão e conquista divide o problema em a subproblemas da mesma natureza, de tamanho n/b. T(n) = a. T(n/b) + g(n) Teorema Master para fazer análise. 236

Técnica DeC Vantagens: Requer um número menor de acessos à memória. São altamente paralelizáveis. Se existem vários processadores disponíveis, a estratégia propicia eficiência 236

Quando Utilizar DeC? Existem três condições que indicam que a estratégia de divisão e conquista pode ser utilizada com sucesso: 1. Deve ser possível decompor uma instância em sub-instâncias. 2. A combinação dos resultados deve ser eficiente. 3. As sub-instâncias devem ser mais ou menos do mesmo Tamanho. 236

Quando Utilizar DeC? É possível identificar pelo menos duas situações genéricas em que a abordagem por divisão e conquista é adequada: 1. Problemas onde um grupo de operações são correlacionadas ou repetidas. A multiplicação de matrizes, que veremos a seguir, é um exemplo clássico. 2. Problemas em que uma decisão deve ser tomada e, uma vez tomada, quebra o problema em peças disjuntas. Em especial, a abordagem por divisão-e-conquista é interessante quando algumas peças passam a ser irrelevantes. 236

Algoritmo Genérico DeC DivisãoeConquista(x) if (x é pequeno ou simples) do Return resolver(x) else decompor x em conjuntos menores x0, x1, … xn for i ←0 to n do yi ←DivisãoeConquista(xi) i ←i +1 combinar yi’s Return y 236

Multiplicação de Matrizes Objetivo é multiplicar duas matrizes n×n. Por exemplo, no caso de n=2, é necessário efetuar 8 multiplicações. (2x, em que x = log28). x=3 logo 8=23 |c11 c12| | a11 a12| |b11 b12| |c21 c22| = | a21 a22| * |b21 b22| C11 = a11 . b11+ a12 . b21 C12 = a11 . b12+ a12 . b22 C21 = a21 . b11+ a22 . b21 C22 = a21 . b12+ a22 . b22 237

Multiplicação de Matrizes: Algoritmo de Strassen Strassen mostrou que um multiplicação de matrizes 2x2 pode ser feita com 7 multiplicações e 18 operações de adição e subtração.(2log27=22.807) Redução feita usando divisão e conquista. R A0 *B0+A1*B2 | A0*B1+ A1*B3| -------------------------------- | A2 *B0+A3*B2 | A2*B1+ A3*B3| 237

Multiplicação de Matrizes: Algoritmo de Strassen |c11 c12| | a11 a12| |b11 b12| |c21 c22| = | a21 a22| * |b21 b22| 237

Algoritmo de Strassen Conferindo:

Distância entre dois pontos? Distancia euclideana: 14 273 14

Menor Distância entre dois pontos? Closest Pair Entrada: Um conjunto P de pontos n. P = <p1, p2, ..., pn>, em duas dimensões (x, y). Saída: O par de pontos pi e pj que apresenta a menor distância euclideana. 15 273 15

Distância entre dois pontos Menor distância? 16 273 16

Distância entre dois pontos? Menor distância: 17 273 17

Distância entre dois pontos • Solução Força Bruta é O(n^2). • Vamos assumir: – Não existem pontos com a mesma coordenada x. – Não existem pontos com a mesma coordenada y. • Como resolver este problema considerando 1D? • É possível aplicar Divisão e Conquista? 18 273 18

Distância entre dois pontos •Como dividir em sub-problemas? –Ordenar de acordo com a coordenada x e dividir em duas partes: esquerda e direita. Pe x1 x2 .......... xn/2 Pd ............. xn 19 273 19

Distância entre dois pontos • Resolver recursivamente cada sub-problema, obtendo de (distância esquerda) e dd (distância direita). • O que podemos observar? – Já temos a menor distância em cada uma das partes. – Fazer d= min{de , dd}. – Falta analisar distância entre pontos de sub-problemas distintos. – Devemos analisar todos os casos? 20 273 20

Distância entre dois pontos • Distância entre dois pontos • Somente pontos que se encontram em uma faixa de tamanho 2d em torno da linha divisória. Pe 2d Pd 21 273 21

Distância entre dois pontos • Distância entre dois pontos • Qual a quantidade de pontos que se encontram dentro da faixa de tamanho 2d? – Se considerarmos um ponto p ∈ Pe , todos os pontos de Pd que devem ser considerados devem estar em um retângulo R de dimensões d ×2d. p 22 273 22

Distância entre dois pontos • Distância entre dois pontos • Como determinar os seis pontos? – Projeção de pontos nos eixos x e y. – Pode-se fazer isso para todo p ∈ Pe e Pd, em O(n) (pontos ordenados). • Relação de recorrência é T(n)= 2.T(n/2) + O(n) – Sabemos que isso é O(n.log n) 23 273 23

Algoritmo ClosestPair • Algoritmo ClosestPair Pré-processamento Construir Px e Py como listas ordenadas pelas Coordenadas x e y Divisão Quebrar P em Pe e Pd Conquista de= ClosestPair(Pe) dd= ClossetPair(Pd) Combinação d= min{de, dd} Determinar faixa divisória e pontos Verificar se tem algum par com distância < d 24 273 24

Pausa?

Bibliografia Cormen, Leiserson e Rivest, ALGORITMOS: teoria e prática. Rio de Janeiro: Campus, 2002. FIGUEREDO, Jorge. Material didático de Técnicas e análise de algoritmos. UFCG. Disponível em www.dsc.ufcg.edu.br/~abrantes/