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

Computational Complexity: Complexity Classes
Computational Complexity: Complexity ClassesComputational Complexity: Complexity Classes
Computational Complexity: Complexity ClassesAntonis Antonopoulos
 
Chapter 6 taylor and maclaurin series
Chapter 6 taylor and maclaurin seriesChapter 6 taylor and maclaurin series
Chapter 6 taylor and maclaurin seriesIrfaan Bahadoor
 
Binary Class and Multi Class Strategies for Machine Learning
Binary Class and Multi Class Strategies for Machine LearningBinary Class and Multi Class Strategies for Machine Learning
Binary Class and Multi Class Strategies for Machine LearningPaxcel Technologies
 
Assessing Model Performance - Beginner's Guide
Assessing Model Performance - Beginner's GuideAssessing Model Performance - Beginner's Guide
Assessing Model Performance - Beginner's GuideMegan Verbakel
 
Using histograms to get better performance
Using histograms to get better performanceUsing histograms to get better performance
Using histograms to get better performanceSergey Petrunya
 
The n Queen Problem
The n Queen ProblemThe n Queen Problem
The n Queen ProblemSukrit Gupta
 
Relational Algebra Ch6 (Navathe 4th edition)/ Ch7 (Navathe 3rd edition)
Relational Algebra Ch6 (Navathe 4th edition)/ Ch7 (Navathe 3rd edition)Relational Algebra Ch6 (Navathe 4th edition)/ Ch7 (Navathe 3rd edition)
Relational Algebra Ch6 (Navathe 4th edition)/ Ch7 (Navathe 3rd edition)Raj vardhan
 
44 randomized-algorithms
44 randomized-algorithms44 randomized-algorithms
44 randomized-algorithmsAjitSaraf1
 
Predicate calculus
Predicate calculusPredicate calculus
Predicate calculusRajendran
 
AI_Session 4 Uniformed search strategies.pptx
AI_Session 4 Uniformed search strategies.pptxAI_Session 4 Uniformed search strategies.pptx
AI_Session 4 Uniformed search strategies.pptxAsst.prof M.Gokilavani
 
2.Problems Problem Spaces and Search.ppt
2.Problems Problem Spaces and Search.ppt2.Problems Problem Spaces and Search.ppt
2.Problems Problem Spaces and Search.pptDr. Naushad Varish
 
Discrete Mathematics Lecture
Discrete Mathematics LectureDiscrete Mathematics Lecture
Discrete Mathematics LectureGenie Rose Santos
 
State Space Search(2)
State Space Search(2)State Space Search(2)
State Space Search(2)luzenith_g
 
Markov Models
Markov ModelsMarkov Models
Markov ModelsVu Pham
 
Gradient descent optimizer
Gradient descent optimizerGradient descent optimizer
Gradient descent optimizerHojin Yang
 
Master method
Master method Master method
Master method Rajendran
 

Mais procurados (20)

Computational Complexity: Complexity Classes
Computational Complexity: Complexity ClassesComputational Complexity: Complexity Classes
Computational Complexity: Complexity Classes
 
Chapter 6 taylor and maclaurin series
Chapter 6 taylor and maclaurin seriesChapter 6 taylor and maclaurin series
Chapter 6 taylor and maclaurin series
 
Binary Class and Multi Class Strategies for Machine Learning
Binary Class and Multi Class Strategies for Machine LearningBinary Class and Multi Class Strategies for Machine Learning
Binary Class and Multi Class Strategies for Machine Learning
 
L3 some other properties
L3 some other propertiesL3 some other properties
L3 some other properties
 
Assessing Model Performance - Beginner's Guide
Assessing Model Performance - Beginner's GuideAssessing Model Performance - Beginner's Guide
Assessing Model Performance - Beginner's Guide
 
Using histograms to get better performance
Using histograms to get better performanceUsing histograms to get better performance
Using histograms to get better performance
 
The n Queen Problem
The n Queen ProblemThe n Queen Problem
The n Queen Problem
 
Relational Algebra Ch6 (Navathe 4th edition)/ Ch7 (Navathe 3rd edition)
Relational Algebra Ch6 (Navathe 4th edition)/ Ch7 (Navathe 3rd edition)Relational Algebra Ch6 (Navathe 4th edition)/ Ch7 (Navathe 3rd edition)
Relational Algebra Ch6 (Navathe 4th edition)/ Ch7 (Navathe 3rd edition)
 
KNN
KNNKNN
KNN
 
44 randomized-algorithms
44 randomized-algorithms44 randomized-algorithms
44 randomized-algorithms
 
Predicate calculus
Predicate calculusPredicate calculus
Predicate calculus
 
AI_Session 4 Uniformed search strategies.pptx
AI_Session 4 Uniformed search strategies.pptxAI_Session 4 Uniformed search strategies.pptx
AI_Session 4 Uniformed search strategies.pptx
 
2.Problems Problem Spaces and Search.ppt
2.Problems Problem Spaces and Search.ppt2.Problems Problem Spaces and Search.ppt
2.Problems Problem Spaces and Search.ppt
 
Discrete Mathematics Lecture
Discrete Mathematics LectureDiscrete Mathematics Lecture
Discrete Mathematics Lecture
 
Support Vector machine
Support Vector machineSupport Vector machine
Support Vector machine
 
State Space Search(2)
State Space Search(2)State Space Search(2)
State Space Search(2)
 
Markov Models
Markov ModelsMarkov Models
Markov Models
 
Gradient descent optimizer
Gradient descent optimizerGradient descent optimizer
Gradient descent optimizer
 
Master method
Master method Master method
Master method
 
Activity selection problem
Activity selection problemActivity selection problem
Activity selection problem
 

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
 

Backtracking método solução

  • 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