Jogo de Damas Embarcado Multinível



Documentos relacionados
IA: Busca Competitiva. Ricardo Britto DIE-UFPI

Arquitetura de Rede de Computadores

Dadas a base e a altura de um triangulo, determinar sua área.

Jogos vs. Problemas de Procura

1. CAPÍTULO COMPUTADORES

DECODIFICADOR DE DISPLAY DE 7 SEGMENTOS COM LATCH

MRP II. Planejamento e Controle da Produção 3 professor Muris Lage Junior

ULA Sinais de Controle enviados pela UC

2. Representação Numérica

Trabalho de Implementação Jogo Reversi

Soluções Nível 1 5 a e 6 a séries (6º e 7º anos) do Ensino Fundamental

MUDANÇAS NA ISO 9001: A VERSÃO 2015

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

Resolução da lista de exercícios de casos de uso

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

BARRAMENTO DO SISTEMA

Aula 26: Arquiteturas RISC vs. CISC

Jogos - aula 2. Xadrez chinês. Exemplo de função de avaliação:

MÓDULO 6 INTRODUÇÃO À PROBABILIDADE

Jogo de Tabuleiro - Mancala Relatório Final

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

A idéia hardware sugerida é colocar a placa entre o PC e o microcontrolador, conforme mostrado no esquema abaixo.

Aqui você também vai encontrar o botão ""Autocompletar"", que ajuda na criação do alinhamento, caso você não consiga se decidir.

O ESPAÇO NULO DE A: RESOLVENDO AX = 0 3.2

Estabilizada de. PdP. Autor: Luís Fernando Patsko Nível: Intermediário Criação: 22/02/2006 Última versão: 18/12/2006

Notas da Aula 17 - Fundamentos de Sistemas Operacionais

Exercícios Teóricos Resolvidos

Memórias Prof. Galvez Gonçalves

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.

Disciplina: Introdução à Informática Profª Érica Barcelos

Sistemas Computacionais II Professor Frederico Sauer

1.1. Organização de um Sistema Computacional

1. Introdução. Avaliação de Usabilidade Página 1

Sistema de Computação

x0 = 1 x n = 3x n 1 x k x k 1 Quantas são as sequências com n letras, cada uma igual a a, b ou c, de modo que não há duas letras a seguidas?

Memórias. O que são Memórias de Semicondutores? São componentes capazes de armazenar informações Binárias (0s e 1s)

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

4 Segmentação Algoritmo proposto

1. NÍVEL CONVENCIONAL DE MÁQUINA

Hoje estou elétrico!

Testador de cabos de rede


Ao longo do presente capítulo será apresentada uma descrição introdutória da tecnologia FPGA e dos módulos básicos que a constitui.

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

Computadores XXI: Busca e execução Final

Programação em BASIC para o PIC Mostrando Mensagens no Display LCD Vitor Amadeu Souza

Módulo 4. Construindo uma solução OLAP

Algoritmos. Objetivo principal: explicar que a mesma ação pode ser realizada de várias maneiras, e que às vezes umas são melhores que outras.

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ

Sistemas Operacionais

3. Arquitetura Básica do Computador

Universidade Federal da Paraíba Centro de Ciências Exatas e da Natureza Departamento de Informática

Conheça o 4017 (ART062)

R S Q Tabela 17 - Tabela verdade NOR

2 Diagrama de Caso de Uso

1) MANUAL DO INTEGRADOR Este documento, destinado aos instaladores do sistema, com informações de configuração.

PR 2 PROCEDIMENTO. Auditoria Interna. Revisão - 2 Página: 1 de 9

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Algoritmos e Estrutura de Dados III. Árvores

Capacidade = 512 x 300 x x 2 x 5 = ,72 GB

CAPÍTULO 2 CARACTERÍSTICAS DE E/S E PORTA PARALELA

Processadores. Guilherme Pontes

Guia de utilização do software. universal GPRS M-300.

XXXVI OLIMPÍADA PAULISTA DE MATEMÁTICA Prova da Primeira Fase (11 de agosto de 2012) Nível (6 o e 7 o anos do Ensino Fundamental)

FACULDADE DE ENGENHARIA DE COMPUTAÇÃO. PROJETO FINAL I e II PLANO DE TRABALHO <NOME DO TRABALHO> <Nome do Aluno> <Nome do Orientador>

GUIA DE CURSO. Tecnologia em Sistemas de Informação. Tecnologia em Desenvolvimento Web. Tecnologia em Análise e Desenvolvimento de Sistemas

Computadores de Programação (MAB353)

Correlação e Regressão Linear

Engenharia de Software III

Feature-Driven Development

AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS

Pesquisas e Contagens

Memória Cache. Prof. Leonardo Barreto Campos 1

IW10. Rev.: 02. Especificações Técnicas

APOO Análise e Projeto Orientado a Objetos. Requisitos

ARQUITETURA DE COMPUTADORES - CONCEITUAL

Fração como porcentagem. Sexto Ano do Ensino Fundamental. Autor: Prof. Francisco Bruno Holanda Revisor: Prof. Antonio Caminha M.

4 Avaliação Econômica

Arquiteturas RISC. (Reduced Instructions Set Computers)

SISTEMA INTEGRADO DE GESTÃO ACADÊMICA

Funções de Posicionamento para Controle de Eixos

Algoritmos: Lógica para desenvolvimento de programação de computadores. Autor: José Augusto Manzano. Capítulo 1 Abordagem Contextual

TRANSMISSÃO DE DADOS Prof. Ricardo Rodrigues Barcelar

4 Arquitetura básica de um analisador de elementos de redes

Documento Explicativo

Programação Básica em STEP 7 Operações Binárias. SITRAIN Training for Automation and Drives. Página 6-1

ARQUITETURA DE COMPUTADORES

Entendendo como funciona o NAT

Metodologias de Desenvolvimento de Sistemas. Analise de Sistemas I UNIPAC Rodrigo Videschi

ACENDENDO AS LUZES. Capitulo 2 - Aula 1 Livro: Arduino básico Tutor: Wivissom Fayvre

Introdução. INF1005 Programação I 33K Prof. Gustavo Moreira gmoreira@inf.puc-rio.br

Alarme Automotivo com mensagem para móvel utilizando Arduino

28/9/2010. Paralelismo no nível de instruções Processadores superescalares

Poliminós e o Tabuleiro de Xadrez Prof. Onofre Campos (onofrecampos@secrel.com.br) Prof. Carlos Shine (cyshine@yahoo.com)

SISTEMAS INTEGRADOS DE GESTÃO PAS 99:2006. Especificação de requisitos comuns de sistemas de gestão como estrutura para a integração

Transcrição:

Centro Universitário Positivo - UnicenP Núcleo de Ciências Exatas e Tecnológicas NCET Engenharia da Computação Christiano Grillo Justus Jogo de Damas Embarcado Multinível Curitiba 2006

Centro Universitário Positivo - UnicenP Núcleo de Ciências Exatas e Tecnológicas NCET Engenharia da Computação Christiano Grillo Justus Jogo de Damas Embarcado Multinível Monografia apresentada à disciplina de Projeto Final, como requisito parcial à conclusão do Curso de Engenharia da Computação. Orientador: Profª. Adriana Thomé Curitiba 2006

Termo de Aprovação Christiano Grillo Justus Jogo de Damas Embarcado Multinível Monografia aprovada como requisito parcial à conclusão do curso de Engenharia da Computação do Centro Universitário Positivo, pela seguinte banca examinadora: Professora Adriana Cursino Thomé Orientadora Professor Nestor Cortez Saavedra Filho Membro Professor Alessandro Zimmer Membro Curitiba, 9 de fevereiro de 2007

