SlideShare une entreprise Scribd logo
1  sur  33
Télécharger pour lire hors ligne
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)

Contenu connexe

Tendances

Topicos de econometria de séries temporais 2020_1
Topicos de econometria de séries temporais 2020_1Topicos de econometria de séries temporais 2020_1
Topicos de econometria de séries temporais 2020_1Adriano Figueiredo
 
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
 
Equações sistemas de equações e inequações
Equações  sistemas de equações e inequaçõesEquações  sistemas de equações e inequações
Equações sistemas de equações e inequaçõesAntonio Magno Ferreira
 
Analise de Sensibilidade
Analise de SensibilidadeAnalise de Sensibilidade
Analise de SensibilidadeVivi Basilio
 
Equação do 1º e 2º grau
Equação do 1º e 2º grauEquação do 1º e 2º grau
Equação do 1º e 2º grauZaqueu Oliveira
 
Classes de complexidades de problemas
Classes de complexidades de problemasClasses de complexidades de problemas
Classes de complexidades de problemasDavid Achahui Perez
 
Equações do 2º grau - resumo e exercícios resolvidos
Equações do 2º grau - resumo e exercícios resolvidosEquações do 2º grau - resumo e exercícios resolvidos
Equações do 2º grau - resumo e exercícios resolvidospatriciacruz80
 
3 matrizes escalonadas e as inversas
3 matrizes escalonadas e as inversas3 matrizes escalonadas e as inversas
3 matrizes escalonadas e as inversasMagdaPatricio1
 
Equação de 1º grau
Equação de 1º grauEquação de 1º grau
Equação de 1º grauleilamaluf
 
Equações Do 2º Grau - Profº P.Cesar
Equações Do 2º Grau - Profº P.CesarEquações Do 2º Grau - Profº P.Cesar
Equações Do 2º Grau - Profº P.Cesarpaulocante
 
Resolver problemas conducentes à equação quadrática
Resolver problemas conducentes à equação quadráticaResolver problemas conducentes à equação quadrática
Resolver problemas conducentes à equação quadráticaPaulo Mutolo
 
Resolução de problemas conducentes à equações inequações quadráticas
Resolução de problemas conducentes à equações inequações  quadráticasResolução de problemas conducentes à equações inequações  quadráticas
Resolução de problemas conducentes à equações inequações quadráticasPaulo Mutolo
 
Minicurso de HTML básico - Atualizado para HTML5
Minicurso de HTML básico - Atualizado para HTML5Minicurso de HTML básico - Atualizado para HTML5
Minicurso de HTML básico - Atualizado para HTML5Jose Augusto Cintra
 
Análise de Algoritmos - Solução de Recorrências
Análise de Algoritmos - Solução de RecorrênciasAnálise de Algoritmos - Solução de Recorrências
Análise de Algoritmos - Solução de RecorrênciasDelacyr Ferreira
 
Elementos de Matemática Básica - Equações e Inequações
Elementos de Matemática Básica - Equações e InequaçõesElementos de Matemática Básica - Equações e Inequações
Elementos de Matemática Básica - Equações e InequaçõesMilton Henrique do Couto Neto
 
Quickly Testing Qt Desktop Applications
Quickly Testing Qt Desktop ApplicationsQuickly Testing Qt Desktop Applications
Quickly Testing Qt Desktop ApplicationsClare Macrae
 
Aulas 11-guloso Algoritmos
Aulas 11-guloso AlgoritmosAulas 11-guloso Algoritmos
Aulas 11-guloso AlgoritmosKevin Takano
 

Tendances (20)

Topicos de econometria de séries temporais 2020_1
Topicos de econometria de séries temporais 2020_1Topicos de econometria de séries temporais 2020_1
Topicos de econometria de séries temporais 2020_1
 
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
 
Equações sistemas de equações e inequações
Equações  sistemas de equações e inequaçõesEquações  sistemas de equações e inequações
Equações sistemas de equações e inequações
 
Analise de Sensibilidade
Analise de SensibilidadeAnalise de Sensibilidade
Analise de Sensibilidade
 
Introdução à JQuery
Introdução à JQueryIntrodução à JQuery
Introdução à JQuery
 
Equação do 1º e 2º grau
Equação do 1º e 2º grauEquação do 1º e 2º grau
Equação do 1º e 2º grau
 
Classes de complexidades de problemas
Classes de complexidades de problemasClasses de complexidades de problemas
Classes de complexidades de problemas
 
Equações do 2º grau - resumo e exercícios resolvidos
Equações do 2º grau - resumo e exercícios resolvidosEquações do 2º grau - resumo e exercícios resolvidos
Equações do 2º grau - resumo e exercícios resolvidos
 
3 matrizes escalonadas e as inversas
3 matrizes escalonadas e as inversas3 matrizes escalonadas e as inversas
3 matrizes escalonadas e as inversas
 
Equação de 1º grau
Equação de 1º grauEquação de 1º grau
Equação de 1º grau
 
Conceitos e simulação de cadeias de markov
Conceitos e simulação de cadeias de markovConceitos e simulação de cadeias de markov
Conceitos e simulação de cadeias de markov
 
Equações Do 2º Grau - Profº P.Cesar
Equações Do 2º Grau - Profº P.CesarEquações Do 2º Grau - Profº P.Cesar
Equações Do 2º Grau - Profº P.Cesar
 
Resolver problemas conducentes à equação quadrática
Resolver problemas conducentes à equação quadráticaResolver problemas conducentes à equação quadrática
Resolver problemas conducentes à equação quadrática
 
Resolução de problemas conducentes à equações inequações quadráticas
Resolução de problemas conducentes à equações inequações  quadráticasResolução de problemas conducentes à equações inequações  quadráticas
Resolução de problemas conducentes à equações inequações quadráticas
 
Minicurso de HTML básico - Atualizado para HTML5
Minicurso de HTML básico - Atualizado para HTML5Minicurso de HTML básico - Atualizado para HTML5
Minicurso de HTML básico - Atualizado para HTML5
 
Análise de Algoritmos - Solução de Recorrências
Análise de Algoritmos - Solução de RecorrênciasAnálise de Algoritmos - Solução de Recorrências
Análise de Algoritmos - Solução de Recorrências
 
Elementos de Matemática Básica - Equações e Inequações
Elementos de Matemática Básica - Equações e InequaçõesElementos de Matemática Básica - Equações e Inequações
Elementos de Matemática Básica - Equações e Inequações
 
Quickly Testing Qt Desktop Applications
Quickly Testing Qt Desktop ApplicationsQuickly Testing Qt Desktop Applications
Quickly Testing Qt Desktop Applications
 
Aulas 11-guloso Algoritmos
Aulas 11-guloso AlgoritmosAulas 11-guloso Algoritmos
Aulas 11-guloso Algoritmos
 
Algoritmo Shell Sort
Algoritmo Shell SortAlgoritmo Shell Sort
Algoritmo Shell Sort
 

En vedette

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
 
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
 
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
 
Algoritmo dijkstra
Algoritmo dijkstraAlgoritmo dijkstra
Algoritmo dijkstraRey Salcedo
 
Maratona de Programação
Maratona de ProgramaçãoMaratona de Programação
Maratona de ProgramaçãoMarcos Castro
 

En vedette (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
 
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
 
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
 
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)