Backtracking. Backtracking

Documentos relacionados
Técnicas para Implementação de Jogos

Programação Dinâmica. Programação Dinâmica Partição de Inteiros. Programação Dinâmica Partição de Inteiros. Programação Dinâmica Partição de Inteiros

Algoritmos de retrocesso

MA12 - Unidade 12. Paulo Cezar Pinto Carvalho. 28 de Abril de 2013 PROFMAT - SBM

Algoritmo Minimax Russel and Norvig, AIMA slides

Algoritmos de retrocesso

Introdução à Análise Algoritmos

Método Guloso. Troco mínimo. Paulo Eustáquio Duarte Pinto (pauloedp arroba ime.uerj.br) junho/2012. Troco mínimo. Troco mínimo

SOLUÇÕES HEURÍSTICAS PARA O JOGO DE DAMAS

IME ALGORITMOS. Paulo Eustáquio Duarte Pinto

Jogos e Brincadeiras I. 1. Brincadeiras

Análise Combinatória

Busca Competitiva. Inteligência Artificial. Até aqui... Jogos vs. busca. Decisões ótimas em jogos 9/22/2010

5ª Lista de Exercícios de Programação I

Inteligência Artificial. 3º Quadrimestre de 2018

JOGOS Bruno Holanda, Fortaleza CE

HASHING HASHING HASHING HASHING. HASHING - Função hash - Propriedades HASHING. Notas de aula da disciplina IME Estruturas de Dados I

HASHING. Árvores de Busca: Atualização/Busca - caso médio: O(log n) Atualização/Busca - pior caso: O(log n)

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

Fundamentos de Inteligência Artificial [5COP099]

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

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

Soluções da Lista de Exercícios Unidade 4

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

Classificação Externa: Intercalação de Partições Classificadas

CTC-17 Inteligência Artificial Busca Competitiva e Busca Iterativa. Prof. Paulo André Castro

a) Defina em Prolog iguais/1, um predicado que recebe um estado do jogo e que verifica que todas as pilhas têm o mesmo número de peças.

Algoritmos Combinatórios: Sudoku via Backtracking e o Problema da Cobertura Exata

PROFESSORA: GEÓRGIA SOARES DISCIPLINA: EDUCAÇÃO FÍSICA CONTEÚDO: XADREZ AULA 2

MA14 - Aritmética Unidade 4 - Parte 2. Representação dos Números Inteiros (O Jogo de Nim)

Algoritmo Simplex para Programação Linear I

PROGRAMAÇÃO DE COMPUTADORES I BCC Aula Prática 15

Regras do jogo equipe de evolução de software /6/2006 versão 2.1

Árvore de Jogos Minimax e Poda Alfa-Beta

COMBINATÓRIA ELEMENTAR BASEADO EM TOWNSEND (1987), CAP. 2

Inteligência Artificial (SI 214) Aula 6 Busca com Adversário. Prof. Josenildo Silva

Jogos com Oponentes. Problemas de busca: não assumem a presença de um oponente

Á lgebra para intermedia rios Ma ximos, mí nimos e outras ideias u teis

BCC204 - Teoria dos Grafos

4. Corpos finitos. Aula 22 - Álgebra II. [Conclusão da aula anterior: exemplos de polinómios resolúveis e polinómios não resolúveis]

Otimização Combinatória - Parte 4

Técnicas de Desenho de Algoritmos

Classificação Externa: Intercalação de Partições Classificadas

Listagens & Relatórios

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

Algoritmos e Programação de Computadores

CEFET/RJ Disciplina: Inteligência Artificial Professor: Eduardo Bezerra Lista de exercícios 02

Referências: Notas de aulas do Prof. Silvio Alexandre de Araujo

Autómatos de Pilha. Cada transição é caracterizada pelo estado, símbolo que está ser lido e o elemento no topo da pilha. dados de entrada.

INTELIGÊNCIA ARTIFICIAL 2008/09

Jogos com Oponentes. Problemas de busca: não assumem a presença de um oponente

Jogos com Oponentes. March 7, 2018

jogos romanos jogos romanos

Jogo da Memória. Instruções. Dicas. Passo a passo

Programação de Computadores II TCC

21090 Programação e-fólio A 2016/2017. E-fólio A

Programação Dinâmica Partição de Inteiros

ENG1200 Mecânica Geral Semestre Lista de Exercícios 8 Centróides, Momentos de Inércia, Círculo de Mohr