Agradecimentos Agradeço aos meus pais, André Justus Neto e Licia Carolina B. Grillo Justus, pela oportunidade que me ofereceram de cursar uma faculdade, no auxilio na construção do projeto e pela paciência por agüentarem a constante bagunça. Meus amigos e colegas de classe, principalmente os mais próximos por me ajudarem, passando confiança e descontração nos momentos difíceis. A minha orientadora Adriana Cursino Thomé, por ter confiado este projeto a mim, sempre me guiando na direção certa, nos momentos em que me encontrava perdido. E a todos os professores, pelos ensinamentos transmitidos durante esses anos, que direta ou indiretamente foram fundamentais para a elaboração deste projeto.

Sumário Lista de Figuras...7 Lista de Tabelas...9 Lista de Siglas... 10 Resumo... 11 Abstract... 12 1. Introdução... 13 1.1. Introdução ao tema do projeto... 13 1.2. Motivação do desenvolvimento... 13 1.3. Metas a serem alcançadas... 14 2. Estudo Teórico... 15 2.1. Teoria dos jogos... 15 2.2. O Jogo de Damas... 17 2.3. Regras do jogo de damas... 19 2.4. Decisões ótimas em jogos... 25 2.4.1. Árvore do jogo... 25 2.4.2. Estratégias ótimas... 26 2.4.3. O algoritmo minimax... 28 2.4.4. Poda alfa-beta... 30 2.4.5. Decisões imperfeitas em tempo real... 34 2.4.5.1. Funções de avaliação......34 2.4.5.2. Busca com corte...37 2.5. Microcontrolador... 38 2.6. Display LCD... 38 2.7. Diodo emissor de luz... 40 3. Descrição... 41 3.1. Arquitetura AVR... 42 4. Especificação do hardware... 43 4.1. Funções do hardware... 43 4.1.1. Matriz de contatos... 44 4.2. Componentes utilizados... 46 4.3. Tabela de custos... 47 4.4. Requisitos de hardware... 48 Página 5

4.5. Configurando o chip... 49 4.6. Diagramas em blocos... 50 5. Especificação do software... 51 5.1. Ambiente e linguagem de desenvolvimento... 51 5.2. Interface com o usuário... 51 5.3. Diagrama de contexto... 51 5.4. Diagrama de fluxo de dados... 52 5.5. Diagrama de estados... 53 5.6. Fluxograma... 53 6. Especificação da validação do projeto... 55 7. Resultados... 56 7.1. Hardware... 56 7.2. Software... 57 8. Conclusão... 58 9. Referências Bibliográficas... 60 10. Anexo Cronograma...Erro! Indicador não definido. 11. Anexo Diagrama em blocos do chip Atmega64...Erro! Indicador não definido. 12. Anexo Esquemático do microcontrolador...erro! Indicador não definido. 13. Anexo Esquemático da matriz de contatos..erro! Indicador não definido. 14. Anexo Esquemático da matriz de leds...erro! Indicador não definido. 15. Anexo Esquemático do gravador...erro! Indicador não definido. 16. Anexo Esquemático da fonte...erro! Indicador não definido. Página 6

Lista de Figuras Figura 2.1 - Tabuleiro 1... 20 Figura 2.2 - Tabuleiro 2... 20 Figura 2.3 - Tabuleiro 3... 21 Figura 2.4 - Tabuleiro 4... 21 Figura 2.5 - Tabuleiro 5... 22 Figura 2.6 - Tabuleiro 6... 22 Figura 2.7 - Tabuleiro 7... 22 Figura 2.8 - Tabuleiro 8... 23 Figura 2.9 - Tabuleiro 9... 23 Figura 2.10 - Tabuleiro 10.... 24 Figura 2.11 - Tabuleiro 11.... 24 Figura 2.12 Árvore de busca (parcial) para o jogo da velha... 26 Figura 2.13 Árvore do jogo de duas jogadas.... 28 Figura 2.14 Árvore do jogo de duas jogadas utilizando poda alfa -beta... 31 Figura 2.15 Poda alfa-beta... 33 Figura 2.16 Peso das casas na heurística posicional... 36 Figura 2.17 Display LCD... 40 Figura 2.18 - Diodo emissor de luz (LED)... 41 Figura 3.1 Módulos do hardware... 41 Figura 4.1 Sistema de encaixe das peças no tabuleiro... 43 Figura 4.2 Foto do contato de uma das casas... 43 Figura 4.3 Matriz de contatos.... 44 Figura 4.4 Exemplo de funcionamento da matriz de contatos.... 45 Figura 4.5 Pinagem do chip Atmega64... 48 Figura 4.6 Circuito para transferência de dados pelo paralela... 49 Figura 4.7 Diagrama em blocos do sistema... 50 Figura 5.1 Diagrama de contexto... 51 Figura 5.2 Diagrama de fluxo de dados (DFD).... 52 Figura 5.3 Diagrama de estados.... 53 Figura 5.4 Fluxograma... 54 Figura 6.1 - Criança realizando uma jogada... 55 Página 7

Figura 6.2 - Crianças interagindo com o tabuleiro... 55 Figura 7.1 Placa do circuito da matriz de leds.... 56 Figura 7.2 Placa do circuito de leitura/escrita do microcontrolador... 56 Figura 7.3 Tabuleiro.... 57 Figura 10.1 - Cronograma do projeto...erro! Indicador não definido. Figura 11.1 - Diagrama em blocos do chip Atmega64... Erro! Indicador não definido. Figura 12.1 - Esquemático do microcontrolador....erro! Indicador não definido. Figura 13.1 Esquemático da matriz de contatos..erro! Indicador não definido. Figura 14.1 Esquemático da matriz de leds....erro! Indicador não definido. Figura 15.1 - Esquemático do gravador....erro! Indicador não definido. Figura 16.1 - Esquemático da fonte...erro! Indicador não definido. Página 8

Lista de Tabelas TABELA 2.1 CARACTERÍSTICAS DOS LCD DISPONÍVEIS... 39 TABELA 4.1 COMPONENTES UTILIZADOS... 46 TABELA 4.2 CUSTOS DO PROJETO... 47 TABELA 4.3 ESPECIFICAÇÕES DO MICROCONTROLADOR ATMEGA64.. 48 TABELA 10.1 TAREFAS DO CRONOGRAMA...Erro! Indicador não definido. Página 9

Lista de Siglas AVR Advanced Virtual RISC. CISC Complex Instruction Set Computer. CMOS Complementary Metal Oxide Semicondutor. EEPROM Electrically Erasable Programmable Read Only Memory. IA Inteligência Artificial. JTAG - Joint Test Action Group. LCD Liquid Crystal Display. LED Light Emitter Diode. MLF Micro Lead Frame. PC Personal Computer. RAM Random Access Memory. RISC Reduced Instruction Set Computer. SPI - Serial Peripheral Interface. TQFP Thin Quad Flat Pack. Página 10

Resumo Este trabalho consiste na construção de um tabuleiro, de 64 casas com apenas 12 peças brancas, para prática do jogo de damas contra um computador, que não possui peças e indica seus movimentos através do acionamento de leds. Através do algoritmo de Minimax foram implementados níveis de dificuldade para o computador, que realiza todo o processamento no próprio tabuleiro, através do microcontrolador Atmega64 da Atmel. Página 11

Abstract The following research based project consists of constructing an electronic board with 64 spaces accompanied by 12 white game pieces. The objective of the project is to build a game environment where a user plays the game of checkers against the machine. The computer does not play with real game pieces; instead, the moves on the computer side are identified through leds that are activated and deactivated. The computer can play the game in different levels of difficulty that were implemented through the Minimax algorithm. All the processing takes place inside the board having the Atmel s Atmega64 as the microcontroller. Página 12

