algoritmo guloso
TRANSCRIPT
![Page 1: Algoritmo Guloso](https://reader033.vdocuments.pub/reader033/viewer/2022052223/559e7c341a28abd8318b47ff/html5/thumbnails/1.jpg)
Luís Ovídio Viana PodestáFabiana Zioti
Vinícius Henrique Marangoni
Algoritmo Guloso
![Page 2: Algoritmo Guloso](https://reader033.vdocuments.pub/reader033/viewer/2022052223/559e7c341a28abd8318b47ff/html5/thumbnails/2.jpg)
Roteiro
→ Introdução
→ Matróide
→ Problema da Mochila
→ Algoritmo da mochila em C++
→ Exercícios
![Page 3: Algoritmo Guloso](https://reader033.vdocuments.pub/reader033/viewer/2022052223/559e7c341a28abd8318b47ff/html5/thumbnails/3.jpg)
Algoritmo
Algoritmo é uma sequência finita de instruções bem definidas que devem ser seguidas para resolver um problema ou executar uma tarefa.
![Page 4: Algoritmo Guloso](https://reader033.vdocuments.pub/reader033/viewer/2022052223/559e7c341a28abd8318b47ff/html5/thumbnails/4.jpg)
Otimização
Otimização em matemática, corresponde ao estudo de problemas onde se busca minimizar ou maximizar uma função.
As técnicas matemáticas de otimização visam encontrar uma "solução ótima" para certo problemas, ou seja, que resulte no melhor desempenho possível do sistema.Normalmente esses problemas são modelos da realidade física, então inicialmente é necessário construir um modelo matemático.
![Page 5: Algoritmo Guloso](https://reader033.vdocuments.pub/reader033/viewer/2022052223/559e7c341a28abd8318b47ff/html5/thumbnails/5.jpg)
Algoritmo Guloso
Uma das estratégias para resolver problemas de otimização são os algoritmos gulosos ou paradigma guloso na concepção de algoritmos.
Ele escolhe a melhor opção naquele momento (melhor opção local), e assim pretende chegar a melhor solução no todo (global).
![Page 6: Algoritmo Guloso](https://reader033.vdocuments.pub/reader033/viewer/2022052223/559e7c341a28abd8318b47ff/html5/thumbnails/6.jpg)
Características
● Algoritmos simples e de fácil implementação.
● Nem sempre conduz à soluções ótimas globais.
● Podem efetuar cálculos repetitivos.
● Um algoritmo guloso é "míope“.
● Nunca reconsideram decisões tomadas.
![Page 7: Algoritmo Guloso](https://reader033.vdocuments.pub/reader033/viewer/2022052223/559e7c341a28abd8318b47ff/html5/thumbnails/7.jpg)
Matróide
Um Matróide é um par ordenado M = (S, I), satisfazendo as seguintes condições:
1. S é um conjunto finito não vazio
2. I é uma família não vazia de subconjuntos de S, chamada de subconjuntos independentes de S, tal que se B I∈ e A B⊆ então A I∈ . Observe que o conjunto vazio deve ser necessariamente um membro de I. Neste caso dizemos que I é hereditário
3. Se A I∈ , B I∈ e |A| < |B|, então existe algum elemento x (B-A)∈ tal que A U {x} I∈ .Dizemos que M satisfez a propriedade de troca.
![Page 8: Algoritmo Guloso](https://reader033.vdocuments.pub/reader033/viewer/2022052223/559e7c341a28abd8318b47ff/html5/thumbnails/8.jpg)
Problema da Mochila
Um ladrão que rouba uma loja encontra n itens, onde cada item vale v reais e pesa p quilos. O ladrão deseja levar a carga mais valiosa possível, mas consegue levar apenas W quilos em sua mochila.
No problema da mochila 0-1, o ladrão deve levar itens inteiros. Já no problema da mochila fracionária, o ladrão pode levar frações de um item.
OBS: A solução gulosa para o problema da mochila 0-1 não garante uma solução ótima.
![Page 9: Algoritmo Guloso](https://reader033.vdocuments.pub/reader033/viewer/2022052223/559e7c341a28abd8318b47ff/html5/thumbnails/9.jpg)
Problema da Mochila 0-1
Item Valor (R$) Peso (Kg) Valor por Kg
1 60 10 6
2 100 20 5
3 120 30 4
Peso suportado pela mochila: 50Kg
![Page 10: Algoritmo Guloso](https://reader033.vdocuments.pub/reader033/viewer/2022052223/559e7c341a28abd8318b47ff/html5/thumbnails/10.jpg)
Problema da Mochila 0-1
Item Valor (R$) Peso (Kg) Valor por Kg
1 60 10 6
2 100 20 5
3 120 30 4
Solução Gulosa
Mochila (50 Kg)
Valor: R$0,00
0 Kg
![Page 11: Algoritmo Guloso](https://reader033.vdocuments.pub/reader033/viewer/2022052223/559e7c341a28abd8318b47ff/html5/thumbnails/11.jpg)
Problema da Mochila 0-1
Item Valor (R$) Peso (Kg) Valor por Kg
1 60 10 6
2 100 20 5
3 120 30 4
Solução Gulosa
Mochila (50 Kg)
Valor: R$0,00
0 Kg
![Page 12: Algoritmo Guloso](https://reader033.vdocuments.pub/reader033/viewer/2022052223/559e7c341a28abd8318b47ff/html5/thumbnails/12.jpg)
Problema da Mochila 0-1
Item Valor (R$) Peso (Kg) Valor por Kg
1 60 10 6
2 100 20 5
3 120 30 4
Solução Gulosa
Mochila (50 Kg)
Valor: R$60,00
Item 1
10 Kg
![Page 13: Algoritmo Guloso](https://reader033.vdocuments.pub/reader033/viewer/2022052223/559e7c341a28abd8318b47ff/html5/thumbnails/13.jpg)
Problema da Mochila 0-1
Item Valor (R$) Peso (Kg) Valor por Kg
1 60 10 6
2 100 20 5
3 120 30 4
Solução Gulosa
Mochila (50 Kg)
Valor: R$60,00
10 Kg
Item 1
![Page 14: Algoritmo Guloso](https://reader033.vdocuments.pub/reader033/viewer/2022052223/559e7c341a28abd8318b47ff/html5/thumbnails/14.jpg)
Problema da Mochila 0-1
Item Valor (R$) Peso (Kg) Valor por Kg
1 60 10 6
2 100 20 5
3 120 30 4
Solução Gulosa
Mochila (50 Kg)
Valor: R$160,00
Item 2
30 Kg
Item 1
![Page 15: Algoritmo Guloso](https://reader033.vdocuments.pub/reader033/viewer/2022052223/559e7c341a28abd8318b47ff/html5/thumbnails/15.jpg)
Problema da Mochila 0-1
Item Valor (R$) Peso (Kg) Valor por Kg
1 60 10 6
2 100 20 5
3 120 30 4
Solução Gulosa
Mochila (50 Kg)
Valor: R$160,00
30 Kg
Item 2Item 1
![Page 16: Algoritmo Guloso](https://reader033.vdocuments.pub/reader033/viewer/2022052223/559e7c341a28abd8318b47ff/html5/thumbnails/16.jpg)
Problema da Mochila 0-1
Item Valor (R$) Peso (Kg) Valor por Kg
1 60 10 6
2 100 20 5
3 120 30 4
Solução Gulosa
Mochila (50 Kg)
Valor: R$160,00
30 Kg Não tem como colocar mais 30 Kg na mochila
Item 2Item 1
![Page 17: Algoritmo Guloso](https://reader033.vdocuments.pub/reader033/viewer/2022052223/559e7c341a28abd8318b47ff/html5/thumbnails/17.jpg)
Problema da Mochila 0-1
Solução Gulosa
Mochila (50 Kg)
Valor: R$160,00
30 Kg
Item 2Item 1
A solução ótima para o problema da mochila 0-1 é encontrada utilizando programação dinâmica
![Page 18: Algoritmo Guloso](https://reader033.vdocuments.pub/reader033/viewer/2022052223/559e7c341a28abd8318b47ff/html5/thumbnails/18.jpg)
Problema da Mochila 0-1
Solução Ótima
Item Valor (R$) Peso (Kg) Valor por Kg
1 60 10 6
2 100 20 5
3 120 30 4
Mochila (50 Kg)
Valor: R$220,00
50 Kg
Item 2 Item 3
![Page 19: Algoritmo Guloso](https://reader033.vdocuments.pub/reader033/viewer/2022052223/559e7c341a28abd8318b47ff/html5/thumbnails/19.jpg)
Problema da Mochila Fracionária
● No problema da mochila fracionária, podemos fracionar um item
● Por exemplo:
Cabe apenas mais 10 Kg na mochila e eu tenho um itemque pesa 100 Kg. Então eu posso fracionar o item de forma a colocar apenas 10% de seu peso na mochila e consequentemente colocar apenas 10% de seu valor
![Page 20: Algoritmo Guloso](https://reader033.vdocuments.pub/reader033/viewer/2022052223/559e7c341a28abd8318b47ff/html5/thumbnails/20.jpg)
Problema da Mochila Fracionária
Item Valor (R$) Peso (Kg) Valor por Kg
1 60 10 6
2 100 20 5
3 120 30 4
Peso suportado pela mochila: 50Kg
![Page 21: Algoritmo Guloso](https://reader033.vdocuments.pub/reader033/viewer/2022052223/559e7c341a28abd8318b47ff/html5/thumbnails/21.jpg)
Problema da Mochila Fracionária
Item Valor (R$) Peso (Kg) Valor por Kg
1 60 10 6
2 100 20 5
3 120 30 4
Solução Gulosa
Mochila (50 Kg)
Valor: R$0,00
0 Kg
![Page 22: Algoritmo Guloso](https://reader033.vdocuments.pub/reader033/viewer/2022052223/559e7c341a28abd8318b47ff/html5/thumbnails/22.jpg)
Problema da Mochila Fracionária
Item Valor (R$) Peso (Kg) Valor por Kg
1 60 10 6
2 100 20 5
3 120 30 4
Solução Gulosa
Mochila (50 Kg)
Valor: R$0,00
0 Kg
![Page 23: Algoritmo Guloso](https://reader033.vdocuments.pub/reader033/viewer/2022052223/559e7c341a28abd8318b47ff/html5/thumbnails/23.jpg)
Problema da Mochila Fracionária
Item Valor (R$) Peso (Kg) Valor por Kg
1 60 10 6
2 100 20 5
3 120 30 4
Solução Gulosa
Mochila (50 Kg)
Valor: R$60,00
Item 1
10 Kg
![Page 24: Algoritmo Guloso](https://reader033.vdocuments.pub/reader033/viewer/2022052223/559e7c341a28abd8318b47ff/html5/thumbnails/24.jpg)
Problema da Mochila Fracionária
Item Valor (R$) Peso (Kg) Valor por Kg
1 60 10 6
2 100 20 5
3 120 30 4
Solução Gulosa
Mochila (50 Kg)
Valor: R$60,00
10 Kg
Item 1
![Page 25: Algoritmo Guloso](https://reader033.vdocuments.pub/reader033/viewer/2022052223/559e7c341a28abd8318b47ff/html5/thumbnails/25.jpg)
Problema da Mochila Fracionária
Item Valor (R$) Peso (Kg) Valor por Kg
1 60 10 6
2 100 20 5
3 120 30 4
Solução Gulosa
Mochila (50 Kg)
Valor: R$160,00
Item 2
30 Kg
Item 1
![Page 26: Algoritmo Guloso](https://reader033.vdocuments.pub/reader033/viewer/2022052223/559e7c341a28abd8318b47ff/html5/thumbnails/26.jpg)
Problema da Mochila Fracionária
Item Valor (R$) Peso (Kg) Valor por Kg
1 60 10 6
2 100 20 5
3 120 30 4
Solução Gulosa
Mochila (50 Kg)
Valor: R$160,00
30 Kg
Item 2Item 1
![Page 27: Algoritmo Guloso](https://reader033.vdocuments.pub/reader033/viewer/2022052223/559e7c341a28abd8318b47ff/html5/thumbnails/27.jpg)
Problema da Mochila Fracionária
Item Valor (R$) Peso (Kg) Valor por Kg
1 60 10 6
2 100 20 5
3 120 30 4
Solução Gulosa
Mochila (50 Kg)
Valor: R$160,00
30 Kg Cabe mais 20 Kg, ou seja2/3 do Item 3
Item 2Item 1
![Page 28: Algoritmo Guloso](https://reader033.vdocuments.pub/reader033/viewer/2022052223/559e7c341a28abd8318b47ff/html5/thumbnails/28.jpg)
Problema da Mochila Fracionária
Item Valor (R$) Peso (Kg) Valor por Kg
1 60 10 6
2 100 20 5
3 120 30 4
Solução Gulosa
Mochila (50 Kg)
Valor: R$160,00
30 Kg 2/3 * 30 = 20Kg2/3 * 120 = R$80,00
Item 2Item 1
![Page 29: Algoritmo Guloso](https://reader033.vdocuments.pub/reader033/viewer/2022052223/559e7c341a28abd8318b47ff/html5/thumbnails/29.jpg)
Problema da Mochila Fracionária
Item Valor (R$) Peso (Kg) Valor por Kg
1 60 10 6
2 100 20 5
3 120 30 4
Solução Gulosa
Mochila (50 Kg)
Valor: R$240,00
50 Kg
Item 2Item 1 2/3 do Item 3
![Page 30: Algoritmo Guloso](https://reader033.vdocuments.pub/reader033/viewer/2022052223/559e7c341a28abd8318b47ff/html5/thumbnails/30.jpg)
Problema da Mochila Fracionária
Solução Gulosa → Ótima
Mochila (50 Kg)
Valor: R$240,00
50 Kg
Item 2Item 1 2/3 do Item 3
![Page 31: Algoritmo Guloso](https://reader033.vdocuments.pub/reader033/viewer/2022052223/559e7c341a28abd8318b47ff/html5/thumbnails/31.jpg)
Algoritmo
Mochila.cpp
![Page 32: Algoritmo Guloso](https://reader033.vdocuments.pub/reader033/viewer/2022052223/559e7c341a28abd8318b47ff/html5/thumbnails/32.jpg)
Gula vs Programação Dinâmica
Às vezes é difícil distinguir um algoritmo guloso de um algoritmo de programação dinâmica. Algumas características que podem ajudar são:
Guloso Programação Dinâmica
Alternativa mais promissora Explora todas as alternativas
É muito rápido Um tanto lento
Nunca se arrepende Pode se arrepender
Não tem garantia de solução ótima Tem garantia de solução ótima
![Page 33: Algoritmo Guloso](https://reader033.vdocuments.pub/reader033/viewer/2022052223/559e7c341a28abd8318b47ff/html5/thumbnails/33.jpg)
Outros Algoritmos Gulosos
● Código de Huffman
● Algoritmo de Kruskal (Árvore Geradora de Peso Mínimo - Grafos)
● Dijkstra (Caminho Mínimo - Grafos)