SlideShare uma empresa Scribd logo
1 de 16
Baixar para ler offline
Backtracking

                   Bruno Marquete da Silva
            Cássio Augusto da Silva Freitas
                      Geovane Pazine Filho
              Igor Vinicius dos Santos Silva
           Inael Rodrigues de Oliveira Neto
                Jackeline Neves de Almeida
                  Vinícius Gonçalves Braga
Agenda
●   O que é Backtracking?
●   Descrição do método
●   Exemplo: Problema da mochila
●   Exemplo 2: Cotação de livro
O que é Backtracking?
●   Tipo de algoritmo por força bruta;
●   Múltiplas soluções podem ser eliminadas sem serem
    examinadas;
●   É um método para iterar todas as possíveis
    configurações (permutação dos elementos);
●   Pode ser personalizado;
●   Solução é um vetor a = (a1, a2, ... a-n) sendo cada
    elemento a-i selecionado de um conjunto Si
●   Exemplos comuns: criação de permutações e
    subconjuntos
O que é Backtracking?
● Pode ser aplicado somente para problema que admite:
  ○ o conceito de "partial candidate solution";
  ○ um teste relativamente rápido se ele pode ser
     completado com uma solução válida;
● Pode eliminar um grande número de candidatos com
  um único teste
O que é Backtracking

● Assegura o acerto por enumerar todas as possibilidades
  sem nunca visitar o mesmo estado;
● Eficiente;
● A recursividade promove a elegância e a fácil
  implementação desse algoritmo, porque o vetor de novos
  candidatos, c, é alocado com um procedimento recursivo;
● As principais aplicações do backtracking são da criação de
  todos os subconjuntos de um conjunto S e na criação de
  todas as suas permutações
Descrição do método
●   Como o backtracking faz busca por profundidade, podemos ilustrar o
    método que o mesmo exerce de força bruta utilizando o seguinte exemplo:
     ○ Quando caminhamos pela arvore e encontramos um nó v pela
        primeira vez, cada aresta incidente a v é expolorada na tentativa de
        identificar uma solução possível, partindo da esquerda para a direita,
        caso não encontre, o controle volta (backtracks) ao nó de partida do
        qual v foi alcançado. Com isso temos a seguinte situação:
Descrição do Método




●   a, b, e, (b), f, g, (f), h, (f), i, (f), (b), (a), c, (a), d.
     ○ Onde os parênteses indicam os caminhos em backtracking
Exemplo: Problema da mochila
 ● Deve-se preencher uma
mochila com diversos itens
com pesos e valores
(benefícios) diferentes.

 ● O objetivo é que se
preencher a mochila com o
maior valor (benefício)
possível, sem ultrapassar a
capacidade (peso máximo).
Exemplo: Problema da mochila
●   Entrada:
     ○ capacidade da mochila, K
     ○ n itens com pesos pi e valores vi
●   O objetivo é obter um conjunto S de itens tais que:
     ○ A soma dos pesos dos itens em S seja menor ou igual a K
     ○ A soma dos valores dos itens em S seja a maior possível
Exemplo: Problema da mochila
                        Força bruta

●   Gerar todas as possiveis combinações
                              n
     ○ Com n itens, existem 2 soluções

     ○ Checar se cada solução satisfaz limite peso

     ○ Salvar a condição que melhor representa a solução

●   Pode ser representada como uma árvore
Exemplo: Problema da mochila
           Força bruta
Exemplo: Problema da mochila
                      Backtracking

●   Se alcançamos um ponto em que a solução não é mais
    viável, não precisamos continuar exporando a solução.
     ○ Podemos “voltar atrás” (backtrack) a partir deste

       ponto.
●   No exemplo backtracking se torna bastante útil:
     ○ Na medida em que o número de itens cresce.

     ○ Na medida em que a capacidade da mochila

       diminui.
Exemplo: Problema da mochila
          Backtracking
