Backtracking

16
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

description

Apresentação sobre Algoritmos com Backtracking na aula de Programação Avançada com o professor Marcelo Quinta UFG.

Transcript of Backtracking

Page 1: 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

Page 2: Backtracking

● O que é Backtracking?● Descrição do método● Exemplo: Problema da mochila● Exemplo 2: Cotação de livro

Agenda

Page 3: 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?

Page 4: 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

Page 5: Backtracking

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

Page 6: Backtracking

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:

Page 7: Backtracking

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

Page 8: 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).

Page 9: Backtracking

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

Page 10: Backtracking

● 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

Page 11: Backtracking

Exemplo: Problema da mochila Força bruta

Page 12: 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 mochilaBacktracking

Page 13: Backtracking

Exemplo: Problema da mochilaBacktracking

Page 14: 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 mochilaBacktracking

Page 15: Backtracking

Exemplo: Problema da mochilaBacktracking

Page 16: Backtracking

AO VIVO

Exemplo 2: Cotação de livroBacktracking