SlideShare ist ein Scribd-Unternehmen logo
1 von 33
Downloaden Sie, um offline zu lesen
Luís Ovídio Viana Podestá
Fabiana Zioti
Vinícius Henrique Marangoni
Algoritmo Guloso
Roteiro
→ Introdução
→ Matróide
→ Problema da Mochila
→ Algoritmo da mochila em C++
→ Exercícios
Algoritmo
Algoritmo é uma sequência finita de
instruções bem definidas que devem ser
seguidas para resolver um problema ou
executar uma tarefa.
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.
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).
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.
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.
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.
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
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
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
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
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
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
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
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
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
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
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 item
que 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
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
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
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
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
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
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
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
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 seja
2/3 do Item 3
Item 2Item 1
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 = 20Kg
2/3 * 120 = R$80,00
Item 2Item 1
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
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
Algoritmo
Mochila.cpp
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
Outros Algoritmos Gulosos
● Código de Huffman
● Algoritmo de Kruskal
(Árvore Geradora de Peso Mínimo - Grafos)
● Dijkstra (Caminho Mínimo - Grafos)

Weitere ähnliche Inhalte

Was ist angesagt?

Branch and bound technique
Branch and bound techniqueBranch and bound technique
Branch and bound techniqueishmecse13
 
Bellman Ford's Algorithm
Bellman Ford's AlgorithmBellman Ford's Algorithm
Bellman Ford's AlgorithmTanmay Baranwal
 
Apresentacao mochila - parte 1
Apresentacao mochila - parte 1Apresentacao mochila - parte 1
Apresentacao mochila - parte 1Bianca Dantas
 
Análise de Algoritmos - Programação Dinâmica
Análise de Algoritmos - Programação DinâmicaAnálise de Algoritmos - Programação Dinâmica
Análise de Algoritmos - Programação DinâmicaDelacyr Ferreira
 
Analise de Sensibilidade
Analise de SensibilidadeAnalise de Sensibilidade
Analise de SensibilidadeVivi Basilio
 
Lecture 14 Heuristic Search-A star algorithm
Lecture 14 Heuristic Search-A star algorithmLecture 14 Heuristic Search-A star algorithm
Lecture 14 Heuristic Search-A star algorithmHema Kashyap
 
Distribuição Gama de Probabilidade - Resolução de Questão
Distribuição Gama de Probabilidade - Resolução de QuestãoDistribuição Gama de Probabilidade - Resolução de Questão
Distribuição Gama de Probabilidade - Resolução de QuestãoAnselmo Alves de Sousa
 
All pairs shortest path algorithm
All pairs shortest path algorithmAll pairs shortest path algorithm
All pairs shortest path algorithmSrikrishnan Suresh
 
R-NSGAII
R-NSGAIIR-NSGAII
R-NSGAIIpaskorn
 
Graphs in Data Structure
 Graphs in Data Structure Graphs in Data Structure
Graphs in Data Structurehafsa komal
 
Busca tabu
Busca tabuBusca tabu
Busca tabuiaudesc
 
Decision Trees for Classification: A Machine Learning Algorithm
Decision Trees for Classification: A Machine Learning AlgorithmDecision Trees for Classification: A Machine Learning Algorithm
Decision Trees for Classification: A Machine Learning AlgorithmPalin analytics
 

Was ist angesagt? (20)

Branch and bound technique
Branch and bound techniqueBranch and bound technique
Branch and bound technique
 
Quicksort
QuicksortQuicksort
Quicksort
 
Bellman Ford's Algorithm
Bellman Ford's AlgorithmBellman Ford's Algorithm
Bellman Ford's Algorithm
 
AI Lecture 4 (informed search and exploration)
AI Lecture 4 (informed search and exploration)AI Lecture 4 (informed search and exploration)
AI Lecture 4 (informed search and exploration)
 
Apresentacao mochila - parte 1
Apresentacao mochila - parte 1Apresentacao mochila - parte 1
Apresentacao mochila - parte 1
 
Análise de Algoritmos - Programação Dinâmica
Análise de Algoritmos - Programação DinâmicaAnálise de Algoritmos - Programação Dinâmica
Análise de Algoritmos - Programação Dinâmica
 
Chapter 22 Finite Field
Chapter 22 Finite FieldChapter 22 Finite Field
Chapter 22 Finite Field
 
Analise de Sensibilidade
Analise de SensibilidadeAnalise de Sensibilidade
Analise de Sensibilidade
 
Lecture 14 Heuristic Search-A star algorithm
Lecture 14 Heuristic Search-A star algorithmLecture 14 Heuristic Search-A star algorithm
Lecture 14 Heuristic Search-A star algorithm
 
