Algoritmos Tentativa e Erro (Backtracking) Prof.: Jonas Potros

Documentos relacionados
Tentativa e Erro (Backtracking)

Programação de Computadores II TCC

Recursividade Exaustiva e Backtracking

CTC-17 Inteligência Artificial Problema de Satisfação de Restrições. Prof. Paulo André Castro

Problemas e Estratégias. March 31, 2016

Inteligência Artificial

Backtracking. Túlio Toffolo Marco Antônio Carvalho BCC402 Aula 10 Algoritmos e Programação Avançada

Análise e Complexidade de Algoritmos

Problema das n rainhas AULA 19. Soluções. Problema das 8 rainhas. Problema das 8 rainhas

Exemplos. Jogo dos oito :-) Mundo dos blocos (ex: torre de Hanoi) Poblema das rainhas. Criptoaritmética. Missionários e Canibais.

Buscas Informadas ou Heurísticas - Parte II

INF01056 Aula 07/08 Backtracking. Baseado no livro Programming Challenges

Sistemas Inteligentes / Inteligência Artificial, Outros Métodos de Procura

Inteligência Artificial. Estratégias de Busca Outros. Huei Diana Lee

Problema das n rainhas

Inteligência Artificial

Grafos IFRN. Prof. Robinson Alves

Problema das n rainhas AULA 24. Soluções. Problema das 8 rainhas. Problema das 8 rainhas

Lista de exercícios 1

Departamento de Ciência de Computadores - FCUP Primeiro Teste de Inteligência Artificial / Sistemas Inteligentes (Duração: 2 horas)

Satisfação de Restrições. Capítulo 5 (disponível online)

Técnicas Inteligência Artificial

Projeto e Análise de Algoritmos

Problema de Satisfação de Restrições. Problema de Satisfação de Restrições. Grafo de restrições. Exemplo: 4 Rainhas como um PSR

Problema de Satisfação de Restrições

Satisfação de Restrições. Capítulo 5 (disponível online)

BCC204 - Teoria dos Grafos

Projeto e Análise de Algoritmos Projeto de Algoritmos Tentativa e Erro. Prof. Humberto Brandão humberto@bcc.unifal-mg.edu.br

Resolução de problemas por meio de busca. Capítulo 3 Inteligência Artificial Sistemas de Informação

Inteligência Artificial. Prof. Tiago A. E. Ferreira Aula 5 Resolvendo Problemas

Algoritmos e Estruturas de Dados I

Paradigmas de Projetos de Algoritmos

Introdução Paradigmas

Introdução à Resolução de Problemas por meio de Busca

Técnicas Inteligência Artificial

Problemas de Satisfação de Restrições 03/05/2012

Problemas de Satisfação de Restrições

Redes Neurais (Inteligência Artificial)

SCC Introdução à Ciência de Computação II. Recursão

SCC0601 Projeto de Algoritmos. Recursão

Resolução de Problemas através de Busca. Prof. Júlio Cesar Nievola PPGIA - PUC-PR

Introdução 1. Um espaço de estados possíveis, incluindo um estado inicial e um estado final(objetivo): Introdução

Análise Combinatória

SCC-210 Algoritmos Avançados

PCS Gabarito da 1a. lista

Programação por restrições. Luiz Henrique Cherri Thiago Queiroz

Teoria dos Grafos Aula 6

Resolução de Problemas. Universidade Católica de Pelotas Engenharia da Computação Disciplina: Inteligência Artificial

Resolução de Problemas

Ex. 1) Considere que a árvore seguinte corresponde a uma parte do espaço de estados de um jogo de dois agentes: f=7 f=7 f=1 f=2

Paradigmas de Projeto de Algoritmos

Inteligência Artificial - IA. Resolução de problemas por meio de busca

Resolução de Problemas de Busca

Algoritmos Gulosos. Norton T. Roman

RESOLUÇÃO DE PROBLEMAS POR MEIO DE BUSCA (PARTE 1) *Capítulo 3 (Russel & Norvig)

Inteligência Artificial (SI 214) Aula 5 Problemas de Satisfação de Restrições

Algoritmos e Programação de Computadores

Estruturas de Dados. Cristina Gomes Fernandes. Estruturas de Dados p. 1

Inteligência Artificial

Projeto e Análise de Algoritmos Projeto de Algoritmos Tentativa e Erro Parte 2. Prof. Humberto Brandão humberto@bcc.unifal-mg.edu.

Busca com informação e exploração. Inteligência Artificial. Revisão da aula passada: Heurística Admissível. Revisão da aula passada: Busca A *

Relatório de Inteligência Artificial

Busca em Espaço de Estados a

Aula 9 Matrizes Cleverton Hentz

14 Projeto de Algoritmos: paradigmas SCC201/501 - Introdução à Ciência de Computação II

IA: Problemas de Satisfação de Restrições. Prof. Msc. Ricardo Britto DIE-UFPI

Inteligência Artificial

Busca Local. Texto base: Stuart Russel e Peter Norving - Inteligência Artificial

Algoritmo Aproximado. Prof. Anderson Almeida Ferreira [DPV]9.2 [ZIV]9.2.2 e 9.2.3

PCS Inteligência Artificial

CIC 111 Análise e Projeto de Algoritmos II

ANÁLISE DE ALGORITMOS (INF 1721)

Revisão: Tipo Abstrato de Dados Recursividade

Jogos com Oponentes. March 7, 2018

Inteligência Artificial PCS3438. Escola Politécnica da USP Engenharia de Computação (PCS)

PROGRAMAÇÃO E ALGORITMOS (LEII) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2016/2017

