+ All Categories
Home > Documents > Backtracking Busca com Retrocesso - DECOM-UFOP · Backtracking Maneira sistemática de iterar por...

Backtracking Busca com Retrocesso - DECOM-UFOP · Backtracking Maneira sistemática de iterar por...

Date post: 13-Sep-2020
Category:
Upload: others
View: 1 times
Download: 0 times
Share this document with a friend
13
Universidade Federal de Ouro Preto Departamento de Computação Prof. Haroldo Gambini Santos D.Sc. Computer Science Backtracking Busca com Retrocesso
Transcript
Page 1: Backtracking Busca com Retrocesso - DECOM-UFOP · Backtracking Maneira sistemática de iterar por todas as possíveis configurações no espaço de soluções Ex.: possíveis permutações

Universidade Federal de Ouro PretoDepartamento de Computação

Prof. Haroldo Gambini SantosD.Sc. Computer Science

BacktrackingBusca com Retrocesso

Page 2: Backtracking Busca com Retrocesso - DECOM-UFOP · Backtracking Maneira sistemática de iterar por todas as possíveis configurações no espaço de soluções Ex.: possíveis permutações

Busca Combinatória

Para vários problemas estamos dispostos a gastar muito processamento na obtenção da solução exata

Ex.: testar um programa ou circuito para todas as entradas possíveis e verificar sua corretude

Page 3: Backtracking Busca com Retrocesso - DECOM-UFOP · Backtracking Maneira sistemática de iterar por todas as possíveis configurações no espaço de soluções Ex.: possíveis permutações

Aproveitando sua CPU

Computadores com ciclos em Gigahertz são baratosEm que isso ajuda:

bilhões de operações por segundocomputação de uma solução toma centenas/milhares de ciclosmilhões de soluções:

permutações de 10, 11 elementoscombinações de 20 elementos

solucionar problemas muito maiores que isso envolve a poda cuidadosa do espaço de soluções

Page 4: Backtracking Busca com Retrocesso - DECOM-UFOP · Backtracking Maneira sistemática de iterar por todas as possíveis configurações no espaço de soluções Ex.: possíveis permutações

Backtracking

Maneira sistemática de iterar por todas as possíveis configurações no espaço de soluções

Ex.:possíveis permutações de objetospossíveis coleções de elementos (subconjuntos)todas as árvores de cobrimentotodos os caminhos entre dois vérticespodas as partições possíveis de vértices em cores

Page 5: Backtracking Busca com Retrocesso - DECOM-UFOP · Backtracking Maneira sistemática de iterar por todas as possíveis configurações no espaço de soluções Ex.: possíveis permutações

Modelagem

Solução, vetora = (a1, a2, …, an )

Cada elemento ai vem de um conjunto Si de valores possíveis

O método trabalha com soluções parciais que são estendidas

A cada passo:checar se a solução está completachecar as maneiras de estender a solução no passo k seguinte (construir Sk)

Page 6: Backtracking Busca com Retrocesso - DECOM-UFOP · Backtracking Maneira sistemática de iterar por todas as possíveis configurações no espaço de soluções Ex.: possíveis permutações

Backtrack-DFS

Backtrack-DFS( A, k )if A = ( a1, a2, … an ) is a solution then report it.

elsek = k + 1compute Sk

while Sk ≠ ⌀

ak = an element from Sk

Sk = Sk \ {ak}

Backtrack-DFS( A, k )

Page 7: Backtracking Busca com Retrocesso - DECOM-UFOP · Backtracking Maneira sistemática de iterar por todas as possíveis configurações no espaço de soluções Ex.: possíveis permutações

Busca

DFS – Busca em ProfundidadeSolução representada pelo caminho entre raiz e nó folhaRequerimento de espaço: altura da árvore

BFS – Busca em LarguraEspaço: largura da árvore !

Page 8: Backtracking Busca com Retrocesso - DECOM-UFOP · Backtracking Maneira sistemática de iterar por todas as possíveis configurações no espaço de soluções Ex.: possíveis permutações

Implementação

bool finished = FALSE;

backtrack ( int a[], int k, data input ) {

int ncandidates, i, c[MAXCANDIDATES];

if ( is_a_solution( a, k, input ) )

process_solution(a, k, input );

else {

++k;

construct_candidates( a, k, input, c, &ncandidates );

for ( i=0 ; i<ncandidates ; ++i ) {

a[k] = c[i];

make_move( a, k, input );

backtrack( a, k, input );

undo_move( a, k, input );

if ( finished ) return; // if early termination

}

}

}

c não pode ser global!

dependentesdo

problema

Page 9: Backtracking Busca com Retrocesso - DECOM-UFOP · Backtracking Maneira sistemática de iterar por todas as possíveis configurações no espaço de soluções Ex.: possíveis permutações

Poda (pruning) por Infactibilidade

2

54

3

7

6

1

11

10

8

9

Ex: TSP

nenhuma rota que vá da cidade 1 imediatamente paraa 3 precisa ser enumerada

Page 10: Backtracking Busca com Retrocesso - DECOM-UFOP · Backtracking Maneira sistemática de iterar por todas as possíveis configurações no espaço de soluções Ex.: possíveis permutações

Podas (cont.)

Poda por Limite (Branch-&-Bound): Caso já se conheça uma rota com custo Ct , qualquer solução parcial com custo maior pode ser podada

Podar simetria:Depois de explorar todas as rotas iniciando em v1 temos que explorar todas as iniciando em v2 ?

impacto: (n-1)! rotas

Page 11: Backtracking Busca com Retrocesso - DECOM-UFOP · Backtracking Maneira sistemática de iterar por todas as possíveis configurações no espaço de soluções Ex.: possíveis permutações

Backtracking – Problemas de Satisfação de Restrições: 8 rainhas

Page 12: Backtracking Busca com Retrocesso - DECOM-UFOP · Backtracking Maneira sistemática de iterar por todas as possíveis configurações no espaço de soluções Ex.: possíveis permutações

Backtracking – Problemas de Satisfação de Restrições: Kakuro

Page 13: Backtracking Busca com Retrocesso - DECOM-UFOP · Backtracking Maneira sistemática de iterar por todas as possíveis configurações no espaço de soluções Ex.: possíveis permutações

Tarefa de Casa: Resolvedores de n-Rainhas e Kakuro

Desenvolver resolvedores em C, Java ou C++, usando o template apresentado anteriormente

n-Rainhas:entrada: n parâmetro da linha de comandosaída: solução impressa/desenhada

Kakuro:Entrada: arquivo texto:

saída: solução impressa/desenhada


Recommended