Top Banner
Análise de algoritmos Divisão e Conquista UNISUL Ciência da Computação Prof. Maria Inés
26

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

Apr 17, 2015

Download

Documents

Internet User
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Análise de algoritmos Divisão e Conquista UNISUL Ciência da Computação Prof. Maria Inés Castiñeira, Dra.

Análise de algoritmos

Divisão e Conquista

UNISUL

Ciência da Computação

Prof. Maria Inés Castiñeira, Dra.

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

2

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.

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

Exemplo: Mergesort

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

4

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

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

5

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.

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

6

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

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

7

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.

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

8

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.

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

9

Algoritmo Genérico DeC

DivisãoeConquista(x)if (x é pequeno ou simples) do

Return resolver(x)

elsedecompor 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

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

10

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

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

11

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.(2log

27=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|

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

12

Multiplicação de Matrizes: Algoritmo de Strassen

|c11 c12| | a11 a12| |b11 b12| |c21 c22| = | a21 a22| * |b21 b22|

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

13

Algoritmo de Strassen

Conferindo:

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

14

Distância entre dois pontos?

Distancia euclideana:

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

15

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.

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

16

Distância entre dois pontos

Menor distância?

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

17

Distância entre dois pontos?

Menor distância:

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

18

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?

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

19

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

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

20

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?

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

21

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

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

22

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

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

23

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)

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

24

Algoritmo ClosestPair

Pré-processamentoConstruir Px e Py como listas ordenadas pelasCoordenadas x e y

DivisãoQuebrar P em Pe e Pd

Conquistade= ClosestPair(Pe)dd= ClossetPair(Pd)

Combinaçãod= min{de, dd}Determinar faixa divisória e pontosVerificar se tem algum par com distância < d

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

Pausa?

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

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/