54
Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 5º. Período Anderson Almeida Ferreira Adaptado do material de Andréa Iabrudi Tavares BCC241/2012-2 1

Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Embed Size (px)

Citation preview

Page 1: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Projeto e Análise de Algoritmos

Aula 8:

Algoritmos Gulosos (DPV 5; CLRS 4)

DECOM/UFOP

2013/1 – 5º. Período

Anderson Almeida Ferreira

Adaptado do material de Andréa Iabrudi Tavares

BCC241/2012-2

1

Page 2: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Comparação dos Problemas

Seja um grafo G=(V,E) e uma função de custo w, pede-se

• Caixeiro Viajante

Ciclo que passe uma única vez por todos os vértices e tenha peso mínimo.

• Árvore Geradora Mínima

Árvore que passe por todos os vértices e tenha peso mínimo.

3 BCC241/2011-2

Page 3: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Algoritmos Gulosos

• Algoritmos míopes

▫ Escolha “óbvia” a cada passo

▫ Escolhe e depois resolve subproblema.

▫ Solução construtiva.

• Quando é ótimo

▫ Melhor decisão local é melhor decisão global.

▫ Mostrar que a solução é ótima normalmente ajuda a formular o problema.

▫ Sub-estrutura ótima (princípio da otimalidade)

5 BCC241/2011-2

Page 4: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Árvores Geradoras Mínimas (AGM)

• Conectar computadores por rede, cada link com um custo de manutenção

6 BCC241/2011-2

Formulação

Propriedades

Grafo G=(V,E,w) conexo n=|V|

Solução é uma árvore (n-1 arestas)

Dado um grafo G=(V,E,w), encontrar árvore A=(V,EA ,w) tal

que w(EA) é mínimo. EEA

Page 5: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Guloso AGM: Algoritmo de Kruskal

• Adicione sempre a aresta de menor peso que não forma ciclo (1956).

Desempates: ordem lexicográfica

Page 6: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Guloso AGM: Algoritmo de Kruskal

• Adicione sempre a aresta de menor peso que não forma ciclo.

Está correto, ou seja, é ótimo?????

Page 7: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Kruskal está correto: cortes

• Partição (S,V-S) ou

de forma equivalente conjunto de arestas.

9 BCC241/2011-2

Page 8: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Kruskal está correto Seja X um subconjunto das arestas EA de uma AGM.

Seja qualquer subconjunto S de vértices tal que X não cruze S e V-S e seja e a aresta mais leve do corte. Então X U {e} faz parte de alguma AGM.

10 BCC241/2011-2

Page 9: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

11 BCC241/2011-2

Page 10: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Kruskal está correto • Prova

Seja X um subconjunto das arestas EA de uma AGM. Seja qualquer subconjunto S de vértices tal que X não cruze S e V-S e seja e a aresta mais leve do corte. Então X U {e} faz parte de alguma AGM.

12 BCC241/2011-2

Page 11: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Guloso AGM: Algoritmo de Kruskal

13 BCC241/2011-2