1. Introdução 1.1. Introdução ao tema do projeto?? Este projeto baseia-se no projeto de final de curso desenvolvido em Fonseca (2005). A idéia é incrementar seu projeto de forma que, tanto o hardware quanto o software, possam ser melhorados a fim de tornar o jogo mais operacional, tanto em termos de velocidade, quanto em termos de manipulação do tabuleiro e das peças pela criança. Dessa forma, o tema do projeto é a construção (hardware e software) de um sistema embarcado, baseado no sistema anteriormente desenvolvido, que possibilite a prática do jogo de damas. 1.2. Motivação do desenvolvimento O projeto desenvolvido em Fonseca (2005) apresentou algumas dificuldades no desenvolvimento do software, já que com o limite de tamanho para a geração do código hex, só foi possível programar o algoritmo do MINIMAX de forma limitada. Como a memória RAM do microcontrolador era inferior ao necessário, o jogo possuía apenas um nível de dificuldade, ou seja, o algoritmo só gerava um nível da árvore, fazendo com que o computador só enxergasse uma jogada a frente do tabuleiro atual, a qual nem sempre era a melhor jogada a ser feita. Outro problema enfrentado foram com os sensores utilizados (reed switches) para identificar as peças nas casas, eles apresentavam instabilidade, já que nem sempre acusavam as mesmas. O sistema é voltado para crianças, e apresenta os seguintes incrementos em relação ao sistema anterior:?? O processador utilizado é o Atmega64, já que o utilizado no projeto desenvolvido em 2005, P89C51RD2 da Philips, tinha uma memória RAM Página 13

limitada para a execução do algoritmo MINIMAX, impedindo a montagem da árvore com mais de um nível, fazendo assim, com que a jogada do computador nem sempre fosse a melhor a ser executada naquele momento.?? Implementação de 2 níveis de dificuldade no software, sendo que em cada nível implementado o computador deverá enxergar mais um nível de jogada, dificultando o jogo para a criança.?? Implementação de validações das jogadas realizadas, por exemplo, se a criança colocar uma peça em uma casa não permitida, o software deverá avisá-la.?? Alteração do sistema de jogadas do computador, de forma que não sejam necessárias peças, ou seja, de forma que a criança não necessite realizar a movimentação da peça na jogada do computador.?? Alterações na construção do tabuleiro de forma que fique mais adaptado à criança. 1.3. Metas a serem alcançadas O projeto consiste da elaboração de um tabuleiro para a prática do jogo de damas com um sistema embarcado que, com ajuda de sensores e algoritmos inteligentes, têm as seguintes características:?? Validação das jogadas realizadas, através de algoritmos que verificam as regras do jogo.?? Apresentação de no mínimo dois níveis de dificuldade, e para que isso seja possível, o algoritmo foi implementado de forma que a árvore tivesse dois níveis ou mais, ou seja, o computador pode enxergar duas ou mais jogadas à frente do tabuleiro atual.?? As peças do computador são indicadas através de luzes, ou seja, conforme o computador realiza sua jogada, a casa de onde a peça sai apaga e a casa de destino acende, dessa forma todas as casas válidas do tabuleiro poderão acender.?? As damas do computador são representadas com o acionamento de mais uma luz, deste modo, uma dama sempre será indicada com duas luzes acesas. Página 14

O tabuleiro tem um encaixe para as peças do jogador, de forma que as mesmas fiquem bem colocadas. Cada encaixe tem, em forma de semicírculo, dois contatos que conforme uma peça, com um metal condutor, seja colocada no encaixe, feche o contato de um lado para o outro, informando ao processador que uma peça foi movida para o local, o mesmo acontecerá quando a peça for removida, mas ao invés de fechar contato, acontece o inverso, ou seja, a conexão entre os condutores é desfeita, impedindo a passagem de informação naquela casa. Alem disso, espera-se através desse sistema, prover com a prática do jogo um modo de auxiliar crianças no desenvolvimento das inteligências múltiplas, mais especificamente a espacial e a lógico-matemática. Além de ressaltar habilidades como a percepção, raciocínio, concentração e desenvolvimento de estratégias. 2. Estudo Teórico 2.1. Teoria dos jogos A teoria de jogos (matemática), um ramo da economia, visualiza qualquer ambiente multiagente como um jogo, desde que o impacto de cada agente sobre os outros seja significativo, não importando se os agentes são cooperativos ou competitivos. Em Inteligência Artificial (IA), os jogos normalmente são de um tipo bastante especializado que os teóricos de jogos dominam jogos determinísticos de revezamento de dois jogadores de soma zero com informações perfeitas. Em nossa terminologia, isso significa ambientes determinísticos completamente observáveis em que existem dois agentes cujas ações devem se alternar e em que os valores de utilidade no fim do jogo são sempre iguais e opostos (ou simétricos). Por exemplo, se um jogador ganha um jogo de xadrez (+1), o outro jogador necessariamente perde (-1). É essa oposição entre as funções de utilidade dos agentes que gera a situação de competição. Página 15

Os jogos ocuparam as faculdades intelectuais dos seres humanos chegando algumas vezes a um grau alarmante desde que surgiu a civilização. Para pesquisadores de IA, a natureza abstrata de jogos os torna um assunto atraente para estudo. É fácil representar o estado de um jogo e, em geral, os agentes se restringem a um pequeno número de ações cujos resultados são definidos por regras precisas, Jogos físicos, como críquete e hóquei sobre gelo, têm descrições muito mais complicadas, uma faixa muito maior de ações possíveis e regras bastante imprecisas definindo a legalidade das ações. Com exceção do futebol de robôs, esses jogos físicos não atraíram muito interesse na comunidade de IA. A participação de jogos foi uma das primeiras tarefas empreendidas em IA. Por volta de 1950, quase ao mesmo tempo em que os computadores se tornaram programáveis, o xadrez foi estudado por Konrad Zuse (o criador da teoria da informação), por Nobert Wiener (o criador da moderna teoria de controle) e por Alan Turing. Desde então, houve um progresso constante no padrão dos jogos, até o ponto em que as máquinas ultrapassaram os seres humanos nos jogos de damas e Othello, derrotaram campeões humanos (embora não todas as vezes) em xadrez e gamão, e são competitivos em muito outros jogos. Os jogos, diferentemente de outros problemas de IA, são interessantes porque são muito difíceis de resolver. Por exemplo, o xadrez tem um fator médio de ramificações de cerca de 35, e as partidas com freqüência chegam até a 50 movimentos por cada jogador; assim a árvore de busca tem aproximadamente 35 100 ou 10 154 nós (embora o grafo de busca tenha apenas cerca de 10 40 nós distintos). Os jogos, como o mundo real, exigem portanto habilidade de tomar alguma decisão, até mesmo quando o cálculo da decisão ótima é inviável. Os jogos também penalizam a ineficiência de forma severa. Enquanto uma implementação de busca A * com metade da eficiência custará simplesmente o dobro do valor para funcionar até a conclusão, um programa de xadrez com metade da eficiência no uso de seu tempo disponível provavelmente será derrubado sem piedade, mantendo-se outros aspectos inalterados. Por essa Página 16

