35
Backtracking Katia Guimarães

Backtracking Katia Guimarães. [email protected] Backtracking Técnica em procedimentos de busca que corresponde ao retorno de uma exploração. Ex: (já

Embed Size (px)

Citation preview

Page 1: Backtracking Katia Guimarães. katia@cin.ufpe.br2 Backtracking Técnica em procedimentos de busca que corresponde ao retorno de uma exploração. Ex: (já

Backtracking

Katia Guimarães

Page 2: Backtracking Katia Guimarães. katia@cin.ufpe.br2 Backtracking Técnica em procedimentos de busca que corresponde ao retorno de uma exploração. Ex: (já

[email protected] 2

Backtracking

Técnica em procedimentos de busca que corresponde ao retorno de uma exploração.

Ex: (já visto) Busca-em-Profundidade Quando chegamos a um nó v pela primeira vez, cada aresta incidente a v é explorada e então o controle volta (backtracks) ao nó a partir do qual v foi alcançado.

Page 3: Backtracking Katia Guimarães. katia@cin.ufpe.br2 Backtracking Técnica em procedimentos de busca que corresponde ao retorno de uma exploração. Ex: (já

[email protected] 3

Problema das Oito Rainhas

Colocar oito rainhas num tabuleiro de xadrez, de forma que nenhuma delas fique atacada por outra.

Em outras palavras, escolher oito posições no tabuleiro de forma que não haja duas delas compartilhando a mesma linha, a mesma coluna ou a mesma diagonal.

Page 4: Backtracking Katia Guimarães. katia@cin.ufpe.br2 Backtracking Técnica em procedimentos de busca que corresponde ao retorno de uma exploração. Ex: (já

[email protected] 4

Algoritmo para O Problema das Oito Rainhas

1. Coloque uma rainha na posição mais à esquerda da primeira linha.

2. Enquanto não houver oito rainhas no tabuleiro faça: Se na próxima linha existir uma coluna que não está sob ataque de uma rainha já no tabuleiro então coloque uma rainha nesta posição senão volte à linha anterior /* backtrack */ mova a rainha o mínimo necessário para a direita de forma que ela não fique sob ataque

Page 5: Backtracking Katia Guimarães. katia@cin.ufpe.br2 Backtracking Técnica em procedimentos de busca que corresponde ao retorno de uma exploração. Ex: (já

[email protected] 5

Algoritmo para O Problema das Oito Rainhas

Q

Page 6: Backtracking Katia Guimarães. katia@cin.ufpe.br2 Backtracking Técnica em procedimentos de busca que corresponde ao retorno de uma exploração. Ex: (já

[email protected] 6

Algoritmo para O Problema das Oito Rainhas

Q

Q

Page 7: Backtracking Katia Guimarães. katia@cin.ufpe.br2 Backtracking Técnica em procedimentos de busca que corresponde ao retorno de uma exploração. Ex: (já

[email protected] 7

Algoritmo para O Problema das Oito Rainhas

Q

Q

Q

Page 8: Backtracking Katia Guimarães. katia@cin.ufpe.br2 Backtracking Técnica em procedimentos de busca que corresponde ao retorno de uma exploração. Ex: (já

[email protected] 8

Algoritmo para O Problema das Oito Rainhas

Q

Q

Q

Q

Page 9: Backtracking Katia Guimarães. katia@cin.ufpe.br2 Backtracking Técnica em procedimentos de busca que corresponde ao retorno de uma exploração. Ex: (já

[email protected] 9

Algoritmo para O Problema das Oito Rainhas

Q

Q

Q

Q

Q

Page 10: Backtracking Katia Guimarães. katia@cin.ufpe.br2 Backtracking Técnica em procedimentos de busca que corresponde ao retorno de uma exploração. Ex: (já

[email protected] 10

Algoritmo para O Problema das Oito Rainhas

Q

Q

Q

Q

Q

Page 11: Backtracking Katia Guimarães. katia@cin.ufpe.br2 Backtracking Técnica em procedimentos de busca que corresponde ao retorno de uma exploração. Ex: (já

[email protected] 11

Algoritmo para O Problema das Oito Rainhas

Q

Q

Q

Q

Q

Page 12: Backtracking Katia Guimarães. katia@cin.ufpe.br2 Backtracking Técnica em procedimentos de busca que corresponde ao retorno de uma exploração. Ex: (já

[email protected] 12

Algoritmo para O Problema das Oito Rainhas

Q

Q

Q

Q

Q

Page 13: Backtracking Katia Guimarães. katia@cin.ufpe.br2 Backtracking Técnica em procedimentos de busca que corresponde ao retorno de uma exploração. Ex: (já

[email protected] 13

Algoritmo para O Problema das Oito Rainhas

Q

Q

Q

Q

Page 14: Backtracking Katia Guimarães. katia@cin.ufpe.br2 Backtracking Técnica em procedimentos de busca que corresponde ao retorno de uma exploração. Ex: (já

[email protected] 14

Algoritmo para O Problema das Oito Rainhas

Q

Q

Q

Q

Q

Page 15: Backtracking Katia Guimarães. katia@cin.ufpe.br2 Backtracking Técnica em procedimentos de busca que corresponde ao retorno de uma exploração. Ex: (já

[email protected] 15

Algoritmo para O Problema das Oito Rainhas

Q

Q

Q

Q

Q

Q

Page 16: Backtracking Katia Guimarães. katia@cin.ufpe.br2 Backtracking Técnica em procedimentos de busca que corresponde ao retorno de uma exploração. Ex: (já

[email protected] 16

Algoritmo para O Problema das Oito Rainhas

Q

Q

Q

Q

Q

Q

Q

Page 17: Backtracking Katia Guimarães. katia@cin.ufpe.br2 Backtracking Técnica em procedimentos de busca que corresponde ao retorno de uma exploração. Ex: (já

[email protected] 17

Algoritmo para O Problema das Oito Rainhas

Q

Q

Q

Q

Q

Q

Q

Page 18: Backtracking Katia Guimarães. katia@cin.ufpe.br2 Backtracking Técnica em procedimentos de busca que corresponde ao retorno de uma exploração. Ex: (já

[email protected] 18

Algoritmo para O Problema das Oito Rainhas

Q

Q

Q

Q

Q

Q

Page 19: Backtracking Katia Guimarães. katia@cin.ufpe.br2 Backtracking Técnica em procedimentos de busca que corresponde ao retorno de uma exploração. Ex: (já

[email protected] 19

Algoritmo para O Problema das Oito Rainhas

Q

Q

Q

Q

Q

Q

Page 20: Backtracking Katia Guimarães. katia@cin.ufpe.br2 Backtracking Técnica em procedimentos de busca que corresponde ao retorno de uma exploração. Ex: (já

[email protected] 20

Algoritmo para O Problema das Oito Rainhas

Q

Q

Q

Q

Q

Page 21: Backtracking Katia Guimarães. katia@cin.ufpe.br2 Backtracking Técnica em procedimentos de busca que corresponde ao retorno de uma exploração. Ex: (já

[email protected] 21

Algoritmo para O Problema das Oito Rainhas

Q

Q

Q

Q

Q

Page 22: Backtracking Katia Guimarães. katia@cin.ufpe.br2 Backtracking Técnica em procedimentos de busca que corresponde ao retorno de uma exploração. Ex: (já

[email protected] 22

Algoritmo para O Problema das Oito Rainhas

Q

Q

Q

Q

Q

Page 23: Backtracking Katia Guimarães. katia@cin.ufpe.br2 Backtracking Técnica em procedimentos de busca que corresponde ao retorno de uma exploração. Ex: (já

[email protected] 23

Algoritmo para O Problema das Oito Rainhas

Q

Q

Q

Q

Q

Page 24: Backtracking Katia Guimarães. katia@cin.ufpe.br2 Backtracking Técnica em procedimentos de busca que corresponde ao retorno de uma exploração. Ex: (já

[email protected] 24

Algoritmo para O Problema das Oito Rainhas

Q

Q

Q

Q

Q

Page 25: Backtracking Katia Guimarães. katia@cin.ufpe.br2 Backtracking Técnica em procedimentos de busca que corresponde ao retorno de uma exploração. Ex: (já

[email protected] 25

Algoritmo para O Problema das Oito Rainhas

Q

Q

Q

Q

Page 26: Backtracking Katia Guimarães. katia@cin.ufpe.br2 Backtracking Técnica em procedimentos de busca que corresponde ao retorno de uma exploração. Ex: (já

[email protected] 26

Algoritmo para O Problema das Oito Rainhas

Q

Q

Q

Page 27: Backtracking Katia Guimarães. katia@cin.ufpe.br2 Backtracking Técnica em procedimentos de busca que corresponde ao retorno de uma exploração. Ex: (já

[email protected] 27

Algoritmo para O Problema das Oito Rainhas

Q

Q

Q

Q

Page 28: Backtracking Katia Guimarães. katia@cin.ufpe.br2 Backtracking Técnica em procedimentos de busca que corresponde ao retorno de uma exploração. Ex: (já

[email protected] 28

Algoritmo para O Problema das Oito Rainhas

Q

Q

Q

Q

Page 29: Backtracking Katia Guimarães. katia@cin.ufpe.br2 Backtracking Técnica em procedimentos de busca que corresponde ao retorno de uma exploração. Ex: (já

[email protected] 29

Algoritmo para O Problema das Oito Rainhas

início

(1,1)

(2,3)

(3,5)

(4,2)

(5,4) (5,8)

(4,7)

(5,2)

(6,4)

(7,6)

(5,4)

Page 30: Backtracking Katia Guimarães. katia@cin.ufpe.br2 Backtracking Técnica em procedimentos de busca que corresponde ao retorno de uma exploração. Ex: (já

[email protected] 30

Problema da 3-Coloração

Dado um grafo G(V, E), encontrar uma 3-coloraçãode G, ou seja, definir uma função cor: V {1, 2, 3}de forma que Se (u,v) é uma aresta em E então cor (u) cor (v).

Ex:

Page 31: Backtracking Katia Guimarães. katia@cin.ufpe.br2 Backtracking Técnica em procedimentos de busca que corresponde ao retorno de uma exploração. Ex: (já

[email protected] 31

Algoritmo para 3-Coloração

Para v 1 até n faça cor (v) 0; cor (1) 1; Se (3-Colorir (1)) então imprima cor senão imprima “Impossível 3-colorir”

Page 32: Backtracking Katia Guimarães. katia@cin.ufpe.br2 Backtracking Técnica em procedimentos de busca que corresponde ao retorno de uma exploração. Ex: (já

[email protected] 32

Algoritmo para 3-Coloração Procedimento 3-Colorir (v): Se v = n então {retorne (suc) } Tome o vértice z v +1 Se z não tem vizinhos w com cor (w) = 1 então {cor (z) 1; se (3-Colorir (z)) retorne (suc) } Se z não tem vizinhos w com cor (w) = 2 então {cor (z) 2; se (3-Colorir (z)) retorne (suc) } Se z não tem vizinhos w com cor (w) = 3 então {cor (z) 3; se (3-Colorir (z)) retorne (suc) } cor (z) 0; retorne (fail); /* backtrack */

Page 33: Backtracking Katia Guimarães. katia@cin.ufpe.br2 Backtracking Técnica em procedimentos de busca que corresponde ao retorno de uma exploração. Ex: (já

[email protected] 33

O Problema da 3-Coloração

1

2 3

45

6

7

?

Page 34: Backtracking Katia Guimarães. katia@cin.ufpe.br2 Backtracking Técnica em procedimentos de busca que corresponde ao retorno de uma exploração. Ex: (já

[email protected] 34

O Problema da 3-Coloração

1

2 3

45

6

7

Page 35: Backtracking Katia Guimarães. katia@cin.ufpe.br2 Backtracking Técnica em procedimentos de busca que corresponde ao retorno de uma exploração. Ex: (já

[email protected] 35

Branch-and-Bound

Uma outra técnica muito usada que está relacionada com Backtracking é a técnica chamada Branch-and-Bound.

Branch-and-Bound é uma técnica de exploração mais sofisticada, que procura explorar opções (branch), mas colocando um limite quantitativo (bound), com o objetivo de evitar buscas em espaços menos promissores.

Ex: Análise das possíveis seqüências de lances na implementação de um jogo, explorando os lances que parecem melhores, uma vez que o número total de possibilidades é muito grande.