ciclo sem },{ Xvu

Algoritmo está correto como visto anteriormente.

Depende de ordenação de arestas (m log m ou m – linear).

Faz O(m) vezes a operação de verificação de ciclo.

Page 12: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Guloso AGM: Algoritmo de Kruskal

Complexidade depende de qual operação? De saber se há ciclo...

14 BCC241/2011-2

ciclo sem },{ Xvu

Page 13: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Conjuntos Disjuntos

Mesmo componente em log(n)

15 BCC241/2011-2

Page 14: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Guloso AGM: Algoritmo de Kruskal

16 BCC241/2011-2

Page 15: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Algoritmo para componentes disjuntos

Propriedade 1: xx rankrank

Propriedade 2: rank da raiz é k, pelo

menos 2k

17 BCC241/2011-2

Page 16: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

8 7

A

H

B C

I

G F

D

E

4 9

10

14

8

11

2

7 6

1

4

2

18 BCC241/2011-2

Page 17: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

A

H

B C

I

G F

D

E

4

8 7

9

10

14

8

11

2

7 6

1

4

2

19 BCC241/2011-2

Page 18: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Guloso AGM: Algoritmo de Kruskal

Complexidade?

20 BCC241/2011-2

Page 19: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Guloso AGM: Algoritmo de Kruskal

Complexidade?

21 BCC241/2011-2

nnnTnn

nmnT

log)(log

log)(

2

Page 20: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Guloso AGM: Algoritmo de Prim

• Cresça a árvore, colocando sempre a menor aresta que liga X aos vértices que faltam

(1930 Jarnik, 1957 Prim, 1959 Dijkstra)

22 BCC241/2011-2

Page 21: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Guloso AGM: Algoritmo de Prim

23 BCC241/2011-2

Page 22: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Guloso Menor caminho: Dijkstra

24 BCC241/2011-2

Page 23: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

25 BCC241/2011-2

Page 24: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

26 BCC241/2011-2

Atenção: apesar de ser

linear nesse exemplo,

representa qualquer

árvore.

prev: permite

recuperar árvore

Page 25: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Outro exemplo:

• http://en.wikipedia.org/wiki/Prim%27s_algorithm

• http://en.wikipedia.org/wiki/Kruskal%27s_algorithm

27 BCC241/2011-2

Page 26: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

A

H

B C

I

G F

D

E

4

8 7

9

10

14

8

11

2

7 6

1

4

2

31 BCC241/2011-2

Page 27: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

A

H

B C

I

G F

D

E

4

8 7

9

10

14

8

11

2

7 6

1

4

2

A

H

B C

I

G F

D

E

4

8 7

9

10

14

8

11

2

7 6

1

4

2

32 BCC241/2011-2

Árvores podem

ser diferentes,

mas têm o

mesmo peso!

Page 28: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Código de Huffman

33 BCC241/2011-2

Page 29: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Código de Huffman

34 BCC241/2011-2

Page 30: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Código de Huffman – Fazendo as

árvores

35 BCC241/2011-2

Page 31: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Código de Huffman

• 1952, David Huffman

• Compressão (MP3, por exemplo)

• Propriedades

▫ Número variável de bits

▫ Não-ambiguidade (árvore binária completa)

36 BCC241/2011-2

Page 32: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Algoritmo Guloso: Huffman Ótimo

37 BCC241/2011-2

Page 33: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Huffman: Está correto?

38 BCC241/2011-2

Por contradição, se

maior frequência na

folha mais baixa, troca.

Page 34: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Huffman: Complexidade

39 BCC241/2011-2

Complexidade: O(n log n)

Page 35: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

BCC241/2011-2

40

Page 36: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

BCC241/2011-2

41

Huffman: Exercício

Suponha que os símbolos a, b, c, d, e ocorram com frequências ½, ¼, 1/8, 1/16, 1/16, respectivamente.

a) Qual a codificação de Huffman do alfabeto?

b) Se esta codificação é aplicada a um arquivo consistindo em 1.000.000 caracteres com as dadas frequências, qual é o tamanho do arquivo codificado em bits?

Page 37: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Um problema de lógica

A mulher do coronel foi assassinada e existem três suspeitos: o coronel, o açougueiro e o amante. Definir quem é o assassino, dado que:

o assassinato aconteceu na cozinha

o assassinato aconteceu às 8 da noite

o coronel estava dormindo às 8 da noite

43 BCC241/2011-2

Page 38: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Problema de satisfabilidade

A mulher do coronel foi assassinada e existem três suspeitos: o coronel, o açougueiro e o amante. Definir quem é o assassino, dado que:

o assassinato aconteceu na cozinha

o assassinato aconteceu às 8 da noite

o coronel estava dormindo às 8 da noite

44 BCC241/2011-2

U – o coronel é inocente

X – o assassinato aconteceu na cozinha

W – o assassinato aconteceu às 8 da noite

Y – o açougueiro é inocente

Z – o coronel estava dormindo às 8 da noite

Page 39: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Cláusulas de Horn

• 1951, Alfred Horn • É possível deduzir um fato a partir de um

conjunto de implicações? ▫ Fatos: variáveis lógicas ▫ Implicações : com antecedente de conjunto de

fatos (no máximo um negado) e um consequente unitário

• Conjunção de cláusulas de disjunção com no máximo uma variável não-negada ▫ Subconjunto de problemas de satisfabilidade

45 BCC241/2011-2

Page 40: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Cláusulas de Horn

BCC241/2011-2

46

A mulher do coronel foi assassinada e existem três suspeitos: o coronel, o açougueiro e o amante. Definir quem é o assassino, dado que:

o assassinato aconteceu na cozinha

o assassinato aconteceu às 8 da noite

o coronel estava dormindo às 8 da noite

U – o coronel é inocente

X – o assassinato aconteceu na cozinha

W – o assassinato aconteceu às 8 da noite

Y – o açougueiro é inocente

Z – o coronel estava dormindo às 8 da noite

Page 41: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Cláusulas de Horn

BCC241/2011-2

47

Page 42: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Horn – Algoritmo Guloso Exato

49 BCC241/2011-2

Implementação em tempo linear: Norvig and Russel,

Lógica Proposicional Forward Chaining

Page 43: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Um problema de seleção de atividades

• Seja S={a1, a2, ..., an} um conjunto de atividades

propostas que desejam usar um recurso, que só pode

