ao a Algoritmos
1 / 63
Divisao e Conquista
Eduardo Camponogara
Departamento de Automac
ao e Sistemas
Universidade Federal de Santa Catarina
Introduc
ao a Algoritmos
Sum
ario
Merge Sort
Abordagens para Solucao de Recorrencias
Outras Recorrencias
Contando Inversoes
Encontrando os Pontos Mais Pr
oximos
2 / 63
Introduc
ao a Algoritmos
Sum
ario
Introducao
3 / 63
Introduc
ao a Algoritmos
Merge Sort
Sumario
Merge Sort
Abordagens para Solucao de Recorrencias
Outras Recorrencias
Contando Inversoes
Encontrando os Pontos Mais Pr
oximos
4 / 63
Introduc
ao a Algoritmos
Merge Sort
Merge List
I
I
I
I
5 / 63
Introduc
ao a Algoritmos
Merge Sort
6 / 63
Introduc
ao a Algoritmos
7 / 63
Merge Sort
Introduc
ao a Algoritmos
8 / 63
Merge Sort
Introduc
ao a Algoritmos
Abordagens para Soluc
ao de Recorr
encias
Sumario
Merge Sort
Abordagens para Solucao de Recorrencias
Outras Recorrencias
Contando Inversoes
Encontrando os Pontos Mais Pr
oximos
9 / 63
Introduc
ao a Algoritmos
Abordagens para Soluc
ao de Recorr
encias
10 / 63
Introduc
ao a Algoritmos
11 / 63
No nvel j, o n
umero de problemas duplicou j vezes, logo
existem existem 2j subproblemas cada um deles com tamanho
n/2j .
Portanto, o nvel j contribui com no maximo
2j (
ao tempo total de execucao.
cn
) = cn
2j
Introduc
ao a Algoritmos
Abordagens para Soluc
ao de Recorr
encias
12 / 63
Introduc
ao a Algoritmos
Abordagens para Soluc
ao de Recorr
encias
13 / 63
Introduc
ao a Algoritmos
14 / 63
Introduc
ao a Algoritmos
15 / 63
Introduc
ao a Algoritmos
16 / 63
Substituicao Parcial
Suponha que acreditamos que T (n) O(n log n), mas nao
estamos certos das contantes em O().
Introduc
ao a Algoritmos
17 / 63
Introduc
ao a Algoritmos
18 / 63
Prosseguindo
T (n) kn log2 n kn + cn
Introduc
ao a Algoritmos
Outras Recorr
encias
Sumario
Merge Sort
Abordagens para Solucao de Recorrencias
Outras Recorrencias
Contando Inversoes
Encontrando os Pontos Mais Pr
oximos
19 / 63
Introduc
ao a Algoritmos
20 / 63
Outras Recorr
encias
Introduc
ao a Algoritmos
Outras Recorr
encias
Caso q > 2
identificar um padrao
21 / 63
Introduc
ao a Algoritmos
Outras Recorr
encias
nvel 0: cn
nvel 1: qc n2
nvel 2: q 2 c n4
nvel k: q k c 2nk
22 / 63
Introduc
ao a Algoritmos
23 / 63
Outras Recorr
encias
n
n
n
n
+ q1c 1 + q2c 2 + + qk c k
20
2
2
2
log2 n1
X
q k
T (n) q 0 c
cn
= cn
k=0
r log2 n
1
com r = q/2
r 1
Introduc
ao a Algoritmos
24 / 63
Outras Recorr
encias
Portanto,
r log2 n
T (n) cn
1
r
c
=
nr log2 n
r 1
Introduc
ao a Algoritmos
Outras Recorr
encias
Substituicao Parcial
25 / 63
Introduc
ao a Algoritmos
26 / 63
Outras Recorr
encias
Temos que
T (n) qT (n/2) + cn
e aplicando a hipotese indutiva em T (n/2) chegamos a
n d
+ cn
T (n) qk
2
q
= d knd + cn
2
Introduc
ao a Algoritmos
Outras Recorr
encias
Exemplo: q = 3
27 / 63
Introduc
ao a Algoritmos
28 / 63
Outras Recorr
encias
Introduc
ao a Algoritmos
29 / 63
Outras Recorr
encias
n d
2
ql
n
2
q d ql
kn n + cn
2d
2
ql
d
= kn n + cn
2
ql
d
= kn
+c n
2
=
+ cn
Introduc
ao a Algoritmos
30 / 63
Outras Recorr
encias
Introduc
ao a Algoritmos
31 / 63
Outras Recorr
encias
Caso q = 1
(1)
Introduc
ao a Algoritmos
Outras Recorr
encias
nvel 0: cn
nvel 1: cn/2
nvel 2 cn/4
32 / 63
Introduc
ao a Algoritmos
Outras Recorr
encias
Exemplo: q = 1
33 / 63
Introduc
ao a Algoritmos
34 / 63
Outras Recorr
encias
log2 n1
log2 n1
X cn
X
1
=
cn
2j
2j
j=0
j=0
X
1
cn
2j
T (n)
j=0
1
= 2cn
1 1/2
= O(n)
= cn
Introduc
ao a Algoritmos
35 / 63
Outras Recorr
encias
Substituicao Parcial
Da mesma forma que no caso anterior, vamos supor que
T (n) knd
Tentando estabelecer a veracidade por inducao,
T (n) T (n/2) + cn
n d
k
+ cn
2
k
= d nd + cn
2
Introduc
ao a Algoritmos
36 / 63
Outras Recorr
encias
T (n)
Introduc
ao a Algoritmos
Contando Invers
oes
Sumario
Merge Sort
Abordagens para Solucao de Recorrencias
Outras Recorrencias
Contando Inversoes
Encontrando os Pontos Mais Pr
oximos
37 / 63
Introduc
ao a Algoritmos
Contando Invers
oes
Contando Inversoes
38 / 63
Introduc
ao a Algoritmos
Contando Invers
oes
Contando Inversoes
38 / 63
Introduc
ao a Algoritmos
Contando Invers
oes
Contando Inversoes
38 / 63
Introduc
ao a Algoritmos
Contando Invers
oes
39 / 63
Introduc
ao a Algoritmos
Contando Invers
oes
39 / 63
Introduc
ao a Algoritmos
Contando Invers
oes
39 / 63
Introduc
ao a Algoritmos
Contando Invers
oes
Queremos determinar o n
umero de invers
oes na sequencia
a1 , . . . , an .
40 / 63
Introduc
ao a Algoritmos
Contando Invers
oes
Queremos determinar o n
umero de invers
oes na sequencia
a1 , . . . , an .
40 / 63
Introduc
ao a Algoritmos
Contando Invers
oes
41 / 63
Introduc
ao a Algoritmos
Contando Invers
oes
Projetando um Algoritmo
I
I
42 / 63
Introduc
ao a Algoritmos
Contando Invers
oes
Projetando um Algoritmo
I
I
42 / 63
Introduc
ao a Algoritmos
Contando Invers
oes
Exemplo: q = 1
43 / 63
Introduc
ao a Algoritmos
Contando Invers
oes
44 / 63
Introduc
ao a Algoritmos
Contando Invers
oes
44 / 63
Introduc
ao a Algoritmos
Contando Invers
oes
44 / 63
Introduc
ao a Algoritmos
Contando Invers
oes
Merge-and-Count(A, B)
I
I
I
I
45 / 63
Introduc
ao a Algoritmos
Contando Invers
oes
Sort-and-Count(L)
I If the list has one element then
I
I
else
I
I
I
I
I
Observacao
Sort-and-Count roda em tempo O(n log n).
46 / 63
Introduc
ao a Algoritmos
Contando Invers
oes
Sort-and-Count(L)
I If the list has one element then
I
I
else
I
I
I
I
I
Observacao
Sort-and-Count roda em tempo O(n log n).
46 / 63
Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos
Sumario
Merge Sort
Abordagens para Solucao de Recorrencias
Outras Recorrencias
Contando Inversoes
Encontrando os Pontos Mais Pr
oximos
47 / 63
Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos
Definicao do Problema
48 / 63
Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos
Definicao do Problema
48 / 63
Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos
Projetando o Algoritmo
49 / 63
Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos
Projetando o Algoritmo
49 / 63
Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos
Divisao e Conquista
Estrategia:
1. Dividimos os pontos em uma metade esquerda e uma metade
direita.
2. Encontramos o par mais pr
oximo na metade esquerda, e o par
mais proximo na metade direita.
3. Usamos a informacao anterior para encontrar a solucao global.
As combinacoes nao consideradas sao aquelas que envolvem
um ponto da esquerda e da direita.
50 / 63
Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos
Definindo a Recursao
Recursao:
I
51 / 63
Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos
Definindo a Recursao
Recursao:
I
51 / 63
Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos
Ilustracao
52 / 63
Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos
Definindo a Recursao
53 / 63
Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos
Combinando as Solucoes
54 / 63
Introduc
ao a Algoritmos
55 / 63
Proposicao
Se existe q Q e r R para os quais d(q, r ) < , entao q e r
estao a uma distancia de L
Prova
Suponha que q e r existem, onde q = (qx , qy ) e r = (rx , ry ). Pela
definicao de r ? , sabemos que qx x ? rx . Entao,
x ? qx rx qx d(q, r ) <
Alem disso,
rx x ? rx qx d(q, r ) <
Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos
Prova
Logo, os pontos q e r tem uma coordenada-x a unidades de x ?
e, portanto, estao a uma distancia maxima da linha L.
56 / 63
Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos
Observacao
57 / 63
Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos
Observacao
57 / 63
Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos
Observacao
57 / 63
Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos
Proposicao
Existe q Q e r R com d(q, r ) < se, e somente se, existe
s, s 0 S para os quais d(s, s 0 ) < .
58 / 63
Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos
Ilustracao
59 / 63
Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos
Proposicao
Se s, s 0 S tem a propriedade que d(s, s 0 ) < , entao s e s 0 estao
a 15 posicoes um do outro na lista ordenada Sy .
Prova
I
60 / 63
Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos
Proposicao
Se s, s 0 S tem a propriedade que d(s, s 0 ) < , entao s e s 0 estao
a 15 posicoes um do outro na lista ordenada Sy .
Prova
I
60 / 63
Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos
Proposicao
Se s, s 0 S tem a propriedade que d(s, s 0 ) < , entao s e s 0 estao
a 15 posicoes um do outro na lista ordenada Sy .
Prova
I
60 / 63
Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos
Prova
I
61 / 63
Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos
Prova
I
61 / 63
Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos
Prova
I
61 / 63
Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos
Prova
I
62 / 63
Introduc
ao a Algoritmos
Encontrando os Pontos Mais Pr
oximos
Encerramento
Fim!
63 / 63