razão, a busca de jogos elaborou várias idéias interessantes sobre como fazer o melhor uso possível do tempo (Russel, 2004). 2.2. O Jogo de Damas Conforme Jogo de Damas (2006), a origem do jogo de damas é desconhecida. Pinturas e tabuleiros encontrados em túmulos do antigo Egito, além de outros achados arqueológicos em diversos lugares do mundo, nos dão conta da existência de jogos bem semelhantes ao atual Jogo de Damas. Não existem, no entanto, indícios seguros que nos possam elucidar onde e quando ele surgiu. No século XVI foram editados na Espanha os primeiros livros de que se tem notícia, contendo elementos teóricos já bastante desenvolvidos. Embora não exista nenhum exemplar, conhecido apenas por citação de outros autores, o primeiro livro editado deve ter sido "El ingénio ó juego de marro, de punto ó damas", de Anton Torquemada, 1547, Espanha. Hoje, estimam-se em centenas de milhares os títulos publicados em todo o mundo. O primeiro campeão mundial, homologado pela Federação Mundial de Jogo de Damas, foi o austríaco Isidore Weiss, em 1985. A Federação Mundial foi fundada em 1948, em Paris, França. O jogo de damas popularizou-se no mundo em dois tabuleiros: 64 casas, que se joga com 12 pedras de cada lado e 100 casas, que se joga com 20 pedras de cada lado. Tem-se como certo, considerando sua já grande popularidade na Europa antes da época dos descobrimentos, que o jogo de damas tenha sido introduzido no Brasil pelos primeiros colonizadores. O jogo de damas, como esporte, teve seu início no Brasil nos idos de 1935 a 1940, pelas mãos de Geraldino Izidoro. Grandes partes das provas realizadas naquela época estão registradas no livro "Ciência e Técnica do Jogo de Damas", de autoria de G. Izidoro e J. Cardoso. Maiores detalhes a respeito deste surto damístico podem ser encontrados naquela publicação. O primeiro livro editado Página 17

no Brasil foi 40 Golpes Clássicos", de autor desconhecido, publicado no Rio de Janeiro, em 1940. A partir de 1940, a prática do jogo de damas de uma forma organizada, entrou em recesso. Não há registros de movimento damístico até 1954, quando, com o advento do mestre russo W. Bakumenko, um novo surto começou a surgir, no tabuleiro de 64 casas. Radicado em São Paulo, W. Bakumenko, egresso de uma escola damística evoluída, campeão da URSS em 1927, deu início à criação de um núcleo damístico. Por sua vez, G. Izidoro, que sempre manteve seu interesse pelo jogo de damas, ao saber da presença de Bakumenko, o procurou. Isto gerou um encontro famoso entre as equipes de São Paulo e Rio de Janeiro, que praticamente marcou o reinício das atividades damísticas no país. Esta prova foi realizada no Rio de Janeiro, no dia 02 de maio de 1954. Com Bakumenko em São Paulo e G. Izidoro no Rio, o jogo de damas tomou um impulso fabuloso. Bakumenko, alicerçado em sólidos conhecimentos técnicos, incentivou a prática do jogo, principalmente pela publicação semanal de uma coluna damística no jornal "A Gazeta Esportiva". Manteve também outras colunas e incentivou a criação de outras (L. Engels, famoso jogador de xadrez, incentivado pelo mestre, manteve uma seção no jornal "O Estado de São Paulo"). Criou grupos damístico e foi a centelha da criação de muitos outros. Editou dois livros: "Jóias do Jogo de Damas" e "Curso das Damas Brasileiras". Bakumenko faleceu em 13 de maio de 1969. Por sua vez, G. Izidoro, realizando torneios, criando grupos damísticos e incentivando com simultâneas e prêmios a criação de outros, escrevendo diversas colunas em jornais e revistas, fez crescer o interesse pelo esporte no Rio e em todo o país. Todo este movimento resultou na criação das Federações Estaduais: São Paulo, Rio de Janeiro, Rio Grande do Sul, Espírito Santo e Minas Gerais criaram suas Federações. Em 5 de abril de 1963, na sede do Clube Estrela de Oliveira, à Rua do Gasômetro, na cidade de São Paulo, foi fundada a Federação Paulista de Jogo de Damas, a primeira federação no Brasil. Página 18

A década de 60 foi uma época de grande desenvolvimento para o jogo de damas. Em Belo Horizonte, em 1967, foi organizado o maior campeonato de jogo de damas até hoje do Brasil, reunindo 1009 participantes. O grande obstáculo surgiu para o jogo de damas brasileiro em 1967, quando João Havelange, então presidente da Confederação Brasileira de Desportos, que na época englobava todos os esportes amadores, qualificou o jogo de damas como mera recreação, desfiliando-o da CBD. Foi um atraso irreparável para a modalidade, pois somente em 19 de novembro de 1988, 21 anos depois, é que o jogo de damas voltou à condição de esporte no Brasil. Foram 21 anos à margem do processo esportivo nacional. Porém, muito se evoluiu nesses 21 anos. Alguns meses após a desfiliação da CBD, os damistas se reuniram em Niterói e fundaram a Confederação Brasileira de Jogo de Damas, sendo seu primeiro presidente o Dr. Murilo Portugal. E em 1967, aconteceu o 1º Campeonato Brasileiro de Jogo de Damas, de 64 casas, em São Pedro D'Aldeia, ficando na primeira colocação o paulista Humberto Olivarbo e o espírito-santense José Carlos Rabelo. Houve uma partida para decidir o título e a vitória coube a José Carlos Rabelo, que se tornou o primeiro campeão brasileiro individual (Jogo de Damas, 2006). Maiores informações podem ser encontradas em Confederação Brasileira (2006), Wikipedia (2006) e Jogos Antigos (2006). 2.3. Regras do jogo de damas Conforme Jogo de Damas (2006), o jogo é praticado em um tabuleiro de 64 casas, claras e escuras, conforme a Figura 2.1. A grande diagonal, escura, deve ficar sempre à esquerda de cada jogador. O objetivo do jogo é imobilizar ou capturar todas as peças do adversário. Página 19

Figura 2.1 - Tabuleiro 1. FONTE: Jogo de Damas (2006). Esse jogo é praticado entre dois parceiros, com 12 pedras brancas de um lado e com 12 pedras pretas de outro lado, como mostra a Figura 2.2. O lance inicial cabe sempre a quem estiver com as peças brancas. Também se pode jogar damas em um tabuleiro de 100 casas, com 20 pedras para cada lado (Damas Internacional). Figura 2.2 - Tabuleiro 2. FONTE: Jogo de Damas (2006). A pedra anda só para frente, uma casa de cada vez. Quando a pedra atinge a oitava linha do tabuleiro ela é promovida à dama, como mostra a Figura 2.3. Página 20

Figura 2.3 - Tabuleiro 3. FONTE: Jogo de Damas (2006). A dama é uma peça de movimentos mais amplos. Ela anda para frente e para trás, quantas casas quiser. A dama não pode saltar uma peça da mesma cor, como mostra a Figura 2.4. Figura 2.4 - Tabuleiro 4. FONTE: Jogo de Damas (2006). A captura é obrigatória. Duas ou mais peças juntas, na mesma diagonal, não podem ser capturadas, como mostra a Figura 2.5. Página 21

Figura 2.5 - Tabuleiro 5. FONTE: Jogo de Damas (2006). A pedra captura a dama e a dama captura a pedra. Pedra e dama têm o mesmo valor para capturarem ou serem capturadas, como mostra a Figura 2.6. Figura 2.6 - Tabuleiro 6. FONTE: Jogo de Damas (2006). A pedra e a dama podem capturar tanto para frente como para trás, uma ou mais peças, como mostra a Figura 2.7. Figura 2.7 - Tabuleiro 7. FONTE: Jogo de Damas (2006). Página 22