Exemplo: Problema da mochila
                     Backtracking

●  Pode-se voltar atrás também quando se sabe que a
melhor solução da subárvore é pior do que a melhor
solução já encontrada.
    ● Fundamento utilizado por muitos algoritmos

    ● Exemplo típico: Branch and Bound
Exemplo: Problema da mochila
          Backtracking
Exemplo 2: Cotação de livro
          Backtracking




      AO VIVO

Mais conteúdo relacionado

Mais procurados

Support Vector Machines
Support Vector MachinesSupport Vector Machines
Support Vector Machinesnextlib
 
Naive Bayes Classifier
Naive Bayes ClassifierNaive Bayes Classifier
Naive Bayes ClassifierYiqun Hu
 
Reinforcement Learning
Reinforcement LearningReinforcement Learning
Reinforcement LearningCloudxLab
 
Aulas 11-guloso Algoritmos
Aulas 11-guloso AlgoritmosAulas 11-guloso Algoritmos
Aulas 11-guloso AlgoritmosKevin Takano
 
U-Net: Convolutional Networks for Biomedical Image Segmentation
U-Net: Convolutional Networks for Biomedical Image SegmentationU-Net: Convolutional Networks for Biomedical Image Segmentation
U-Net: Convolutional Networks for Biomedical Image Segmentationfake can
 
LZW - Compressão e Descompressão
LZW - Compressão e Descompressão LZW - Compressão e Descompressão
LZW - Compressão e Descompressão Mayara Mônica
 
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
 
Aula 13 propriedade condicional, regra do produto e regra de bayes
Aula 13   propriedade condicional, regra do produto e regra de bayesAula 13   propriedade condicional, regra do produto e regra de bayes
Aula 13 propriedade condicional, regra do produto e regra de bayesEnio José Bolognini
 
Backtracking - Gerar todos os subconjuntos
Backtracking - Gerar todos os subconjuntosBacktracking - Gerar todos os subconjuntos
Backtracking - Gerar todos os subconjuntosMarcos Castro
 
Boosting - An Ensemble Machine Learning Method
Boosting - An Ensemble Machine Learning MethodBoosting - An Ensemble Machine Learning Method
Boosting - An Ensemble Machine Learning MethodKirkwood Donavin
 
Paradigmas de Linguagens de Programação: Conceitos de PHP
Paradigmas de Linguagens de Programação: Conceitos de PHPParadigmas de Linguagens de Programação: Conceitos de PHP
Paradigmas de Linguagens de Programação: Conceitos de PHPFabio Leal
 
Erick Zanardo - Desenvolvimento de Jogos em Flutter
Erick Zanardo - Desenvolvimento de Jogos em FlutterErick Zanardo - Desenvolvimento de Jogos em Flutter
Erick Zanardo - Desenvolvimento de Jogos em FlutterDevCamp Campinas
 
Lista de Exercícios - Linguagem Formais e Autômatos
Lista de Exercícios - Linguagem Formais e AutômatosLista de Exercícios - Linguagem Formais e Autômatos
Lista de Exercícios - Linguagem Formais e AutômatosTárcio Sales
 
Logistic regression : Use Case | Background | Advantages | Disadvantages
Logistic regression : Use Case | Background | Advantages | DisadvantagesLogistic regression : Use Case | Background | Advantages | Disadvantages
Logistic regression : Use Case | Background | Advantages | DisadvantagesRajat Sharma
 
