Você está na página 1de 23

Guloso (Greedy)

Lucas S. Cavalcante
Instituto de Ciencias Matematicas e de Computa cao USP
12 de fevereiro de 2014
Lucas S. Cavalcante, Instituto de Ciencias Matematicas e de Computacao USP Guloso (Greedy) 1/23
Teoria
Algoritmos Gulosos (Greedy Algorithms) tem a propriedade da
escolha-gulosa:
A solu cao global otima pode ser obtida por escolhas otimas locais.
Fim de teoria.
Lucas S. Cavalcante, Instituto de Ciencias Matematicas e de Computacao USP Guloso (Greedy) 2/23
Pratica
Serao apresentados 4 problemas:

Problema Guloso I;

Problema do Troco (guloso);

Problema da Sele cao de Atividades;

Algoritmo de Kruskal.
Lucas S. Cavalcante, Instituto de Ciencias Matematicas e de Computacao USP Guloso (Greedy) 3/23
Problema Guloso I
Problema: Sejam N crian cas, cada qual quer comprar um
Nintendo 3DS, e cada uma delas possui a
i
(1 i N) de
dinheiro. Na cidade em que elas moram existem exatamente N
3DS a venda, cada qual a um preco c
i
. Cada crian ca ira comprar
somente um 3DS, que sera o dela, e nao ira emprestar nenhum
real. Deseja-se saber se as crian cas irao precisar de dinheiro extra
para que cada uma delas tenha um 3DS. Caso seja necessario um
dinheiro extra, qual o mnimo necessario?
Input: a
i
: 32, 21, 15, 9, 10 e c
i
: 17, 19, 25, 23, 36.
Lucas S. Cavalcante, Instituto de Ciencias Matematicas e de Computacao USP Guloso (Greedy) 4/23
Problema Guloso I: Solucao
Figura : Ilustra cao do input apos a ordena cao.
Lucas S. Cavalcante, Instituto de Ciencias Matematicas e de Computacao USP Guloso (Greedy) 5/23
Problema Guloso I: Solucao
Formalizando matematicamente, se esta ordenacao gulosa nao da
o melhor resultado, entao deve ser possvel melhorar a resposta
gulosa por trocar dois indicies quaisquer. Sejam i e j indicies, no
qual i < j (tanto a quanto c foram ordenados), desejamos mostrar
que comprar c
i
com a
i
e c
j
com a
j
tem custo extra menor ou igual
que c
j
com a
i
e c
i
com a
j
.
Lucas S. Cavalcante, Instituto de Ciencias Matematicas e de Computacao USP Guloso (Greedy) 6/23
Problema do Troco
Problema: Voce e um vendedor que possui, para efeitos praticos,
uma quantidade innita de notas de R$1, R$5, R$10 e R$20. Um
cliente compra um produto que custa R$ X, mas paga R$ Y
(X Y). Voce deseja dar o troco C = Y X com a menor
quantidade de notas possvel, quantas notas serao necessarias?
Input: X = 35 e Y = 89 (C = 54).
Lucas S. Cavalcante, Instituto de Ciencias Matematicas e de Computacao USP Guloso (Greedy) 7/23
Problema do Troco: Solucao?
O algoritmo guloso nao funciona para todos os conjuntos de
notas. Sejam N notas cada qual de valor c
i
e ordenadas de forma
crescente, entao quando c
i
e m ultiplo de c
i 1
o algoritmo guloso
funciona (esse e somente um dos casos em que o algoritmo guloso
funciona).
Seja o conjunto de notas C = {1, 15, 25}, no qual deseja-se dar
troco para 30, entao o algoritmo guloso falha:
25 + 1 + 1 + 1 + 1 + 1.
Problema do Troco com Programa cao Dinamica.
Lucas S. Cavalcante, Instituto de Ciencias Matematicas e de Computacao USP Guloso (Greedy) 8/23
Problema da Selecao de Atividades
Problema: Sejam N atividades, cada qual com o seu intervalo de
incio e m, deseja-se escolher a maior quantidade de atividades de
forma que nao haja sobreposicao entre elas (e permitido iniciar
uma nova atividade no mesmo instante em que outra termina).
Figura : Ilustra cao de um possvel input.
Lucas S. Cavalcante, Instituto de Ciencias Matematicas e de Computacao USP Guloso (Greedy) 9/23
Problema da Selecao de Atividades: Hip oteses
Atividade mais curta nao funciona:
Figura : Ilustra cao de um possvel input.
Lucas S. Cavalcante, Instituto de Ciencias Matematicas e de Computacao USP Guloso (Greedy) 10/23
Problema da Selecao de Atividades: Hip oteses
A que come ca mais cedo tambem nao:
Figura : Ilustra cao de um possvel input.
Lucas S. Cavalcante, Instituto de Ciencias Matematicas e de Computacao USP Guloso (Greedy) 11/23
Problema da Selecao de Atividades: Hip oteses
E se pegarmos a que termina mais cedo:
Figura : Ilustra cao de um possvel input.
Lucas S. Cavalcante, Instituto de Ciencias Matematicas e de Computacao USP Guloso (Greedy) 12/23
Problema da Selecao de Atividades: Prova
Seja a solu cao otima dada por O = {o
1
, o
2
, . . . , o
n
} e a solu cao
gulosa dada por S = {s
1
, s
2
, . . . , s
m
}. Ja sabemos que m n, mas
desejamos provar que m = n.
Para provar que n = m iremos antes provar que toda a tarefa o
i
termina mais tarde ou no mesmo instante que s
i
.
Lucas S. Cavalcante, Instituto de Ciencias Matematicas e de Computacao USP Guloso (Greedy) 13/23
Problema da Selecao de Atividades: Prova
Para provar que n = m iremos antes provar que toda a tarefa o
i
termina mais tarde ou no mesmo instante que s
i
.
Para o caso base e facil, o nosso algoritmo guloso escolheu
justamente a tarefa que termina o mais cedo possvel, logo, nao e
possvel que o
1
termine antes que s
1
, portanto, T
s
1
T
o
1
.
Assumindo verdadeiro para k vamos fazer o pa co da inducao para
k + 1. Seja o
k
e s
k
, no qual temos T
s
k
T
o
k
, entao mesmo que
executemos o nosso algoritmo guloso no tempo T
o
k
nos teremos
uma atividade que termina tao tarde quanto o
k+1
, logo, tambem
teremos T
s
k+1
T
o
k+1
.
Lucas S. Cavalcante, Instituto de Ciencias Matematicas e de Computacao USP Guloso (Greedy) 14/23
Problema da Selecao de Atividades: Prova
Uma vez que temos provado para todo k que T
s
k
T
o
k
, vamos
provar que m = n.
Vamos assumir que m < n, logo, O = {o
1
, o
2
, . . . , o
m
, . . . , o
n
} e
S = {s
1
, s
2
, . . . , s
m
}. Mas se isso for verdade, entao e possvel
simplesmente adicionar os elementos {o
m+1
, . . . , o
n
} em S sem
que haja sobreposicao de atividades, e de fato o nosso algoritmo os
teria adicionado, logo, nao e verdadeiro que m < n e temos que
m = n.
Lucas S. Cavalcante, Instituto de Ciencias Matematicas e de Computacao USP Guloso (Greedy) 15/23
Algoritmo de Kruskal
Problema: Deseja-se montar uma rede com N computadores por
meio de cabos ethernet. Os computadores estao em posicoes xas
e nao podem ser movidos. Esta rede deve ter a condicao de que a
soma dos comprimentos dos cabos seja mnima.
Figura : O grafo da direita e uma possvel solu cao do grafo da esquerda?
Lucas S. Cavalcante, Instituto de Ciencias Matematicas e de Computacao USP Guloso (Greedy) 16/23
Minimum Spanning Tree (MST)
Figura : Qual a MST deste grafo?
Lucas S. Cavalcante, Instituto de Ciencias Matematicas e de Computacao USP Guloso (Greedy) 17/23
Algoritmo de Kruskal
O algoritmo de Kruskal consiste em ordenar as arestas em forma
crescente pelo seu peso (comprimento do cabo), e inserir cada uma
delas no grafo da MST se, e somente se, ao inseri-la nao e gerado
um ciclo.
Lucas S. Cavalcante, Instituto de Ciencias Matematicas e de Computacao USP Guloso (Greedy) 18/23
Solucao pelo Algoritmo de Kruskal
Figura : Solu cao pelo Algoritmo de Kruskal.
Lucas S. Cavalcante, Instituto de Ciencias Matematicas e de Computacao USP Guloso (Greedy) 19/23
Algoritmo de Kruskal: Por que funciona?
Sejam duas parti coes do grafo G como mostrado na gura abaixo,
queremos demonstrar que a aresta de menor peso que une os dois
subgrafos (denotado por e) esta na MST de G.
Figura : Grafo G particionado em dois subgrafos, V e G V.
Lucas S. Cavalcante, Instituto de Ciencias Matematicas e de Computacao USP Guloso (Greedy) 20/23
Algoritmo de Kruskal: Por que funciona?
Vamos assumir que a aresta e nao faz parte de nenhuma MST de
G. Entao na MST de G existe uma outra aresta w conectando
esses subgrafos.
Figura : Grafo G particionado em dois subgrafos, V e G V.
Lucas S. Cavalcante, Instituto de Ciencias Matematicas e de Computacao USP Guloso (Greedy) 21/23
Algoritmo de Kruskal: Por que funciona?
Se esse for o caso, podemos inserir a aresta e e criar um ciclo que
envolve a aresta w. Para desfazer o ciclo, podemos simplesmente
retirar a aresta de maior peso, que nao e e, pois e e a aresta de
menor peso que une os dois subgrafos.
Figura : Grafo G particionado em dois subgrafos, V e G V.
Lucas S. Cavalcante, Instituto de Ciencias Matematicas e de Computacao USP Guloso (Greedy) 22/23
Greed is Good
The point is, ladies and gentleman, that greed, for lack of a better
word, is good. Greed is right, greed works. Greed claries, cuts
through, and captures the essence of the evolutionary spirit.
Greed, in all of its forms; greed for life, for money, for love,
knowledge has marked the upward surge of mankind. And greed,
you mark my words, will not only save Teldar Paper, but that other
malfunctioning corporation called the USA. Thank you very much.
Gordon Gekko, Wall Street (1987).
Lucas S. Cavalcante, Instituto de Ciencias Matematicas e de Computacao USP Guloso (Greedy) 23/23