Se no mesmo lance se apresentar mais de um modo de capturar, é obrigatório executar o lance que capture o maior número de peças (Lei da Maioria), como mostra a Figura 2.8. Figura 2.8 - Tabuleiro 8. FONTE: Jogo de Damas (2006). A pedra que durante o lance de captura de várias peças, apenas passe por qualquer casa de coroação, sem aí parar, não será promovida à dama, como mostra a Figura 2.9. Figura 2.9 - Tabuleiro 9. FONTE: Jogo de Damas (2006). Na execução do lance de captura, é permitido passar mais de uma vez pela mesma casa vazia, não é permitido capturar duas vezes a mesma peça, como mostra a Figura 2.10. Página 23

Figura 2.10 - Tabuleiro 10. FONTE: Jogo de Damas (2006). Na execução do lance de captura, não é permitido capturar a mesma peça mais de uma vez e as peças capturadas não podem ser retiradas do tabuleiro antes de completar o lance de captura, como mostra a Figura 2.11. Figura 2.11 - Tabuleiro 11. FONTE: Jogo de Damas (2006). O empate é declarado nos seguintes casos:?? Após 20 lances sucessivos de damas, sem captura ou deslocamento de pedra, a partida é declarada empatada; Em casos especiais, o empate é declarado após 5 lances. Isso ocorre quando as peças que sobram no tabuleiro são as seguintes:?? duas damas contra duas damas;?? duas damas contra uma; Página 24

?? duas damas contra uma dama e uma pedra;?? uma dama contra uma dama e;?? uma dama contra uma dama e uma pedra. 2.4. Decisões ótimas em jogos Considera-se um jogo com dois jogadores, os quais chamarão MAX e MIN. MAX faz o primeiro movimento, e depois eles se revezam até o jogo terminar. No fim do jogo, os pontos são dados ao jogador vencedor e são impostas penalidades ao perdedor. Um jogo pode ser definido formalmente como uma espécie de problema de busca com os seguintes componentes:?? O estado inicial, que inclui a posição do tabuleiro e identifica o jogador que fará o movimento.?? Uma função sucessor, que retorna uma lista de pares (movimento, estado), cada qual indicando um movimento válido e o estado resultante.?? Um teste de término, que determina quando o jogo termina. Os estados em que o jogo é encerrado são chamados estados terminais. Uma função utilidade (também chamada função objetivo ou função compensação), que dá um valor numérico aos estados terminais. Em damas, o resultado é uma vitória, uma derrota ou um empate, com valores +1, -1 ou 0. Alguns jogos têm uma variedade mais ampla de resultados possíveis; a compensação no gamão varia de 192 até -192 (Russel, 2006). 2.4.1. Árvore do jogo O estado inicial e os movimentos válidos para cada lado definem a árvore do jogo correspondente ao jogo. A Figura 2.12 mostra parte da árvore do jogo para o jogo-da-velha. A partir do estado inicial, MAX tem nove movimentos possíveis. O jogo se alterna entre a colocação de um X por MAX e a colocação de um O por MIN até alcançarmos nas de folhas correspondentes a estados terminais, tais que um jogador tem três símbolos em uma linha ou todos os quadrados são preenchidos. O número em cada nó de folha indica o valor de utilidade do estado terminal, do ponto de vista de MAX; valores altos são considerados bons para Página 25

MAX e ruins para MIN (o que explica os nomes dados aos jogadores). Cabe a MAX usar a árvore de busca (em particular a utilidade de estados terminais) para determinar o melhor movimento (Russel, 2004). Figura 2.12 Árvore de busca (parcial) para o jogo da velha. FONTE: Russel (2006), pág. 158. 2.4.2. Estratégias ótimas Em um problema de busca normal, a solução ótima seria uma seqüência de movimentos que levasse a um estado objetivo um estado terminal que representa uma vitória. Por outro lado, em um jogo, MIN tem alguma relação com esse estado. Portanto, MAX deve encontrar uma estratégia de contingência que especifique o movimento de MAX no estado inicial, e depois os movimentos de MAX nos estados resultantes de cada resposta possível de MIN a esses movimentos e assim por diante. Em termos gerais, uma estratégia ótima leva a resultados no mínimo tão bons quanto qualquer outra estratégia quando se está enfrentando um oponente infalível. Começaremos mostrando como encontrar essa estratégia ótima, embora deva ser inviável para MAX calculá-la no caso de jogos mais complexos que o jogo-da-velha. Página 26

Até mesmo um jogo simples como jogo-da-velha é muito complexo para se traçar a árvore de jogo inteira, e assim nos limitaremos ao jogo trivial da Figura 2.12. Os movimentos possíveis para MAX no nó raiz são identificados por a 1, a 2 e a 3. As respostas possíveis para a1 correspondentes a MIN são b1, b2 e b3 e assim sucessivamente. Esse jogo específico termina depois de um movimento realizado por MAX e por MIN. (No linguajar dos jogos, dizemos que essa árvore tem profundidade de um único movimento, que consiste em dois meiosmovimentos, cada um dos quais é chamado jogada.) As utilidade dos estados terminais nesse jogo variam de 2 até 14. Dada uma árvore de jogo, a estratégia ótima pode ser determinada examinando-se o valor minimax de cada nó, que representamos como VALOR- MINIMAX(n). O valor minimax de um nó é a utilidade (para MAX) de se encontrar no estado correspondente, supondo-se que ambos os jogadores têm um desempenho ótimo desde esse estado até o fim do jogo. É óbvio que o valor minimax de um estado terminal é simplesmente sua utilidade. Além disso, dada uma escolha, MAX preferirá se mover para um estado de valor máximo, enquanto MIN preferirá em estado de valor mínimo. Assim, tem-se: VALOR-MINIMAX(n) = UTILIDADE(n) Max s?sucessores(n) VALOR-MINIMAX(s) Min s?sucessores(n) VALOR-MINIMAX(s) Se n é um estado terminal Se n é um nó de MAX Se n é um nó de MIN Aplicam-se essas definições à árvore de jogo da Figura 2.13. Os nós terminais no nível inferior já estão identificados com seus valores de utilidade. O primeiro nó de MIN, identificado por B, tem três sucessores com valores 3, 12 e 8; portanto, seu valor minimax é 3. De modo semelhante, os outros nós de MIN têm valor minimax 2. O nó raiz é um nó de MAX. Seus sucessores têm valores minimax 3, 2 e 2; logo, ele tem uma valor minimax igual a 3. Também podemos identificar a decisão minimax na raiz: a ação a1 é a escolha ótima para MAX, porque leva ao sucessor com o mais alto valor minimax. Página 27

Figura 2.13 Árvore do jogo de duas jogadas. FONTE: Russel (2006), pág. 159. Essa definição de jogo ótimo para MAX supõe que MIN também joga de forma ótima, ela maximiza o resultado para MAX no pior caso. E se MIN não jogar de forma ótima? Nesse caso, é fácil mostra que MAX terá um desempenho ainda melhor que a estratégia de minimax; porém, essas estratégias necessariamente têm um desempenho pior contra oponentes ótimos (Russel, 2004). 2.4.3. O algoritmo minimax O algoritmo minimax calcula a decisão minimax a partir do estado corrente. Ela utiliza uma computação recursiva simples dos valores minimax de cada estado sucessor, implementando diretamente as equações da definição. A recursão percorre todo o caminho descendente até as folhas da árvore, e depois os valores minimax são propagados de volta pela árvore, à medida que a recursão retorna. Por exemplo, na Figura 2.13, primeiro o algoritmo efetua uma recursão descendo a árvore até os três nós de folhas inferiores e emprega a função UTILIDADE sobre eles para descobrir que seus valores são 3, 12 e 8, respectivamente. Em seguida ele toma o mínimo desses valores, 3, e o devolve como valor propagado de volta para o nó B. Um processo semelhante fornece os valores propagados de volta de 2 para C e 2 para D. Por fim, tomamos o valor máximo entre 3, 2 e 2 para obter o valor propagado de volta igual a 3 para o nó raiz. O algoritmo minimax executa uma exploração completa em profundidade da árvore do jogo. Se a profundidade máxima da árvore é m e existem b Página 28