Ciclos hamiltonianos e o problema do caixeiro viajante

Teoria da Computação. Aula 4 Técnicas de Análise 5COP096. Aula 4 Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr

Algoritmos e Estruturas de Dados I Linguagem C

Classes, Herança e Interfaces

Resolução de Problemas

ESCOLA POLITÉCNICA DA UNIVERSIDADE DE SÃO PAULO GABARITO

UNIVERSIDADE FEDERAL DO PARANÁ Nível 1 - POTI Aula 1 - Combinatória

Agentes que resolvem problemas. Resolução de Problemas. Objectivo. Objectivo

Introdução à Programação

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches

Métodos de Busca. Estratégias de Busca Cega

Problemas de Satisfação de Restrições

LINGUAGEM C++ Prof. Bruno Gomes ESTRUTURAS DE DADOS HOMOGÊNEAS PARTE II - MATRIZES. Currais Novos, 2011

Redução de Problemas Estratégia de busca outras abordagens

SCC Capítulo 6 Paradigmas e Técnicas de Projetos de Algoritmos

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches

Aula 13: Branch-and-bound

Satisfação de Restrições. Capítulo 5 (disponível online)

Árvores Binárias. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich

O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste

Resolução de problemas por meio de busca. Prof. Pedro Luiz Santos Serra

Inteligência Artificial

Transcrição:

1 Algoritmos Tentativa e Erro (Backtracking) Prof.: Jonas Potros

Tentativa e Erro 2 Tentativa e erro: decompor o processo em um número finito de subtarefas parciais que devem ser exploradas exaustivamente. O processo de tentativa gradualmente constrói e percorre uma árvore de subtarefas.

Tentativa e Erro 3 Passos: Escolher uma operação plausível; Executar a operação com os dados; Se a meta não foi alcançada, repita o processo até que se atinja a meta ou se evidencie a insolubilidade do problema. Algoritmos tentativa e erro não seguem regra fixa de computação: Passos em direção à solução final são testados e registrados; Caso esses passos tomados não levem à solução final, eles podem ser retirados e apagados do registro.

Tentativa e Erro 4 Quando a pesquisa na árvore de soluções cresce rapidamente, sendo preciso usar algoritmos aproximados ou heurísticas que não garantem a solução ótima mas são rápidos. Tentativa e erro é uma técnica que utiliza recursividade. Esta pode ser usada para resolver problemas cuja solução é do tipo tentar todas as alternativas possíveis.

Exemplo: Labirinto 5 Em cada interseção, você tem que decidir se: Segue direto Vai à esquerda Vai à direita Você não tem informação suficiente para escolher corretamente; Cada escolha leva a outro conjunto de escolhas; Uma ou mais sequência de escolhas pode ser a solução.

Exemplo: Passeio do Cavalo 6 Tabuleiro com n x n posições: cavalo movimenta-se segundo as regras do xadrez (parece a letra L). Problema: a partir de (, ), encontrar, se existir, um passeio do cavalo com n² - 1 movimentos, tal que todos os pontos do tabuleiro são visitados uma única vez.

Backtracking 7 Técnica em procedimentos de busca que corresponde ao retorno de uma exploração. Ex: 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.

Código 8 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 ; // Final C não pode ser global Depende do problema

Exemplo: Kakuro 9 Jogo de raciocínio lógico, considerado mais difícil que o Sudoku. É um desafio aliciante para quem aprecia Sudoku. Joga-se igualmente com números, de 1 a 9, não podendo repetir os valores na linha nem na coluna. Requer perícia, prática e muita paciência.

Problemas de Satisfação de Restrições 10 Um Problemas de Satisfação de Restrições é definido por: um conjunto de variáveis de decisão {,,, } um conjunto de restrições {,,, } um domínio de valores possíveis, para cada variável, com i =1,..., n; Uma solução ao PSR é quando todas as variáveis possuem valores dentro de seus domínios e nenhuma restrição é violada.

Exemplo: Coloração de Mapas 11 Variáveis: WA, NT, Q, NSW, V, SA, T Domínio: = { vermelho, verde, azul } i = 1,, 7 Restrições: Regiões vizinhas devem ter cores diferentes

Exemplo: Coloração de Mapas 12 Obs.: Tasmânia é um subproblema independente; Como identificar que existem problemas independentes? Componentes fortemente conectados...

Exemplo: Coloração de Mapas 13 Soluções: São atribuições que satisfazem todas as restrições Ex.: { WA=vermelho, NT=verde, Q=vermelho, NSW=verde, Victoria=vermelho, SA=azul, T=verde }

Exemplo: Árvore de Busca Coloração de Mapas 14

Especialização do Backtracking 15 Forward-checking (VERIFICAÇÃO PRÉVIA) Em um PSR, uma maneira de utilizar melhor as restrições durante a busca é a chamada verificação prévia (forward-checking); Sempre que uma variável X é atribuída, o processo de verificação prévia examina cada variável não atribuída Y que está conectada a X por uma restrição; A partir daí, é excluído do domínio de X, qualquer valor que esteja inconsistente com o valor escolhido para Y;

Forward-checking 16

Forward-checking 17

Forward-checking 18

Forward-checking 19

Forward-checking 20

Forward-checking 21

Forward-checking 22

Problema das N-Rainhas Definição Colocar N rainhas em um tabuleiro N x N de forma que nenhuma seja atacada pelas outras. A forma geral de uma solução é uma permutação de um vetor de inteiros [1,..., N]. A solução para o problema de 8 rainhas mostrada abaixo é representada pelo vetor [4, 2, 7, 3, 6, 8, 5, 1].

Exercício: Problema das N-Rainhas 24