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

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

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/