movimentos válidos em cada ponto, a complexidade de tempo do algoritmo minimax é O(b m ). A complexidade de espaço é O(bm) para um algoritmo que gera todos os sucessores de uma vez ou O(m) para uma algoritmo que gera um sucessor de cada vez. É claro que em jogos reais, o custo de tempo é totalmente impraticável, mas esse algoritmo serve como base para a análise matemática de jogos e para algoritmos mais práticos (Russel, 2004). função DECISÃO-MINIMAX(estado) retorna uma ação entradas: estado, estado corrente no jogo v? VALOR-MAX(estado) retornar a ação em SUCESSORES(estado) com valor v função VALOR-MAX(estado) retorna um valor de utilidade se TESTE-TERMINAL(estado) então retornar UTILIDADE(estado) v? -8 para a, s em SUCESSORES(estado) faça v? MAX(v, VALOR-MIN(s)) retornar v função VALOR-MIN(estado) retorna um valor de utilidade se TESTE-TERMINAL(estado) então retornar UTILIDADE(estado) v? 8 para a, s em SUCESSORES(estado) faça v? MIN(v, VALOR-MAX(s)) retornar v Conforme os algoritmos acima, pode-se calcular a decisão minimax. Ele retorna a ação correspondente ao melhor movimento possível, isto é, o movimento que leva ao resultado com a melhor utilidade, sob a suposição de que o oponente joga para minimizar a utilidade. As funções VALOR-MAX e Página 29

VALOR-MIN passam por toda a árvore de jogo, até chegar às folhas, a fim de determinar o valor propagação de volta de um estado (RICH, 1994). 2.4.4. Poda alfa-beta O problema da busca minimax é que o número de estados de jogo que ela tem de examinar é exponencial em relação ao número de movimentos. Infelizmente, não podemos eliminar o expoente, mas podemos efetivamente reduzi-lo pela metade. O artifício é a possibilidade de calcular a decisão minimax correta sem examinar todos os nós na árvore de jogo. Ou seja, podemos tomar emprestada a idéia de poda, a fim de poder de deixar de considerar grandes partes da árvore. A técnica específica que examinaremos é chamada poda alfabeta. Quando é aplicada a uma árvore minimax padrão, ela retorna o mesmo movimento que minimax retornaria, mas poda as ramificações que não terão influência possível sobre a decisão final. Considerando-se novamente a árvore de jogo de duas jogadas da Figura 2.13. Vamos acompanhar mais uma vez o cálculo da decisão ótima, agora prestando bastante atenção ao que conhecemos em cada ponto do processo. Observando-se a Figura 2.14 (a), percebemos que a primeira folha sob B tem valor 3, consequentemente, B, que é um nó de MIN, tem valor máximo 3. (b) a segunda folha sob B tem valor 12; MIN evitaria esse movimento, de forma que o valor de B ainda é no máximo 3. (c) A terceira folha sob B tem valor 8, e como B não tem nenhum sucessor menor que 3, e MIN sempre procura o menor valor, o valor de B é exatamente 3. Pode-se deduzir que o valor raiz é pelo menos 3, já que MAX tem uma escolha de valor 3 na raiz. (d) A primeira folha abaixo de C tem o valor 2, assim, C, que é um nó de MIN, tem no máximo 2. Porém, sabemos que B vale 3, portanto, MAX, que sempre escolhe o maior valor, nunca escolheria C. Desse modo, não há razão para se examinar os outros sucessores de C. A seguir é mostrado um exemplo de poda alfa-beta. (e) A primeira folha abaixo de D tem o valor 14, e então D vale no máximo 14. Esse valor ainda é Página 30

mais alto que a melhor alternativa de MAX (isto é, 3), e portanto precisamos continuar a explorar sucessores de D. Note também que agora temos limites para todos os sucessores da RAIZ, e conseqüentemente o valor da RAIZ também é no máximo 14. (f) O segundo sucessor de D vale 5, e assim novamente precisamos continuar a exploração. O terceiro sucessor vale 2, agora, D vale exatamente 2. A decisão de MAX na raiz é efetuar o movimento para B, o que nos dá o valor 3. Figura 2.14 Árvore do jogo de duas jogadas utilizando poda alfa-beta. FONTE: Russel (2004), pág. 162. Isso também pode ser visto como uma simplificação da fórmula de VALOR- MINIMAX. Sejam x e y valores dos dois sucessores não-avaliados do nó C da figura acima e seja z o mínimo entre x e y. O valor do nó raiz é dado por: VALOR-MINIMAX(raiz) = max(min(3, 12, 8), min(2, x, y), min(14, 5, 2)) = max(3, min(2, x, y), 2) = max(3, z, 2) onde z = 2 = 3 Página 31

Em outras palavras, o valor da raiz é conseqüentemente a decisão minimax são independentes dos valores das folhas podadas x e y. A poda alfa-beta pode ser aplicada a árvores de qualquer profundidade, e freqüentemente, é possível podar subárvores inteiras em lugar de podar apenas folhas. O princípio geral é este: considere um nó n em algum lugar da árvore (veja a Figura 2.15), tal que o Jogador tenha a escolha de movimento até esse nó. Se o Jogador tiver uma escolha melhor m no nó pai de n ou em qualquer ponto de escolha de movimento até esse nó. Se o Jogador tiver uma escolha melhor m no nó pai de n ou em qualquer ponto de escolha adicional acima dele, então n nunca será alcançado em um jogo real. Assim, uma vez que descobrimos o suficiente sobre n (examinando alguns de seus descendentes) para chegar a essa conclusão, poderemos podá-la. A busca minimax é do tipo em profundidade; então, em qualquer instante considera-se os nós ao longo de um único caminho na árvore. A poda alfa-beta obtém seu nome a partir dos dois parâmetros a seguir, que descrevem limites sobre os valores propagados de volta que aparecem em qualquer lugar ao longo do caminho:?? a? o valor da melhor escolha (isto é, a de valor mais alto) que encontramos até o momento em qualquer ponto de escolha ao longo do caminho para MAX.?? ß? o valor da melhor escolha (isto é, a de valor mais baixo) que encontramos até agora em qualquer ponto de escolha ao longo do caminho para MIN. Página 32

Figura 2.15 Poda alfa-beta. FONTE: adaptada de Russel (2004), pág. 163. A busca alfa-beta atualiza os valores de a e ß à medida que prossegue e poda as ramificações restantes em um nó (isto é, encerra a chamada recursiva) tão logo se sabe que o valor do nó corrente é pior que o valor corrente de a ou ß para MAX ou MIN, respectivamente. A efetividade da poda alfa-beta é altamente dependente da ordem em que os sucessores são examinados. Por exemplo, na Figura 2.14 (e) e (f), não poderíamos podar quaisquer sucessores de D, porque os piores sucessores (do ponto de vista de MIN) foram gerados primeiro. Se o terceiro sucessor tivesse sido gerado primeiro, seríamos capazes de podar os outros dois. Isso sugere que poderia valer a pena tentar examinar primeiro os sucessores que têm probabilidade de serem melhores. Supõe-se que pode ser feito, então o resultado será que alfa-beta precisará examinar apenas O (b 3d/4 ) para o valor moderado de b. Acrescentar esquemas dinâmicos de ordenação de movimentos, como tentar primeiro os movimentos considerados os melhores da última vez, nos levará até bem perto do limite teórico (Russel, 2004). Página 33