Distribuição Gama de Probabilidade - Resolução de Questão
Distribuição Gama de Probabilidade - Resolução de QuestãoDistribuição Gama de Probabilidade - Resolução de Questão
Distribuição Gama de Probabilidade - Resolução de Questão
 
All pairs shortest path algorithm
All pairs shortest path algorithmAll pairs shortest path algorithm
All pairs shortest path algorithm
 
Compiler unit 2&3
Compiler unit 2&3Compiler unit 2&3
Compiler unit 2&3
 
08 Hash Tables
08 Hash Tables08 Hash Tables
08 Hash Tables
 
R-NSGAII
R-NSGAIIR-NSGAII
R-NSGAII
 
Graphs in Data Structure
 Graphs in Data Structure Graphs in Data Structure
Graphs in Data Structure
 
AlphaGo
AlphaGoAlphaGo
AlphaGo
 
Busca tabu
Busca tabuBusca tabu
Busca tabu
 
Decision Trees for Classification: A Machine Learning Algorithm
Decision Trees for Classification: A Machine Learning AlgorithmDecision Trees for Classification: A Machine Learning Algorithm
Decision Trees for Classification: A Machine Learning Algorithm
 
Minimum spanning tree
Minimum spanning treeMinimum spanning tree
Minimum spanning tree
 
NP Complete Problems in Graph Theory
NP Complete Problems in Graph TheoryNP Complete Problems in Graph Theory
NP Complete Problems in Graph Theory
 

Andere mochten auch

Análise de Algoritmos - Método Guloso
Análise de Algoritmos - Método GulosoAnálise de Algoritmos - Método Guloso
Análise de Algoritmos - Método GulosoDelacyr Ferreira
 
Caminho Mínimo em Grafos - Algoritmo de Bellman-Ford
Caminho Mínimo em Grafos - Algoritmo de Bellman-FordCaminho Mínimo em Grafos - Algoritmo de Bellman-Ford
Caminho Mínimo em Grafos - Algoritmo de Bellman-FordGabriel Albuquerque
 
Caminhos Mínimos - Algoritmo de Dijkstra
Caminhos Mínimos - Algoritmo de DijkstraCaminhos Mínimos - Algoritmo de Dijkstra
Caminhos Mínimos - Algoritmo de DijkstraMarcos Castro
 
Introdução à Teoria dos Grafos
Introdução à Teoria dos GrafosIntrodução à Teoria dos Grafos
Introdução à Teoria dos GrafosBianca Dantas
 
Algoritmo de Dijkstra
Algoritmo de DijkstraAlgoritmo de Dijkstra
Algoritmo de DijkstraPedro Miranda
 
PROBLEMA DA MOCHILA VALIOSA COM VALOR MINIMO DE UTILIDADE
PROBLEMA DA MOCHILA VALIOSA COM VALOR MINIMO DE UTILIDADEPROBLEMA DA MOCHILA VALIOSA COM VALOR MINIMO DE UTILIDADE
PROBLEMA DA MOCHILA VALIOSA COM VALOR MINIMO DE UTILIDADEJoao Gonçalves
 
Filobr02 marciane 23 mp
Filobr02 marciane 23 mpFilobr02 marciane 23 mp
Filobr02 marciane 23 mpalemisturini
 
Algoritmo clique maximo - Analise de Algoritmos
Algoritmo clique maximo  - Analise de AlgoritmosAlgoritmo clique maximo  - Analise de Algoritmos
Algoritmo clique maximo - Analise de AlgoritmosAdilmar Dantas
 
Matemática computacional aula 001
Matemática computacional   aula 001Matemática computacional   aula 001
Matemática computacional aula 001Flávio Freitas
 
Caminhos Mínimos: Dijkstra e Floyd-Warshall
Caminhos Mínimos: Dijkstra e Floyd-WarshallCaminhos Mínimos: Dijkstra e Floyd-Warshall
Caminhos Mínimos: Dijkstra e Floyd-WarshallJohnnatan Messias
 
Otimização
OtimizaçãoOtimização
Otimizaçãoler9blog
 
Algoritmo de Floyd-Warshall
Algoritmo de Floyd-WarshallAlgoritmo de Floyd-Warshall
Algoritmo de Floyd-WarshallJoao Silva
 
Matemática Computacional
Matemática ComputacionalMatemática Computacional
Matemática ComputacionalRicardo Terra
 
Algoritmo dijkstra
Algoritmo dijkstraAlgoritmo dijkstra
Algoritmo dijkstraRey Salcedo
 
Maratona de Programação
Maratona de ProgramaçãoMaratona de Programação
Maratona de ProgramaçãoMarcos Castro
 

Andere mochten auch (20)

