Backtracking
-
Upload
inael-rodrigues -
Category
Technology
-
view
1.213 -
download
3
description
Transcript of Backtracking
Backtracking
Bruno Marquete da SilvaCássio Augusto da Silva Freitas
Geovane Pazine FilhoIgor Vinicius dos Santos Silva
Inael Rodrigues de Oliveira NetoJackeline Neves de Almeida
Vinícius Gonçalves Braga
● O que é Backtracking?● Descrição do método● Exemplo: Problema da mochila● Exemplo 2: Cotação de livro
Agenda
● 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?
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 itenscom 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
● Gerar todas as possiveis combinações○ Com n itens, existem 2n 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 Força bruta
● 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 mochilaBacktracking
Exemplo: Problema da mochilaBacktracking
● 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 mochilaBacktracking
Exemplo: Problema da mochilaBacktracking
AO VIVO
Exemplo 2: Cotação de livroBacktracking