2.4.5. Decisões imperfeitas em tempo real Conforme Russel (2004), o algoritmo minimax gera o espaço de busca do jogo inteiro, enquanto o algoritmo alfa-beta nos permite podar grandes partes desse espaço. Porém, alfa-beta ainda tem que fazer a busca em toda a distância até os estados terminais, pelo menos para uma parte do espaço de busca. Em geral, essa profundidade não é prática, porque os movimentos devem ser realizados em um período de tempo razoável normalmente por alguns minutos, no máximo. O artigo de 1950 de Shannon, Programing a computer for playing chess, propunha em vez disso que os programas cortassem a busca mais cedo e aplicassem uma função de avaliação heurística aos estados de busca, transformando efetivamente nós não terminais em folhas terminais. Em outras palavras, a sugestão é alterar minimax ou alfa-beta de duas maneiras: a função de utilidade é substituída por uma função de avaliação de heurística AVAL, que fornece uma estimativa da utilidade da posição, e o teste de término é substituído por um teste de corte que decide quando aplicar AVAL. 2.4.5.1. Funções de avaliação Uma função de avaliação retorna, segundo RICH (1994), uma estimativa de utilidade esperada do jogo, a partir de uma dada posição de mesma forma que as funções de heurística retornam uma estimativa de distância até a meta. A idéia de um avaliador não era nova quando Shannon a propôs. Durante séculos, os jogadores de xadrez (e os aficionados por outros jogos) desenvolveram meios de julgar o valor de uma posição, porque os seres humanos são ainda mais limitados que os programas de computador no volume de busca que podem realizar. Deve ficar claro que o desempenho de um programa de jogos depende da qualidade de sua função de avaliação. Uma função de avaliação inexata guiará um agente em direção e posições que acabarão por serem perdidas. A função de avaliação pode ser projetada da seguinte forma: primeiro, a função de avaliação deve ordenar os estados terminais do mesmo modo que a verdadeira função de utilidade; caso contrário, um agente que a utilizasse poderia selecionar movimentos não ótimos, mesmo que pudesse antecipar todos os movimentos até o fim do jogo. Em segundo lugar, a computação não deve Página 34

demorar tempo demais (A função de avaliação poderia chamar DECISÃO- MINIMAX como uma sub-rotina e calcular o valor exato da posição, mas isso iria anular a principal finalidade: poupar tempo.) Em terceiro lugar, no caso de estados não-terminais, a função de avaliação deve estar fortemente relacionada com as chances reais de vitória. Se a busca tiver de ser cortada em estados não-terminais, o algoritmo será necessariamente incerto sobre os resultados finais desses estados. Esse tipo de incerteza é induzido por limitações computacionais, e não informativas. Dado o volume limitado de computação que a função de avaliação pode realizar para um determinado estado, o melhor que ela pode fazer é arriscar um palpite sobre o resultado final. Para tornar essa idéia mais concreta, deve-se analisar que a maioria das funções de avaliação atua calculando diversas características do estado por exemplo, o número de peças tomadas por cada lado de um jogo de damas. Consideradas em conjunto, as características definem diversas categorias ou classes de equivalência de estados: os estados de cada categoria têm os mesmos valores para todas as características. Qualquer categoria específica, em termos gerais, conterá alguns estados que levam a vitórias, alguns que levam a empates e alguns que levam a derrotas. A função de avaliação não tem como saber os estados de cada grupo, mas pode retornar um único valor capaz de refletir a proporção de estados que conduzem a cada resultado. Por exemplo, vamos supor que nossa experiência sugira que 72% dos estados encontrados na categoria levam a vitória (com utilidade +1); 20% levam a uma derrota (-1) e 8% a um empate (0). Então, uma avaliação razoável dos estados na categoria é a média ponderada ou valor esperado: (0,72 x +1) + (0,20 x -1) + (0,08 x 0) = 0,52. Em princípio, o valor esperado pode ser determinado para cada categoria, o que resulta em uma função de avaliação que funciona para qualquer estado. Como ocorre com estados terminais, a função de avaliação não precisa retornar valores esperados reais, desde que a ordenação dos estados seja a mesma (Russel, 2004). Página 35

Segundo Figueiredo (2006), na prática, essa espécie de análise exige muitas categorias e, conseqüentemente, muita experiência para estimar todas as probabilidades de vitória. Em vez disso, a maioria das funções de avaliação calcula contribuições numéricas separadas de cada característica e depois as combina para encontrar o valor total. Por exemplo, a heurística posicional que calcula a força de cada tabuleiro conforme a disposição e a promoção das peças da seguinte maneira, é atribuído um valor material aproximado para as peças sendo, o peão vale 5, caso esteja prestes a virar dama vale 7 e a dama vale 10. São atribuídos os seguintes pesos para as casas do tabuleiro, conforme a Figura 2.16. Figura 2.16 Peso das casas na heurística posicional. FONTE: Figueiredo (2006). Então calcula-se a força de cada jogador através do somatório do peso de cada peça (w) vezes o peso da respectiva casa do tabuleiro (f) e depois se calcula a força do tabuleiro subtraindo a força das peças brancas (jogador) pela força das peças pretas (computador). AVAL(s) = FORÇA-BRANCA() FORÇA-PRETA() FORCA-BRANCA =? w i f i,sendo w i as peças brancas FORCA-PRETA =? w i f i,sendo w i as peças pretas Outra análise eficaz é a heurística do triângulo defensivo, que é calculada através da fórmula (p - b)/(p + b) sendo p a pontuação das pretas e b a pontuação das brancas. Cada pontuação é calculada através de caracteres Página 36

defensivos (casas privilegiadas da defesa) e caracteres materiais (1 ponto para o peão e 3 pontos para a dama), ou seja, além de levar em conta a quantidade e o tipo da peça (peão ou dama) de cada jogador, a heurística do triângulo defensivo também privilegia o fato da peça estar em sua base ou pertencer ao triângulo defensivo. 2.4.5.2. Busca com corte A próxima etapa é modificar BUSCA-ALFA-BETA, de modo que ela chame a função heurística AVAL quando for apropriado cortar a busca. Em termos de implementação, substituímos as duas linhas das funções VALOR-MAX e VALOR-MIN que mencionam TESTE-TERMINAL pela linha a seguir: se TESTE-DE-CORTE (estado, profundidade) então retornar AVAL(estado) Também deve-se providenciar alguma anotação para que a profundidade corrente seja incrementada em cada chamada recursiva. A abordagem mais direta para controlar a quantidade de busca é definir um limite de profundidade fixo, a fim de que TESTE-DE-CORTE (estado, profundidade) retorne verdadeiro para toda profundidade maior que alguma profundidade fixa d. (Ela também deve retornar verdadeiro para todos os estados terminais, como fazia TESTE- TERMINAL.) A profundidade d é escolhida de modo que o período de tempo utilizado não exceda o período permitido pelas regras do jogo. Uma abordagem mais resistente é aplicar o aprofundamento iterativo (ou busca em profundidade por aprofundamento iterativo), ou seja, é uma estratégia geral, usada com freqüência em combinação com a busca em profundidade, que encontra o melhor limite da profundidade. Ela faz isso aumentando gradualmente o limite primeiro 0, depois 1, depois 2 e assim por diante até encontrar um objetivo. Isso ocorrerá quando o limite de profundidade alcançar p, a profundidade do nó objetivo mais raso. Página 37