Análise de Algoritmos - Método Guloso
Análise de Algoritmos - Método GulosoAnálise de Algoritmos - Método Guloso
Análise de Algoritmos - Método Guloso
 
Caminho Mínimo em Grafos - Algoritmo de Bellman-Ford
Caminho Mínimo em Grafos - Algoritmo de Bellman-FordCaminho Mínimo em Grafos - Algoritmo de Bellman-Ford
Caminho Mínimo em Grafos - Algoritmo de Bellman-Ford
 
Caminhos Mínimos - Algoritmo de Dijkstra
Caminhos Mínimos - Algoritmo de DijkstraCaminhos Mínimos - Algoritmo de Dijkstra
Caminhos Mínimos - Algoritmo de Dijkstra
 
Introdução à Teoria dos Grafos
Introdução à Teoria dos GrafosIntrodução à Teoria dos Grafos
Introdução à Teoria dos Grafos
 
Algoritmo de Dijkstra
Algoritmo de DijkstraAlgoritmo de Dijkstra
Algoritmo de Dijkstra
 
PROBLEMA DA MOCHILA VALIOSA COM VALOR MINIMO DE UTILIDADE
PROBLEMA DA MOCHILA VALIOSA COM VALOR MINIMO DE UTILIDADEPROBLEMA DA MOCHILA VALIOSA COM VALOR MINIMO DE UTILIDADE
PROBLEMA DA MOCHILA VALIOSA COM VALOR MINIMO DE UTILIDADE
 
Filobr02 marciane 23 mp
Filobr02 marciane 23 mpFilobr02 marciane 23 mp
Filobr02 marciane 23 mp
 
Otimização convexa e cvx
Otimização convexa e cvxOtimização convexa e cvx
Otimização convexa e cvx
 
Algoritmo clique maximo - Analise de Algoritmos
Algoritmo clique maximo  - Analise de AlgoritmosAlgoritmo clique maximo  - Analise de Algoritmos
Algoritmo clique maximo - Analise de Algoritmos
 
Matemática computacional aula 001
Matemática computacional   aula 001Matemática computacional   aula 001
Matemática computacional aula 001
 
Backtracking
BacktrackingBacktracking
Backtracking
 
Caminhos Mínimos: Dijkstra e Floyd-Warshall
Caminhos Mínimos: Dijkstra e Floyd-WarshallCaminhos Mínimos: Dijkstra e Floyd-Warshall
Caminhos Mínimos: Dijkstra e Floyd-Warshall
 
Otimização
OtimizaçãoOtimização
Otimização
 
Algoritmo de kruskal
Algoritmo de kruskalAlgoritmo de kruskal
Algoritmo de kruskal
 
Otimização
OtimizaçãoOtimização
Otimização
 
Algoritmo de Floyd-Warshall
Algoritmo de Floyd-WarshallAlgoritmo de Floyd-Warshall
Algoritmo de Floyd-Warshall
 
Matemática Computacional
Matemática ComputacionalMatemática Computacional
Matemática Computacional
 
Algoritmo de Dijkstra
Algoritmo de DijkstraAlgoritmo de Dijkstra
Algoritmo de Dijkstra
 
Algoritmo dijkstra
Algoritmo dijkstraAlgoritmo dijkstra
Algoritmo dijkstra
 
Maratona de Programação
Maratona de ProgramaçãoMaratona de Programação
Maratona de Programação
 

Algoritmo Guloso

  • 1. Luís Ovídio Viana Podestá Fabiana Zioti Vinícius Henrique Marangoni Algoritmo Guloso
  • 2. Roteiro → Introdução → Matróide → Problema da Mochila → Algoritmo da mochila em C++ → Exercícios
  • 3. Algoritmo Algoritmo é uma sequência finita de instruções bem definidas que devem ser seguidas para resolver um problema ou executar uma tarefa.
  • 4. 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.
  • 5. 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).
  • 6. 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.
  • 7. 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.
  • 8. 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.
  • 9. 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
  • 10. 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
  • 11. 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
  • 12. 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
  • 13. 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
  • 14. 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
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. 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
  • 19. 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 item que 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
  • 20. 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
  • 21. 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
  • 22. 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
  • 23. 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
  • 24. 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
  • 25. 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
  • 26. 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
  • 27. 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 seja 2/3 do Item 3 Item 2Item 1
  • 28. 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 = 20Kg 2/3 * 120 = R$80,00 Item 2Item 1
  • 29. 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
  • 30. 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
  • 32. 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
  • 33. Outros Algoritmos Gulosos ● Código de Huffman ● Algoritmo de Kruskal (Árvore Geradora de Peso Mínimo - Grafos) ● Dijkstra (Caminho Mínimo - Grafos)