Inteligência Artificial. Resolução de problemas por meio de algoritmos de busca. Aula VI Busca Competitiva

Jogo de Gamão. Introdução

Matemática Aplicada às Ciências Sociais- 11º ano (Versão: para o manual a partir de 2016/17)

QUESTÕES LÓGICAS INICIAIS

ISBN Apresentação

Problema de designação

Por que atributos irrelevantes são um problema Quais tipos de algoritmos de aprendizado são afetados Abordagens automáticas

Jogos com Oponentes. espaço de busca muito grande tempo para cada jogada

Microsoft Faculty Connection

UNIVERSIDADE FEDERAL DE ITAJUBÁ CANDIDATO: CURSO PRETENDIDO: SOLUÇÃO

Como começar a Jogar? Para iniciar o jogo a forma mais fácil é ir a e começar a jogar.

Projecto de Algoritmos e Estruturas de Dados

Jogos e Brincadeiras II

Problemas dos Círculos Matemáticos. Problemas extras para o Capítulo 4

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE MATEMÁTICA PROGRAMA DE PÓS-GRADUAÇÃO EM ENSINO DE MATEMÁTICA PRODUTO DA DISSERTAÇÃO

COMBINATÓRIA ELEMENTAR BASEADO EM TOWNSEND (1987), CAP. 2 O QUE É COMBINATÓRIA

Fernando Silva DCC-FCUP. Estruturas de Dados

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano.

Manual do KSquares. Matt Williams Revisor: Eugene Trounev Tradução: Luiz Fernando Ranghetti Tradução: André Marcelo Alvarenga

Contagem I. Figura 1: Abrindo uma Porta.

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE MATEMÁTICA PROGRAMA DE PÓS-GRADUAÇÃO EM ENSINO DE MATEMÁTICA

Buscas Informadas ou Heurísticas - Parte III

LAAB: Ludicidade Africana e Afrobrasileira.

MATERIAL: Tabuleiro e pinos (marcadores). São necessários 20 pinos para os cordeiros e 2 pinos para os tigres.

Aula de exercícios (21/05/2016) 1) (OBM) Três quadrados são colados pelos seus vértices entre si e a dois bastões verticais, como mostra a figura.

Material Teórico - Redução ao Primeiro Quadrante e Funções Trigonométricas. Paridade das Funções Seno e Cosseno. Primeiro Ano do Ensino Médio

Arquivos Seqüenciais: Intercalação

1ª Colocação 10 pontos. 2ª Colocação 08 pontos. 3ª Colocação 06 pontos

OLIMPÍADA DE MATEMÁTICA DO ESTADO DO RIO GRANDE DO NORTE LISTA SEMANAL N o 10 - Data 04/04/2016

Os métodos de ordenação que ordenam os elementos in situ podem ser classificados em três principais categorias:

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO SISTEMAS DE GESTÃO DE BASE DE DADOS RELATÓRIOS

PEGUE 10. Quantidade: 08 unidades

SCC Modelagem Computacional em Grafos Profª Rosane Minghim 1º sem ª lista de exercícios

Capítulo 9: Linguagens sensíveis ao contexto e autômatos linearmente limitados.

Teoria da Computação. Complexidade computacional classes de problemas

Módulo 2 Gestão de Base

Jogos. Geralmente o oponente tentará, na medida do possível, fazer o movimento menos benéfico para o adversário.

NOTAS DE AULA 1 METAHEURÍSTICA 13/10/2016

Implementação e Avaliação do Algoritmo MCTS-UCT para o jogo Chinese Checkers. Jhonny Moreira

Transcrição:

Notas de aula da disciplina IME 0-0 ALGORITMOS E ESTRUTURAS DE DADOS II Paulo Eustáquio Duarte Pinto (pauloedp arroba ime.uerj.br) É uma técnica de solução de problemas (construção de algoritmos) que eamina o espaço de soluções de forma eaustiva, mas abandonando famílias de caminhos tão logo alguma inviabilidade seja determinada (eaustão inteligente). É particularmente aplicável a problemas NP-Completos. fevereiro/0 Quando um caminho é inviável, VOLTAR para caminhos promissores!!! BANQUETE Quer-se distribuir n convidados em volta de uma mesa, tal que inimigos não sentem lado a lado. Eemplo: n =. Lula Obama Luana Piovani Dado Dolabela Pelé Maradona... P: Como fazer? R: Tentar de todas as maneiras... mas de forma inteligente... BANQUETE Este é um problema NP-Completo. A solução é tentar de todas as maneiras possíveis (todas as permutações circulares de a n).. Lula. L.Piovani. Obama. D. Dolabela. Pelé. Maradona........ Permutações circulares:...... Geração de Permutações Listar todas as n! permutações de um conjunto Geração de Permutações - Versão Listar todas as n! permutações de um conjunto Perm: Para i de a n: Se (i P) Então P P + i; Se ( P = n) Então Perm; P P - i; P ; Perm; Perm: Para i de a n: Se (not S[i]) Então np np + ; P[np] i; S[i] V; Se (np = n) Então Perm; np np - ; S[i] F; S[*] F; np 0; Perm;

- Geração de Permutações n = i = - Geração de Permutações n = i = i =, i =, {,} i =,, {,,} i =,, - Geração de Permutações n = i = - Geração de Permutações n = i = i =,, i =,, {,} i =,, {,} i =, {,} i =,, {,,} i =, - Geração de Permutações n = i =,, i =,, i =,, i =,, {,} {,} {,} {,} i =,, i =,, i =,, i =,, {,} {,} i =,, i =,, Geração de Permutações - Torres Pacíficas Problema: colocar torres num tabuleiro tal que as torres não se ataquem. Solução: cada permutação dos números a é uma solução distinta! (em cada linha a torre deve ser colocada na coluna indicada pelo i-ésimo elemento da permutação).

Geração de Permutações - Torres Pacíficas Solução relativa à permutação. Geração de Arranjos - A(n, q) Basta modificar uma instrução do algoritmo para geração de Permutações!!! Arranjo: Para i de a n: Se (not S[i]) Então np np + ; P[np] i; S[i] V; Se (np = q) Então Arranjo; np np - ; S[i] F; S[*] F; np 0; Arranjo; Geração de Permutações circulares Basta fiar o último elemento da permutação e gerar as permutações para n- elementos!!! PermCircular: Para i de a n-: Se (not S[i]) Então np np + ; P[np] i; S[i] V; Se (np = (n-)) Então PermCircular; np np - ; S[i] F; Geração de Combinações - C(n, q) Gera-se arranjos ordenados (um novo elemento só entra no arranjo se > último). Usa-se sentinela na posição 0. Não é mais necessári conjunto S. Comb: Para i de a n: Se (i > P[np]) Então np np + ; P[np] i; Se (np = q) Então Comb; np np - ; S[*] F; np 0; P[n] n; PermCircular; np 0; P[0] 0; Comb; Geração de Combinações - C(n, q) - Versão Usa-se um parâmetro para indicar os elementos que podem entrar na configuração. Comb (t): Para i de t a n: np np + ; P[np] i; Se (np = q) Então Comb (i+); np np - ; np 0; Comb(); Esquema Geral para Quase sempre bjetivo da técnica é eibir uma ou mais configurações de determinados conjuntos. O esquema a seguir aplica-se nesses casos. Config: Para cada elemento e i do conjunto: Se e i pode ser acrescentado à configuração Então Acrescentar e i à configuração. Se a configuração está completa Então Config; Retirar e i da configuração. Esvaziar configuração; Config;

Damas Pacíficas Problema: colocar Damas num tabuleiro tal que as Damas não se ataquem. Solução: usar o esquema geral. sempre se consegue colocar n Damas em um tabuleiro n n, para n >. Obs: Eistem 9 soluções distintas para um tabuleiro. Damas Pacíficas Eemplo de uma solução para n =. Damas Pacíficas Damas_Pacíficas: Para c de a : Se Possivel(l +, c) Então l l + ; P[l] c; Se (l = ) Então Imprimir P Damas_Pacificas; l l - ; Damas Pacíficas Eercício: simular as primeiras soluções para um tabuleiro de ou. l 0; Damas_Pacificas; Resta (Chinese Checkers) O objetivo é "comer" os pinos, deiando só um pino no tabuleiro Eight (Versão reduzida do ) O objetivo é deiar os números ordenados de a, por linha. Solução por : Tentar movimentar os pinos de todas as maneiras. (Entretanto só funciona bem para versões reduzidas...). Solução por : Movimentar o buraco de todas as maneiras, mas... guardar as configurações já consideradas...