Quando o tempo se esgota, o programa retorna ao movimento selecionado pela busca mais profunda concluída. No entanto, essas abordagens podem levar a erros, devido a natureza aproximada da função de avaliação. Considera mais uma vez a função de avaliação simples para damas, ou seja, suponha que o programa pesquise até a profundidade limite alcançando uma posição onde as peças pretas têm vantagem sobre as brancas. Isso seria reportado como o valor heurístico do estado, declarando-se assim que o estado provavelmente levará a uma vitória das peças pretas. Porém, o próximo movimento das brancas teria uma vantagem muito maior sobre as pretas. Portanto, a posição resulta na realidade em uma vitória das brancas, mas isso só pode ser visto observando-se mais uma jogada à frente. É óbvio que é necessário um teste de corte mais sofisticado. A função de avaliação deve ser aplicada apenas a posições quiescentes isto é, posições em que é improvável haver grandes mudanças de valores no futuro próximo Russel (2004). 2.5. Microcontrolador Um microcontrolador é um computador programável, em um chip otimizado para controlar dispositivos eletrônicos. É uma espécie de microprocessador, com memória e interfaces de E/S (Entrada e Saída) integrados, enfatizando a autosuficiência, em constante com um microprocessador de propósito geral, o mesmo tipo usado nos PCs, que requer chips adicionais para prover as funções necessárias (Schunk, 2001). 2.6. Display LCD Os módulos LCD são interfaces de saída muito útil em sistemas microprocessados. Estes módulos utilizam um controlador próprio, permitindo sua interligação com outras placas através de seus pinos, onde deve ser alimentado o módulo e interligado o barramento de dados e controle com a placa do usuário. Naturalmente que além de alimentar e conectar os pinos do módulo com a placa do usuário, deverá haver um protocolo de comunicação entre as Página 38

partes, que envolve o envio de bytes de instruções e bytes de dados pelo sistema do usuário. Os LCD gráficos são encontrados com resuluções de 122x32, 128x64, 240x64 e 240x128 dots pixel, e geralmente estão disponíveis com 20 pinos para conexão. Os LCD comuns (tipo caracter) são especificados em número de linhas por colunas e são encontrados nas configurações previstas na TABELA 2.1. TABELA 2.1 CARACTERÍSTICAS DOS LCD DISPONÍVEIS. Número de Colunas Numero de Linhas Quantidade de pinos 8 2 14 12 2 14/15 16 1 14/16 16 2 14/16 16 4 14/16 20 1 14/16 20 2 14/16 20 4 14/16 24 2 14/16 24 4 14/16 40 2 16 40 4 16 FONTE: CICHACZEWSKI (2002). Os módulos podem ser encontrados com LED backlight (com uma iluminação de fundo) para facilitar as leituras durante a noite. Neste caso, a alimentação deste led faz-se normalmente pelos pinos 15 e 16 para os módulos comuns e 19 e 20 para os módulos gráficos, sendo os pinos 15 e 19 para ligação ao anodo e os pinos 16 e 20 para o catodo. A corrente de alimentação deste led varia de 100 a 200mA, dependendo do modelo. Página 39

Estes módulos utilizam um controlador próprio, permitindo sua interligação com outras placas através de seus pinos, onde deve ser alimentado o módulo e interligado o barramento de dados e controle do módulo com a placa do usuário. Naturalmente que além de alimentar e conectar os pinos do módulo com a placa do usuário, deverá haver um protocolo de comunicação entre as partes, que envolve o envio de bytes de instruções e bytes de dados pelo sistema do usuário. A Figura 2.17 ilustra um display LCD (Display LCD, 2006) 2.7. Diodo emissor de luz Figura 2.17 Display LCD. FONTE: Cichaczewski (2002). O LED (Light Emitter Diode - Diodo Emissor de Luz), como o próprio nome já diz, é um diodo (junção P-N) que quando energizado emite luz visível. A luz é monocromática e é produzida pelas interações energéticas do elétron. O processo de emissão de luz pela aplicação de uma fonte elétrica de energia é chamado eletroluminescência. Em qualquer junção P-N polarizada diretamente, dentro da estrutura, próximo à junção, ocorrem recombinações de lacunas e elétrons. Essa recombinação exige que a energia possuída por esse elétron, que até então era livre, seja liberada, o que ocorre na forma de calor ou fótons de luz, como mostrado na Figura 2.18. Página 40

Figura 2.18 - Diodo emissor de luz (LED). FONTE: Adaptada de Complex (2006). 3. Descrição O sistema é composto por um tabuleiro com 64 casas, 12 peças brancas e alguns componentes eletrônicos, sendo que as peças do computador são mostradas por meio de leds. Todas as casas têm contatos, que são responsáveis por identificar se há ou não uma peça na casa. Todo o processamento é realizado pelo microcontrolador. O hardware é composto por três módulos, como mostra a Figura 3.1: Módulos do hardware Jogada do jogador Estado do jogo Módulo de Entrada (Jogador) Módulo de Processamento Módulo de Saída (Computador) Estado do jogo Jogada do computador Figura 3.1 Módulos do hardware. Conforme a Figura 3.1, segue uma descrição das características da cada módulo do hardware: Página 41

?? Módulo de Entrada: onde o jogador movimenta as peças. A movimentação de uma peça faz com que o contato da casa em que a peça foi removida passe para aberto, e o da casa em que a peça foi movida passe para fechado, permitindo assim saber em o destino e a origem da peça.?? Módulo de Processamento: com os dados do módulo de entrada, o microcontrolador realiza o processamento, e através do algoritmo de MINIMAX e do nível escolhido pelo jogador verifica a melhor jogada a ser efetuada pelo computador, assim gera os dados de saída para o próximo módulo.?? Módulo de Saída: representa a jogada do computador. Os leds da casa a qual o computador deseja mover a peça se apagam e os da casa onde a peça será movida se iluminam. 3.1. Arquitetura AVR A família AVR de microcontroladores da ATMEL é integrada com tecnologia CMOS High-Speed e possuem arquitetura RISC de 8 bits com conceito Harvard, tendo portanto barramentos de programa e memória separados, oferecendo alto desempenho, aliado a um baixo consumo de potência. Possuem 130 instruções poderosas, sendo a maioria delas executadas em um único período de clock, podendo chegar a 16MIPS com o clock máximo de 16 MHz, sendo que os chips da linha ATmega podem ser encontrados com clock de até 20Mhz. Possuem ainda 32 registros de uso geral, todos conectados diretamente à Unidade Aritmética e Lógica, permitindo que dois registros quaisquer sejam acessados em um único ciclo de clock, por uma única instrução. Estas características especiais proporcionam códigos mais eficientes tendo como resultado velocidades de processamento até dez vezes mais rápido que os microcontroladores convencionais de arquitetura CISC. Página 42

Uma grande vantagem de se usar a arquitetura AVR é que além dela ser projetada buscando eficiência com a linguagem de programação C, possui também uma grande quantidade de softwares de desenvolvimento no mercado e muitos deles gratuitos (Lanari, 2006). 4. Especificação do hardware 4.1. Funções do hardware O tabuleiro contém em cada uma de suas casas pretas um encaixe exato para uma peça, no qual se encontra dois contatos, um de cada lado extremo da casa, esses contatos são responsáveis pela identificação se há ou não uma peça na casa como mostra a Figura 4.1. Sistema de Encaixe MATERIAL CONDUTOR CONTATOS Figura 4.1 Sistema de encaixe das peças no tabuleiro. Cada peça do jogo contém na sua base um material condutor, sendo assim, conforme a peça é colocada no encaixe, esses contatos são fechados, mandando instantaneamente um sinal para o microcontrolador, o qual interpreta a ação (peça removida ou colocada) e realiza o devido processamento. Figura 4.2 Foto do contato de uma das casas. Página 43