Testes de especificação, diagnóstico e interpretação de Modelo OLS (Ordinary ...
Testes de especificação, diagnóstico e interpretação de Modelo OLS (Ordinary ...Testes de especificação, diagnóstico e interpretação de Modelo OLS (Ordinary ...
Testes de especificação, diagnóstico e interpretação de Modelo OLS (Ordinary ...Kleverton Saath
 

Mais procurados (20)

Support Vector Machines
Support Vector MachinesSupport Vector Machines
Support Vector Machines
 
Naive Bayes Classifier
Naive Bayes ClassifierNaive Bayes Classifier
Naive Bayes Classifier
 
Reinforcement Learning
Reinforcement LearningReinforcement Learning
Reinforcement Learning
 
Aulas 11-guloso Algoritmos
Aulas 11-guloso AlgoritmosAulas 11-guloso Algoritmos
Aulas 11-guloso Algoritmos
 
Grafos e Árvores
Grafos e ÁrvoresGrafos e Árvores
Grafos e Árvores
 
U-Net: Convolutional Networks for Biomedical Image Segmentation
U-Net: Convolutional Networks for Biomedical Image SegmentationU-Net: Convolutional Networks for Biomedical Image Segmentation
U-Net: Convolutional Networks for Biomedical Image Segmentation
 
Algoritmos aproximativos
Algoritmos aproximativosAlgoritmos aproximativos
Algoritmos aproximativos
 
LZW - Compressão e Descompressão
LZW - Compressão e Descompressão LZW - Compressão e Descompressão
LZW - Compressão e Descompressão
 
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
 
Aula 13 propriedade condicional, regra do produto e regra de bayes
Aula 13   propriedade condicional, regra do produto e regra de bayesAula 13   propriedade condicional, regra do produto e regra de bayes
Aula 13 propriedade condicional, regra do produto e regra de bayes
 
Backtracking - Gerar todos os subconjuntos
Backtracking - Gerar todos os subconjuntosBacktracking - Gerar todos os subconjuntos
Backtracking - Gerar todos os subconjuntos
 
Boosting - An Ensemble Machine Learning Method
Boosting - An Ensemble Machine Learning MethodBoosting - An Ensemble Machine Learning Method
Boosting - An Ensemble Machine Learning Method
 
Paradigmas de Linguagens de Programação: Conceitos de PHP
Paradigmas de Linguagens de Programação: Conceitos de PHPParadigmas de Linguagens de Programação: Conceitos de PHP
Paradigmas de Linguagens de Programação: Conceitos de PHP
 
Recursividade
RecursividadeRecursividade
Recursividade
 
Erick Zanardo - Desenvolvimento de Jogos em Flutter
Erick Zanardo - Desenvolvimento de Jogos em FlutterErick Zanardo - Desenvolvimento de Jogos em Flutter
Erick Zanardo - Desenvolvimento de Jogos em Flutter
 
XgBoost.pptx
XgBoost.pptxXgBoost.pptx
XgBoost.pptx
 
Lista de Exercícios - Linguagem Formais e Autômatos
Lista de Exercícios - Linguagem Formais e AutômatosLista de Exercícios - Linguagem Formais e Autômatos
Lista de Exercícios - Linguagem Formais e Autômatos
 
Logistic regression : Use Case | Background | Advantages | Disadvantages
Logistic regression : Use Case | Background | Advantages | DisadvantagesLogistic regression : Use Case | Background | Advantages | Disadvantages
Logistic regression : Use Case | Background | Advantages | Disadvantages
 
Testes de especificação, diagnóstico e interpretação de Modelo OLS (Ordinary ...
Testes de especificação, diagnóstico e interpretação de Modelo OLS (Ordinary ...Testes de especificação, diagnóstico e interpretação de Modelo OLS (Ordinary ...
Testes de especificação, diagnóstico e interpretação de Modelo OLS (Ordinary ...
 
Clustering
ClusteringClustering
Clustering
 

Destaque (9)

Vuelta Atras
Vuelta AtrasVuelta Atras
Vuelta Atras
 
Backtracking
BacktrackingBacktracking
Backtracking
 
Esquema algorítmico del backtracking
Esquema algorítmico del  backtrackingEsquema algorítmico del  backtracking
Esquema algorítmico del backtracking
 
Busqueda por backtracking
Busqueda por backtrackingBusqueda por backtracking
Busqueda por backtracking
 
Vuelta Atras
Vuelta AtrasVuelta Atras
Vuelta Atras
 
Vuelta atrás (backtraking)
Vuelta atrás (backtraking)Vuelta atrás (backtraking)
Vuelta atrás (backtraking)
 
Vuelta atrás o (backtracking)
Vuelta atrás o (backtracking)Vuelta atrás o (backtracking)
Vuelta atrás o (backtracking)
 
Algoritmo de backtracking
Algoritmo de backtrackingAlgoritmo de backtracking
Algoritmo de backtracking
 
Backtracking
BacktrackingBacktracking
Backtracking
 

Mais de Inael Rodrigues

Artigo Monitoramento de Pastagem
Artigo Monitoramento de PastagemArtigo Monitoramento de Pastagem
Artigo Monitoramento de PastagemInael Rodrigues
 
Arquiteturas de sistemas reais
Arquiteturas de sistemas reaisArquiteturas de sistemas reais
Arquiteturas de sistemas reaisInael Rodrigues
 
Codigo limpo: Nomes Significativos Cap 2
Codigo limpo:  Nomes Significativos Cap 2Codigo limpo:  Nomes Significativos Cap 2
Codigo limpo: Nomes Significativos Cap 2Inael Rodrigues
 
Código limpo: Comentários
Código limpo:   ComentáriosCódigo limpo:   Comentários
Código limpo: ComentáriosInael Rodrigues
 
Código limpo: Funções Capítulo 3
Código limpo: Funções  Capítulo 3Código limpo: Funções  Capítulo 3
Código limpo: Funções Capítulo 3Inael Rodrigues
 
Código Limpo: Testes de Unidade Capítulo 09
Código Limpo: Testes de Unidade Capítulo 09 Código Limpo: Testes de Unidade Capítulo 09
Código Limpo: Testes de Unidade Capítulo 09 Inael Rodrigues
 
Código Limpo: Objetos e Estruturas de Dados cap6
Código Limpo: Objetos e Estruturas de Dados cap6Código Limpo: Objetos e Estruturas de Dados cap6
Código Limpo: Objetos e Estruturas de Dados cap6Inael Rodrigues
 
Livro Código Limpo: Tratamento de Erros - Cap 7
Livro Código Limpo: Tratamento de Erros - Cap 7Livro Código Limpo: Tratamento de Erros - Cap 7
Livro Código Limpo: Tratamento de Erros - Cap 7Inael Rodrigues
 
Livro Código limpo: Classes
Livro Código limpo:  ClassesLivro Código limpo:  Classes
Livro Código limpo: ClassesInael Rodrigues
 
Teste Estrutural usando a ferramenta Jabuti
Teste Estrutural usando a ferramenta JabutiTeste Estrutural usando a ferramenta Jabuti
Teste Estrutural usando a ferramenta JabutiInael Rodrigues
 
TDC 2012: Trilha - Android University Back end Android
TDC 2012: Trilha - Android University Back end Android TDC 2012: Trilha - Android University Back end Android
TDC 2012: Trilha - Android University Back end Android Inael Rodrigues
 
TDC 2012 Trilha – Android University
TDC 2012 Trilha – Android UniversityTDC 2012 Trilha – Android University
TDC 2012 Trilha – Android UniversityInael Rodrigues
 
Ferramentas para Ambiente de Desenvolvimento Ágil
Ferramentas para Ambiente de Desenvolvimento ÁgilFerramentas para Ambiente de Desenvolvimento Ágil
Ferramentas para Ambiente de Desenvolvimento ÁgilInael Rodrigues
 
Android bootcamp 06-01-2012 Part 2
Android bootcamp 06-01-2012 Part 2Android bootcamp 06-01-2012 Part 2
Android bootcamp 06-01-2012 Part 2Inael Rodrigues
 
Android bootcamp 06-01-2012 Part 1
Android bootcamp  06-01-2012 Part 1Android bootcamp  06-01-2012 Part 1
Android bootcamp 06-01-2012 Part 1Inael Rodrigues
 

Mais de Inael Rodrigues (18)

Artigo Monitoramento de Pastagem
Artigo Monitoramento de PastagemArtigo Monitoramento de Pastagem
Artigo Monitoramento de Pastagem
 
Map Reduce
Map ReduceMap Reduce
Map Reduce
 
Arquiteturas de sistemas reais
Arquiteturas de sistemas reaisArquiteturas de sistemas reais
Arquiteturas de sistemas reais
 
Codigo limpo: Nomes Significativos Cap 2
Codigo limpo:  Nomes Significativos Cap 2Codigo limpo:  Nomes Significativos Cap 2
Codigo limpo: Nomes Significativos Cap 2
 
Código limpo: Limites
Código limpo: LimitesCódigo limpo: Limites
Código limpo: Limites
 
Código limpo: Comentários
Código limpo:   ComentáriosCódigo limpo:   Comentários
Código limpo: Comentários
 
Código limpo: Funções Capítulo 3
Código limpo: Funções  Capítulo 3Código limpo: Funções  Capítulo 3
Código limpo: Funções Capítulo 3
 
Código Limpo: Testes de Unidade Capítulo 09
Código Limpo: Testes de Unidade Capítulo 09 Código Limpo: Testes de Unidade Capítulo 09
Código Limpo: Testes de Unidade Capítulo 09
 
Código Limpo: Objetos e Estruturas de Dados cap6
Código Limpo: Objetos e Estruturas de Dados cap6Código Limpo: Objetos e Estruturas de Dados cap6
Código Limpo: Objetos e Estruturas de Dados cap6
 
Livro Código Limpo: Tratamento de Erros - Cap 7
Livro Código Limpo: Tratamento de Erros - Cap 7Livro Código Limpo: Tratamento de Erros - Cap 7
Livro Código Limpo: Tratamento de Erros - Cap 7
 
Livro Código limpo: Classes
Livro Código limpo:  ClassesLivro Código limpo:  Classes
Livro Código limpo: Classes
 
Paa algoritmos gulosos
Paa  algoritmos gulososPaa  algoritmos gulosos
Paa algoritmos gulosos
 
Teste Estrutural usando a ferramenta Jabuti
Teste Estrutural usando a ferramenta JabutiTeste Estrutural usando a ferramenta Jabuti
Teste Estrutural usando a ferramenta Jabuti
 
TDC 2012: Trilha - Android University Back end Android
TDC 2012: Trilha - Android University Back end Android TDC 2012: Trilha - Android University Back end Android
TDC 2012: Trilha - Android University Back end Android
 
TDC 2012 Trilha – Android University
TDC 2012 Trilha – Android UniversityTDC 2012 Trilha – Android University
TDC 2012 Trilha – Android University
 
Ferramentas para Ambiente de Desenvolvimento Ágil
Ferramentas para Ambiente de Desenvolvimento ÁgilFerramentas para Ambiente de Desenvolvimento Ágil
Ferramentas para Ambiente de Desenvolvimento Ágil
 
Android bootcamp 06-01-2012 Part 2
Android bootcamp 06-01-2012 Part 2Android bootcamp 06-01-2012 Part 2
Android bootcamp 06-01-2012 Part 2
 
Android bootcamp 06-01-2012 Part 1
Android bootcamp  06-01-2012 Part 1Android bootcamp  06-01-2012 Part 1
Android bootcamp 06-01-2012 Part 1
 

Último

ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfNatalia Granato
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 

Último (6)

ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 

Backtracking

  • 1. Backtracking Bruno Marquete da Silva Cássio Augusto da Silva Freitas Geovane Pazine Filho Igor Vinicius dos Santos Silva Inael Rodrigues de Oliveira Neto Jackeline Neves de Almeida Vinícius Gonçalves Braga
  • 2. Agenda ● O que é Backtracking? ● Descrição do método ● Exemplo: Problema da mochila ● Exemplo 2: Cotação de livro
  • 3. O que é Backtracking? ● Tipo de algoritmo por força bruta; ● Múltiplas soluções podem ser eliminadas sem serem examinadas; ● É um método para iterar todas as possíveis configurações (permutação dos elementos); ● Pode ser personalizado; ● Solução é um vetor a = (a1, a2, ... a-n) sendo cada elemento a-i selecionado de um conjunto Si ● Exemplos comuns: criação de permutações e subconjuntos
  • 4. O que é Backtracking? ● Pode ser aplicado somente para problema que admite: ○ o conceito de "partial candidate solution"; ○ um teste relativamente rápido se ele pode ser completado com uma solução válida; ● Pode eliminar um grande número de candidatos com um único teste
  • 5. O que é Backtracking ● Assegura o acerto por enumerar todas as possibilidades sem nunca visitar o mesmo estado; ● Eficiente; ● A recursividade promove a elegância e a fácil implementação desse algoritmo, porque o vetor de novos candidatos, c, é alocado com um procedimento recursivo; ● As principais aplicações do backtracking são da criação de todos os subconjuntos de um conjunto S e na criação de todas as suas permutações
  • 6. Descrição do método ● Como o backtracking faz busca por profundidade, podemos ilustrar o método que o mesmo exerce de força bruta utilizando o seguinte exemplo: ○ Quando caminhamos pela arvore e encontramos um nó v pela primeira vez, cada aresta incidente a v é expolorada na tentativa de identificar uma solução possível, partindo da esquerda para a direita, caso não encontre, o controle volta (backtracks) ao nó de partida do qual v foi alcançado. Com isso temos a seguinte situação:
  • 7. Descrição do Método ● a, b, e, (b), f, g, (f), h, (f), i, (f), (b), (a), c, (a), d. ○ Onde os parênteses indicam os caminhos em backtracking
  • 8. Exemplo: Problema da mochila ● Deve-se preencher uma mochila com diversos itens com pesos e valores (benefícios) diferentes. ● O objetivo é que se preencher a mochila com o maior valor (benefício) possível, sem ultrapassar a capacidade (peso máximo).
  • 9. Exemplo: Problema da mochila ● Entrada: ○ capacidade da mochila, K ○ n itens com pesos pi e valores vi ● O objetivo é obter um conjunto S de itens tais que: ○ A soma dos pesos dos itens em S seja menor ou igual a K ○ A soma dos valores dos itens em S seja a maior possível
  • 10. Exemplo: Problema da mochila Força bruta ● Gerar todas as possiveis combinações n ○ Com n itens, existem 2 soluções ○ Checar se cada solução satisfaz limite peso ○ Salvar a condição que melhor representa a solução ● Pode ser representada como uma árvore
  • 11. Exemplo: Problema da mochila Força bruta
  • 12. Exemplo: Problema da mochila Backtracking ● Se alcançamos um ponto em que a solução não é mais viável, não precisamos continuar exporando a solução. ○ Podemos “voltar atrás” (backtrack) a partir deste ponto. ● No exemplo backtracking se torna bastante útil: ○ Na medida em que o número de itens cresce. ○ Na medida em que a capacidade da mochila diminui.
  • 13. Exemplo: Problema da mochila Backtracking
  • 14. Exemplo: Problema da mochila Backtracking ● Pode-se voltar atrás também quando se sabe que a melhor solução da subárvore é pior do que a melhor solução já encontrada. ● Fundamento utilizado por muitos algoritmos ● Exemplo típico: Branch and Bound
  • 15. Exemplo: Problema da mochila Backtracking
  • 16. Exemplo 2: Cotação de livro Backtracking AO VIVO