Problema do Percurso do Cavalo O objetivo é fazer o cavalo "passar" por todas as casas do tabuleiro, sem repetições. Solução por : Sudoku O objetivo é completar o preenchimento da matriz tal que, em cada linha, coluna e mini-grid haja uma permutação dos números a 9. Movimentar o cavalo de todas as maneiras, mas... funciona melhor se ordenar convenientemente as possibilidades... 9 9 Solução por : Tentar, em cada posição vaga, os números a 9 que não conflitem com os já preenchidos. Geração de Subconjuntos Número de subconjuntos de C = {c... c n } = n GeraSub (t): Para i de t a n: ns ns + ; S[ns] i; ; Se (i < n) Então GeraSub (i + ); ns ns - ; ns 0; GeraSub (); - Geração de Subconjuntos C = {a, b, c, d} {,} i =,,, {,,} i =,, i =, i = {,,,} {,,} {,} {,,} {,} {, } {, } {, } {,} i =, i = i = {,,} {,} {,, } i =. {,} Geração de Subconjuntos Subconjuntos gerados para: { a, b, c, d } { a }, { b }, { a, b }, { b, c }, { a, b, c }, { b, c, d }, { a, b, c, d }, { b, d }, { a, b, d }, { c }, { a, c }, { c, d }, { a, c, d }, { d } { a, d }, Geração de Subconjuntos Eercício: modificar o algoritmo de geração de subconjuntos para que a geração seja por ordem de tamanho dos subconjuntos.

- Soma de Subconjuntos - Soma de Subconjuntos Problema: Dado um conjunto de números, obter os subconjuntos tal que a soma dos seus elementos seja igual a um valor dado, s. Eemplo: C = {0,,,,, 9, 9}, s = 0 Soluções: 0, + O problema Partição é um caso particular deste. SomaSub (t): i t; Enquanto (i n) e ((soma + C[i]) s): ns ns + ; S[ns] i; soma soma + C[i]; Se (soma = s) Então SomaSub (i+); ns ns - ; soma soma - C[i]; i i + ; Fe; ns 0; soma 0; Ordena C; SomaSub (); - Soma de Subconjuntos C = {,,,,,, 9}, s = i =,,, i = i =,,,,,, i = i = - Partição Aproimada Problema: Particionar um conjunto de números, em outros, tal que a diferença entre suas somas seja mínima. Eemplo: C = {0,,,,, 9, 9} {, } i = {, } i = Solução: {,, 9, 0} e {,, 9}, c/ diferença de,,. O problema Partição é um caso particular deste. Partição Aproimada Part_apro (t): i t; Enquanto (i n) e ((soma +C[i]) < msmp): ns ns + ; S[ns] i; soma soma + C[i]; Se (abs(tot - *soma) < dif) Então Guarda; dif abs(tot - *soma); msmp ma(soma, tot-soma); Part_apro (i + ); ns ns - ; soma soma - C[i]; i i + ; Fe; Ordena C; soma C[]; ns ; S[] ; Guarda; tot ΣC[i]; dif tot-*c[]; msmp ma(c[],tot-c[]); Part_aproimada(); solução guardada;. - Partição aproimada C = {,,,, }, tot = 0, msmp = 99, dif = 9 Part/candidato {, } {,,} soma {,,,} 0 {,,} {, } {,,} {, } {, } {, } 0 9 tot- *soma 9 0 0 msmp dif 99 9 Melhor partição {, } 9 {,, } 0 {,,, } {,, }

Partição Aproimada Eercício: mostrar a Partição Aproimada do conjunto {,, 9, 0, }, Eercício: mostrar a Partição Aproimada do conjunto {,,, 0} - Jogos Árvore de jogo Em jogos de turno pode-se construir a árvore de jogo, para se avaliar a melhor jogada a fazer a cada momento. A árvore de jogo é construída com, para se verificar todas as possibilidades. Depois a árvore é avaliada com a técnica MaMin. o A() - Jogos Árvore de jogo do Jogo da Velha o P o o o o o D H(0) B o o E(-) F I(0) C o o o o o o o o o o o G J() o o o o o o o o - Jogos Avaliação da Árvore de jogo - A() o D(0) H(0) P() B(-) B E(-) F(0) I(0) C(0) C G() J() - Jogos Avaliação da Árvore de jogo - Avalia_arv (F, Modo); Se (F é folha) Então Retornar (Calcula_valor(F)); Se (Modo = ) Então Valor - Valor ; Para cada filho w de F: Se (Modo = ) Então Valor ma (Valor, Avalia_arv(w, )); Valor min (Valor, Avalia_arv(w, )); Retornar Valor; - Jogos EXERCÍCIO DESENHAR e AVALIAR a árvore de jogo para o Jogo dos Palitos, entre competidores: São dados palitos e cada um deve tirar, alternadamente, de a palitos. Ganha o que tirar o último palito.