ser usado por uma atividade de cada vez.

• Cada atividade ai tem um tempo de inicio si e um

tempo de termino fi, onde 0si<fi<.

• As atividades ai e aj são compatíveis se si fj ou sj

fi.

• Problema: Selecionar um subconjunto de tamanho

máximo de atividades mutuamente compatíveis.

Page 44: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Exemplo

i 1 2 3 4 5 6 7 8 9 10 11

si 1 3 0 5 3 5 6 8 8 2 12

fi 4 5 6 7 8 9 10 11 12 13 14

Page 45: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Subestrutura ótima

• Seja Sij={ak S | fi sk < fk sj}, ou seja, o subconjunto de atividades que podem começar após ai terminar e que terminam antes da atividade aj começar.

• Acrescentamos duas atividades fictícias a0 e an+1, onde f0=0 e sn+1=.

• Logo, S = S0 n+1

• Se uma solução para sij inclui ak, então ak gera dois subproblemas sik e skj sij.

• Logo, se há uma solução ótima para sij que inclui ak, as soluções para sik e skj usadas dentro da solução ótima de sij também devem ser ótimas.

Page 46: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Teorema

• Uma solução ótima para Sij seria Aij = Aik {ak} Akj

• A0 n+1 seria a solução para o problema inteiro. • Teorema: Considere qualquer subproblema não

vazio Sij e seja am a atividade em Sij com término mais antigo. Então, 1. A atividade am é usada em algum subconjunto de

tamanho máximo de atividades mutuamente compatíveis de Sij.

2. O subproblema Sim é vazio, de forma que a escolha de am deixa o subproblema Smj como único que pode ser não vazio.

Page 47: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Teorema

2. Suponha que exista algum ak ∈ Sim. Então fi ≤ sk < fk ≤ sm < fm ⇒ fk < fm.

Então ak ∈ Si j e ele tem fk < fm . Contradição.

1. Seja Ai j um subconjunto de tamanho máximo de atividades mutuamente compatíveis em Si j .

Ordene as atividade em Ai j em ordem crescente de tempo de término.

Seja ak a primeira atividade em Ai j .

Se ak = am, pronto.

Caso contrário, construa A’i j = Ai j − {ak } ∪ {am} .

Page 48: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Algoritmo

• Recursive-Active-Selector(s,f,i,j)

m i + 1

while m<j and sm <fi

m m + 1

if m < j

Return {am} Recursive-Active-Selector(s,f,m,j)

return

Page 49: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

• Iteractive-Active-Selector(s,f)

▫ n = comprimento(s)

▫ A = {1}

▫ i = 1

▫ for m=2..n:

If sm fi

A = A {am}

i = m

Page 50: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Exemplo

i 1 2 3 4 5 6 7 8 9 10 11

si 1 3 0 5 3 5 6 8 8 2 12

fi 4 5 6 7 8 9 10 11 12 13 14

Page 51: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Estratégia gulosa

• Moldar o problema de otimização como um problema no qual fazemos uma escolha e ficamos com um único subproblema para resolver.

• Provar que sempre existe uma solução ótima para o problema original que contém a escolha gulosa.

• Demonstrar que, tendo feita escolha gulosa, o que resta é um subproblema com a propriedade de que, se combinarmos uma solução ótima para o subproblema com a escolha gulosa que fizemos, chegamos a uma solução ótima para o problema original.

Page 52: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Problema da mochila

Knapsack problem

• Há n itens, onde o i-ésimo item vale vi e pesa wi quilos.

• Deve-se colocar uma carga tão valiosa quanto possível em uma mochila, mas ela comporta no máximo w quilos.

Page 53: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Problema da mochila

• Problema da mochila 0-1

▫ Subestrutura ótima: Para a carga mais valiosa que pese no máximo w quilos, se removermos o item j, a carga restante deve ser a mais valiosa que pese w – wj.

• Problema da mochila fracionada

▫ Se removermos um peso w de um item j da carga ótima, a carga restante deve ser mais valiosa que pese no máximo W-w que o ladrão pode levar dos n-1 itens originais, mais wj-w do item j.

Page 54: Projeto e Análise de Algoritmos - DECOM-UFOP · Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 – 5º. ... Guloso AGM: Algoritmo de

Problema da mochila

• Fracionada ▫ Estratégia gulosa Divida vi/wi para cada item Pega o máximo do item de maior valor por quilo Se o suprimento deste item esgotar e puder levar

mais, pega o máximo possível do próximo item com maior valor por quilo.

• Exemplo: ▫ Mochila – 50 quilos ▫ Item 1 – 10 quilos, $60 ▫ Item 2 – 20 quilos, $100 ▫ Item 3 – 30 quilos, $120