1 / 35

Backtracking

Backtracking. Katia Guimarães. 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

owena
Download Presentation

Backtracking

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Backtracking Katia Guimarães

  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. katia@cin.ufpe.br

  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. katia@cin.ufpe.br

  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 katia@cin.ufpe.br

  5. Algoritmo para O Problema das Oito Rainhas katia@cin.ufpe.br

  6. Algoritmo para O Problema das Oito Rainhas katia@cin.ufpe.br

  7. Algoritmo para O Problema das Oito Rainhas katia@cin.ufpe.br

  8. Algoritmo para O Problema das Oito Rainhas katia@cin.ufpe.br

  9. Algoritmo para O Problema das Oito Rainhas katia@cin.ufpe.br

  10. Algoritmo para O Problema das Oito Rainhas katia@cin.ufpe.br

  11. Algoritmo para O Problema das Oito Rainhas Q katia@cin.ufpe.br

  12. Algoritmo para O Problema das Oito Rainhas katia@cin.ufpe.br

  13. Algoritmo para O Problema das Oito Rainhas katia@cin.ufpe.br

  14. Algoritmo para O Problema das Oito Rainhas katia@cin.ufpe.br

  15. Algoritmo para O Problema das Oito Rainhas katia@cin.ufpe.br

  16. Algoritmo para O Problema das Oito Rainhas katia@cin.ufpe.br

  17. Algoritmo para O Problema das Oito Rainhas katia@cin.ufpe.br

  18. Algoritmo para O Problema das Oito Rainhas katia@cin.ufpe.br

  19. Algoritmo para O Problema das Oito Rainhas katia@cin.ufpe.br

  20. Algoritmo para O Problema das Oito Rainhas katia@cin.ufpe.br

  21. Algoritmo para O Problema das Oito Rainhas katia@cin.ufpe.br

  22. Algoritmo para O Problema das Oito Rainhas katia@cin.ufpe.br

  23. Algoritmo para O Problema das Oito Rainhas katia@cin.ufpe.br

  24. Algoritmo para O Problema das Oito Rainhas katia@cin.ufpe.br

  25. Algoritmo para O Problema das Oito Rainhas katia@cin.ufpe.br

  26. Algoritmo para O Problema das Oito Rainhas katia@cin.ufpe.br

  27. Algoritmo para O Problema das Oito Rainhas katia@cin.ufpe.br

  28. Algoritmo para O Problema das Oito Rainhas katia@cin.ufpe.br

  29. Algoritmo para O Problema das Oito Rainhas início (1,1) (2,3) (3,5) (4,2) (4,7) (5,4) (5,8) (5,2) (5,4) (6,4) (7,6) katia@cin.ufpe.br

  30. Problema da 3-Coloração Dado um grafo G(V, E), encontrar uma 3-coloração de 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: katia@cin.ufpe.br

  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” katia@cin.ufpe.br

  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 */ katia@cin.ufpe.br

  33. O Problema da 3-Coloração 1 3 2 ? 6 7 4 5 katia@cin.ufpe.br

  34. 1 3 2 6 7 4 5 O Problema da 3-Coloração katia@cin.ufpe.br

  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. katia@cin.ufpe.br

More Related