- Jogos Criação/avaliação da Árvore de jogo - Criaavalia_arv (Modo); Se (configuração é final) Então Retornar (Calcula_valor); Se (Modo = ) Então Valor - Valor ; Para cada possível modificação na configuração: Modifica a configuração; Se (Modo = ) Então Valor ma (Valor, Criaavalia_arv( )); Valor min (Valor, Criaavalia_arv( )); Restaura configuração; Retornar Valor; - Jogos Memorização Na criação/avaliação simultânea da árvore de jogo pode-se (deve-se) usar memorização, simplificando a construção da árvore. No eemplo abaio para o jogo com palitos, ao se cria ro segundo nó de valor em nível de mínimo, usa-se a avaliação já feita. (-)... (-) - Jogos Poda de Simetria Nos jogos de turnos, onde, dada uma configuração, as jogadas são as mesmas para qualquer um dos dois jogadores que vai jogar, pode-se aplicar a poda por simetria, derivada do princípio de que, para essas situações: T(, ) = -T(, ), onde é uma dada configuração e T a avaliação de determinado nó. Considere, por eemplo, a árvore de jogo para o jogo de palitos com palitos inicialmente. A árvore de jogo da página seguinte foi criada usando-se esse princípio. - Jogos Jogo dos palitos para n =. Criação e avaliação usando poda de simetria (-) (-) (-) (-) 0 0 0 (-) (-) () () () (-) - Jogos Poda de Valor limite Na criação/avaliação simultâneas da árvore de jognde há um valor limite para avaliação, pára-se de construir a árvore quando esse valor limite é obtido. Ordenação de configurações As diversas podas podem tirar partido do fato de que a ordem das configurações do pode ser arbitrada para o que for conveniente para cada problema. Na próima página é mostrada a árvore de jogo para palitos usando as podas de valor limite e simetria, escolhendo-se a ordem da retirada de palitos conveniente. - Jogos Jogo dos palitos para n =. Criação e avaliação usando podas de valor limite e simetria, com ordenação conveniente da retirada de palitos () () () () 0 0 0 () () () ()

- Jogos Poda Heurística - Jogos Árvore de jogo Poda Heurística Em muitas situações (jogo de adrez, damas, gamão, por eemplo), não é possível criar toda a árvore de jogo. Então cria-se um certo número de níveis da árvore e faz-se a avaliação heurística das folhas e avalia-se a árvore com. - - - 9 - - - - Jogos - Jogos Poda Alfa-Beta A poda alfa-beta permite simplificar a criação da árvore. É uma etensão da poda de valor limite e é usada em geral, para jogos compleos tais como adrez, damas, gamão. Na chamada para criação/avaliação são passados dois parâmetros (alfa/beta). No nível de máimo, o parâmetro beta indica o valor mínimo atingido por algum filho do nível anterior. Se algum filho do nível atual atingir ou superar esse valor, pode-se parar a avaliação do nó atual. Árvore de jogo Poda Alfa-Beta p/ jogos compleos - Jogos Avaliação da Árvore de jogo - Alfabeta - Jogos Árvore de jogo Poda Alfa-Beta Avalia_arv (F, Modo, α, β); Se (F é folha) Então Retornar (Calcula_valor(F)); Para cada filho w de F: Se (Modo = ) Então v ma (α, Avalia_arv(w,, α, β)); Se (v β ) Então Retornar β; α v; v min (β, Avalia_arv(w,, α, β)); Se (v α ) Então Retornar α; β v; Retornar v; Avalia_Arv(T,, -, ) (-, ) (, ) 9

- Jogos Jogo de adrez Técnicas usadas: -Poda heurística -Memorização -Poda alfa-beta -Aprodundamento desigual -Busca aquiescente -Livro de aberturas -Bancos de Dados de finais FIM ICE: http://www.nn.kit.net/ice/ Thinking machine: http://www.turbulence.org/spotlight/thinking/chess.html 0