Sei sulla pagina 1di 35

Aula 15 – Agrupamento Guloso

25089/1001525 – Projeto e Análise de Algoritmos


2019/2 - Turma A
Prof. Dr. Murilo Naldi

naldi@dc.ufscar.br
Agradecimentos


Aos professores Mário Felice e Diego Furtado por ceder
parte do material utilizado.

Material inspirado nas aulas do prof. Tim Roughgarden
Lembrando…


Qual produto recomendar para um cliente a partir de uma
compra anterior?
– Mais semelhante(s)

3
Agrupamento


Seres inteligente categorizam “coisas” naturalmente
– Usando diferença/semelhança entre elas

4
Representação


Objetos podem ser representados como vetores d
dimensionais de características
– Assim, são como pontos em um espaço de d-
dimensões
ID Proprietário E. Civil Renda Investe

1 Sim Solteiro 1.500,00 Sim


2 Não Casado 812,00 Sim
3 Não Solteiro 2.345,67 Não
4 Sim Casado 4.768,00 Sim
5 Não Divorciado 734,00 Não
6 Não Casado 3.900,00 Sim
7 Sim Divorciado 2.100,00 Sim 5
Problema de Agrupamento


Problema de agrupamento em k grupos com
espalhamento máximo

Entradas:
– Um conjunto de pontos S
– Uma função de distância/dissimilaridade entre
os pontos
– Um inteiro positivo k
Solução


Agrupar os pontos de S em k grupos de modo a
maximizar a distância entre os grupos

Ou seja, construir grupos que maximizem a função:

min d ( p , q), ∀ i≠ j
p∈C i , q∈C j

sendo Ci o i-ésimo grupo do agrupamento.


Solução Estratégia Gulosa


Nesse problema, devemos separar os k grupos o mais
longe possível, ou seja, maximizar a menor distância
entre os grupos escolhidos.
– A menor distância entre dois grupos é a menor das
distâncias entre todos os pares de pontos que
pertencem a grupos distintos

Por isso, a estratégia gulosa é unir, a cada iteração, o par
de vértices separado mais próximo.
– A cada união, funde-se dois grupos. Como
começamos com cada ponto em um grupo isolado e
queremos terminar com k clusters, o algoritmo termina
depois de unir os n – k pares de pontos separados
mais próximos.
Exemplo: Algoritmo Agrupamento


Começando pelo agrupamento trivial, onde cada objeto
é um grupo (categoria)

9
Idade
Algoritmo Agrupamento


Aglomeramos os dois
grupos mais próximos

10
Idade
Algoritmo Agrupamento

Continuamos aglomeramos
os dois grupos mais próximos

11
Idade
Algoritmo Agrupamento

Continuamos aglomeramos
os dois grupos mais próximos

12
Idade
Algoritmo Agrupamento

Continuamos aglomeramos
os dois grupos mais próximos

Nesse
caso,
houve
empate
na
distância
!

13
Idade
Algoritmo Agrupamento

Continuamos aglomeramos
os dois grupos mais próximos

14
Idade
Algoritmo Agrupamento

Continuamos aglomeramos
os dois grupos mais próximos

15
Idade
Algoritmo Agrupamento

Continuamos até que o
número de grupos procurado
seja satisfeito!

16
Idade
Algoritmo Agrupamento


Número de grupos
atual k = 7

17
Idade
Algoritmo Agrupamento


Número de grupos
atual k = 6

18
Idade
Algoritmo Agrupamento


Número de grupos
atual k = 4

19
Idade
Algoritmo Agrupamento


Número de grupos
atual k = 3

20
Idade
Algoritmo Agrupamento


Número de grupos
atual k = 2

21
Idade
Algoritmo Agrupamento


Número de grupos
atual k = 1

22
Idade
Agrupamento e Kruskal


Note que o este algoritmo corresponde a uma
variante do algoritmo de Kruskal em que
– Pontos são vértices
– Pares de pontos são arestas
– Distâncias entre pares são custos das
arestas

O algoritmo para quando obtém k componentes
conexos (que correspondem aos grupos)
Algoritmo Agrupamento Distância Mínima

agrupamentoGuloso (S, distâncias D, k) {


ordene as distâncias D em ordem crescente
G = inicializa G com os pontos de S, um por grupo
k’ = |S|
para todos os pares de pontos p e q em S, em ordem
crescente de suas distâncias D
se p e q estiverem em grupos distintos em G
unifica os grupos de p e q em G
k’ = k’-1
se k’ == k
devolva G
}
Eficiência Computacional


Qual é a eficiência do algoritmo?
Eficiência Computacional


Qual é a eficiência do algoritmo?
– A mesma que Kruskal sobre grafo
completamente conexo

O(m log n)
– Como m é aproximadamente n² em grafo
conexo, temos algo como:

O(n² log n)
Prova de Corretude

● Seja P = C1, …, Ck um agrupamento guloso com


valor de espaçamento (função objetivo) e
● Seja P’ = C’1, …, C’k um agrupamento qualquer
● Vamos mostrar que o espaçamento de C’1, …,
C’k <= e
– Note que, como P’ é uma solução arbitrária,
isso implica na otimalidade de P
Prova de Corretude


Se P e P’ são iguais, então elas tem o mesmo
espaçamento e o resultado segue (Caso 1)
Prova de Corretude


Se P e P’ são iguais, então elas tem o mesmo
espaçamento e o resultado segue (Caso 1)

(Caso 2) Se as soluções são diferentes, sejam p
e q um par de pontos que está no mesmo grupo
na solução gulosa P e em grupos diferentes na
solução arbitrária P’
– Note que um par assim deve existir para
validar o caso
Prova de Corretude


Agora temos um subcaso fácil e um difícil
– (fácil) p e q foram unidos diretamente pelo
algoritmo guloso. Note que, com o algoritmo
guloso une sempre o par separado mais
próximo, neste caso o espaçamento da
solução gulosa (e) é pelo menos d(p,q), i.e.,

e >= d(p,q), pois para chegar a unir p e qo
algoritmo guloso certamente já uniu todos
os pares mais próximos que p e q.
Prova de Corretude


Mas, como p e q estão em grupos diferentes na
outra solução P’, temos que o espaçamento dela
é no máximo e, i.e.,
– espaçamento de C’1, …, C’k <= d(p,q) <= e

o que conclui o caso fácil.
Prova de Corretude


(difícil) No caso difícil, p e q não foram fundidos
diretamente, quer dizer, eles acabaram no
mesmo grupo porque algum elemento do grupo
de p foi fundido com algoritmo elemento do
grupo em que estava q
– Observe que, como todo elemento começa
isolado, podemos descreve um caminho das
fusões que levaram p e q a terminarem juntos.
Prova de Corretude


No desenho, cada aresta indica uma fusão
direta. Observe que, como p e q estão em
grupos distintos em P’, em algum momento o
caminho que começa em p vai deixar o grupo
C’i, para algum i, a qual ele pertença
Prova de Corretude

● No nosso exemplo, observe que o par a2, a3 está


no mesmo grupo na solução gulosa e em grupos
distintos em P’. Chamemos de ar, as esse par
que atravessa a fronteira de um grupo C’ i.
Prova de Correturde


Para concluir, basta observar duas coisas:
1.ar, as foram fundidos diretamente na solução
gulosa. Portanto, d(ar, as) <= e (pelos mesmos
motivos que argumentamos para p e q no
caso fácil)
2.ar, as estão em grupos distintos em P’.
Portanto, espaçamento C’1, …, C’k <= d(ar, as)

Juntando 1 e 2 concluímos a prova.

Potrebbero piacerti anche