Sei sulla pagina 1di 40

FATEC - FACULDADE DE TECNOLOGIA DE OURINHOS

Anlise de Sistemas e Tecnologias da Informao Habilitao: Desenvolvimento de Sistemas

INTELIGNCIA ARTIFICIAL APLICADA EM JOGOS DE RACIOCNIO

Juliano do Amaral Chaves

Ourinhos SP 2011

Juliano do Amaral Chaves

INTELIGNCIA ARTIFICIAL APLICADA EM JOGOS DE RACIOCNIO

Monografia apresentada Faculdade de Tecnologia de Ourinhos, em cumprimento as exigncias do curso de Anlise de Sistemas e Tecnologia da Informao, para obteno do titulo de Analista de Sistemas, sob orientao do Prof. Sidney Carlos Ferrari.

Ourinhos SP 2011

Ficha Catalogrfica
CHAVES, Juliano do Amaral inteligncia artificial aplicada em jogos de raciocnio / Juliano do Amaral Chaves. Ourinhos, Faculdade de tecnologia de Ourinhos, 2011 lX, p. 40, il Monografia Faculdade de Tecnologia de Ourinhos, 2011 1. Desenvolvendo o Jogo 8-Puzzle 2. A Inteligncia Artificial 3. Busca em Estados 4. Heursticas Utilizadas em Busca I. CHAVES, Juliano do Amaral II. Titulo.

INTELIGNCIA ARTIFICIAL APLICADA EM JOGOS DE RACIOCNIO

Juliano do Amaral Chaves


Essa monografia foi julgada e aprovada para obteno do Ttulo de Bacharel em Anlise de Sistemas e Tecnologia da Informao, habilitao em Desenvolvimento de Sistemas, da Faculdade de Tecnologia de Ourinhos.

Ourinhos,

de dezembro de 2011

Prof. Dr. Lia Cupertino Duarte Albino Diretor da Fatec Ourinhos

Banca examinadora

Prof. MS.

Prof. MS. Sidney Carlos Ferrari

Prof. MS.

O saber a ddiva mais preciosa do universo

A minha famlia e em especial a minha me, que me deu a oportunidade de conhecer a vida, que ela esteja em um lugar lindo. A todos os professores, que foram responsveis pela minha formao.

Agradecimento
A minha me, Claudelina, por ter tido orgulho das minhas conquistas e principalmente pelo carinho que proporcionou a mim, durante sua vida, no mais poderei retribuir, mas serei eternamente grato.

A minha esposa, Tamires, por fazer parte da minha vida e ter me dado duas princesas Julia e Tamara, obrigado por estar presente e fazer minha vida valer apena.

A meu orientador, prof. Sidney Carlos Ferrari por me motivar e me ajudar neste trabalho, que cheguei a acreditar que no poderia ser concludo, obrigado por ter apoiado a ideia do trabalho.

A meus amigos, Fabola Damasceno e Anderson Saturnino que me ajudaram quando tive dificuldades, obrigado por terem se importado e dedicado tempo em me ajudar.

A todos, que fazem parte da minha vida e contribuem para que os dias se tornem cada vez melhores.

Isso essencialmente uma tentativa de engenharia reversa dos mecanismos biolgicos. WHITBY BLAY

Resumo

A tecnologia surpreendente e fascina todo mundo, mas para quem esta na rea, ela tem algo mais, ela desperta a curiosidade de saber o que tem atrs da cortina, e nos motiva a querer entender como tudo feito. Hoje em dia praticamente tudo tem algum tipo de tecnologia e na rea do entretenimento tudo isso somado com a diverso, seguindo esta ideia que este trabalho se props a desenvolver um jogo de quebra cabea, que permite o jogador interagir com um tabuleiro para tentar organizar as peas fora do lugar, mas o jogador no esta sozinho nesta tarefa, pois o jogo conta com uma inteligncia artificial capaz de dar dica de qual pea a melhor escolha para mover ou solucionar todo o jogo. O trabalho apresentar os conceitos e algoritmos necessrios para desenvolver o jogo e a inteligncia artificial. Palavras chaves: 8-Puzzle, Busca em estado, Heurstica, Inteligncia Artificial.

Abstract

The technology is amazing and fascinates everyone, but for anyone in this area, it has something more, it awakens the curiosity to know what's behind the curtain, and motivates us to want to understand how everything is done. Nowadays almost everything has some kind of technology and entertainment area all this is added to the fun, and following this idea that this study proposes to develop a puzzle game that allows players to interact with a board to try to arrange the pieces out of place, but the player is not alone in this task, because the game has an artificial intelligence able to tip which piece is the best choice to move or solve the entire game. The paper presents the concepts and algorithms necessary to develop the game and artificial intelligence. Words - keys: 8-Puzzle, Search in a state, heuristics, Artificial Intelligence.

LISTA DE FIGURAS

Figura 1 - Fazendeiro tentado resolver o jogo .............................................................. 20 Figura 2 Possibilidades de desafios ........................................................................... 21 Figura 3 Estado do tabuleiro antes e depois do movimento ...................................... 22 Figura 4 Estrutura da Classe TPeca ........................................................................... 23 Figura 5 Algoritmo para criar as pea do tabuleiro ................................................... 23 Figura 6 Estruturas de dados para o movimento ....................................................... 24 Figura 7 Funo para o evento do movimento ao clicar na pea............................... 24 Figura 8 Algoritmo do movimento da pea em uma direo .................................... 25 Figura 9 Funo encontra pea pela sua origem ........................................................ 26 Figura 10 Funo para retornar uma pea pela localizao do slot ........................... 26 Figura 11 Estrutura da classe do formulrio do jogo ................................................. 27 Figura 12 Busca em espao de estado em um grafo .................................................. 31 Figura 13 Dois estados do Jogo 8-Puzzle .................................................................. 32 Figura 14 Busca em um estado do jogo 8-Puzzle ...................................................... 33 Figura 15 Estrutura de um n .................................................................................... 34 Figura 16 Cdigo em Object Pascal da estrutura do n............................................. 34 Figura 17 Algoritmo de busca em amplitude ............................................................ 35 Figura 18 Cdigo em Object Pascal da funo Busca ............................................... 35 Figura 19 Clculos de heursticas de um estado ........................................................ 37

Sumrio
1 INTRODUO ...................................................................................................... 13 2 REVISO DA LITERATURA .............................................................................. 15 3 METODOLOGIA ................................................................................................... 18 4 A HISTRIA DO JOGO 15 PUZZLE ................................................................... 20 5 DESENVOLVENDO O JOGO 8-PUZZLE ........................................................... 22 6 A INTELIGNCIA ARTIFICIAL ......................................................................... 28 7 BUSCA EM ESTADO ........................................................................................... 30 8 HEURSTICAS UTILIZADAS EM BUSCA ........................................................ 37 9 CONCLUSO ........................................................................................................ 39 REFERENCIAS ........................................................................................................... 40

FATEC Faculdade de Tecnologia de Ourinhos

13

1 INTRODUO

Em um mundo cada vez mais evoludo tecnologicamente, difcil no perceber que aos poucos as mquinas esto ficando cada vez mais inteligentes e tambm mais presentes em nossas vidas, chega ser assustador pensar que um dia possa existir uma mquina capaz de pensar e executar tarefas que um ser humano no consiga. Por outro lado, tambm desperta o interesse em desvendar o que h por traz desta tecnologia que a cada dia domina um pouco mais as nossas vidas e que tambm traz aprimoramentos de trabalhos antes dificultosos e demorados, agora mais fceis e rpidos. Essa tecnologia no para por a, ela muito ampla e tambm est presente no entretenimento digital. H algum tempo, os jogos eletrnicos deixaram de ser apenas passa tempo e passou a ser introduo de cultura, criatividade, lazer e conhecimento para os jogadores mais dedicados.

O objetivo geral deste trabalho desenvolver um jogo de raciocnio conhecido como 8-Puzzle, apresentando assim alguns conceitos simples de implementao de jogo e tambm explorar uma pequena rea da inteligncia artificial (IA) muito utilizada em vrios tipos de jogos. Para atingir o objetivo geral, foram necessrios alguns conhecimentos especficos que devero ser explorados para obter xito nas implementaes do jogo e da inteligncia artificial. Abaixo segue os conhecimentos bsicos de programao necessrios. Conhecer programao orientada a objeto; Conhecer linguagem de programao Object Pascal com Delphi 2010; Manipular vetor e matriz dinmico; Saber algoritmos de ordenao; Manipular ponteiros, filas e pilhas; Manipular imagens em tempo de execuo; Adquirir conceito de busca em espao, busca em amplitude; Conhecer heurstica de busca.

Este projeto poder servir como base para desenvolvedores iniciantes de jogos digitais e tambm para explorar o conhecimento em buscas com heursticas introduzidas em inteligncia artificial. Este trabalho est estruturado da seguinte forma, este captulo apresenta a introduo e o objetivo; o segundo captulo apresenta a reviso da literatura onde so explorados os

FATEC Faculdade de Tecnologia de Ourinhos

14

trabalhos semelhantes e diferenas apresentadas; o terceiro captulo mostra os mtodos e ferramentas utilizados para o desenvolvimento do trabalho; o quarto captulo apresenta a histria do jogo de quebra-cabea; o quinto captulo ajuda a desenvolver o jogo 8-Puzzle, o sexto captulo explora o contexto da inteligncia artificial, o stimo captulo demonstra a busca em estado, o oitavo captulo exibe heursticas utilizadas na busca, o nono captulo e, por fim, a concluso.

FATEC Faculdade de Tecnologia de Ourinhos

15

2 REVISO DA LITERATURA

Para o desenvolvimento do trabalho foram feitas pesquisas de diversos trabalhos semelhantes, apresentando vrias diferenas significativas no jogo desenvolvido, nos trabalhos pesquisados o jogo 8-Puzzle foi o nico com implementao de resoluo utilizando inteligncia artificial, pois no trabalho desenvolvido com o jogo 15-puzzle foi possvel perceber que a forma de resoluo no utilizava algoritmo de inteligncia artificial, mas sim um algoritmo de ordenao que respeitava a regra do movimento do jogo e assim encontrando a soluo sem a certeza de que uma soluo tima, ou seja, com a quantidade mnima possvel de movimentos. Entres as diferenas nos algoritmos, implementando a inteligncia artificial no houve muita diferena dos conceitos estudados, tendo apenas diferenas no desenvolvimento do algoritmo, mas seguindo os conceitos encontrados nas pesquisas bibliogrficas.

Luger (2004) detalha estes algoritmos com simplicidade e eficincia, algoritmos essenciais para que se possa programar rotinas de busca em espao usando heursticas de otimizao. Estes mesmos conceitos tambm foram explorados por Russel e Norvig (2004), que explicaram e demonstraram a utilizao das funes heursticas na busca. possvel ter uma viso mais ampla de onde se pode aplicar busca heursticas nos exemplos de Costa e Simes (2004), onde so explorados casos necessrios para obter o menor custo computacional e o melhor resultado.

Nas pesquisas documentais foram encontrados trabalhos semelhantes como o de Permadi (2010), que desenvolve o jogo 8-Puzzle com uma interface simples com a implementao de busca heurstica. Em seu trabalho no foi demostrado a implementao, mas sim o jogo e seu funcionamento, porm ele cita a utilizao de busca heurstica e que tambm possvel perceber que a implementao foi bem sucedida, pelo tempo e quantidade de movimentos na resoluo de um determinado problema com custo computacional alto.

Entre os trabalhos documentais, teve destaque com grande importncia para o desenvolvimento e aplicao de inteligncia artificial, o trabalho de Hbner (2010), um professor de Universidade Federal de Santa Catarina. Seu trabalho foi alm da implementao de algoritmos de inteligncia artificial utilizando busca em estado, Hbner desenvolveu um

FATEC Faculdade de Tecnologia de Ourinhos

16

framework completo para a utilizao de busca em estado utilizando a linguagem de programao Java, sendo aplicvel em vrios tipos de problemas e jogos de raciocnio. Para a demonstrao prtica do framework, ele desenvolveu uma interface com vrios tipos e opes de problemas que podem ser solucionados utilizando o framework, inclusive o jogo 8-Puzzle. Seu trabalho tendo a inteligncia artificial como foco, explorou pouco a interface do jogo 8Puzzle, utilizando apenas textos formatados em forma de uma matriz para demostrar cada passo da soluo. Mesmo utilizando o framework de Hbner, no foi possvel obter soluo tima para o jogo original com quinze peas o 15-puzzle, pois a quantidade de peas um fator muito importante para a aplicao da busca em estado, portanto a quantidade de busca usada pelo algoritmo est relacionada com as possveis variaes de desorganizao das peas. O valor de variao de estados distintos do jogo um clculo fatorial da quantidade de peas mais um, porm somente a metade destes estados tem soluo, considerando a regra do jogo que permite que uma pea ocupe apenas o espao vazio, assim para termos o valor de estados solucionveis, temos que dividir o resultado do clculo por dois. Mesmo assim um jogo de quinze peas pode no chegar a uma soluo por estourar a capacidade de memria, ento para solucionar esse problema da memria necessrio aplicar uma heurstica capaz de minimizar o custo computacional e chegar soluo do estado problema.

Este trabalho prope um diferencial significativo de todos os vistos nas pesquisas documentais e que foram implementados, deve-se o fato da possibilidade de alterar a quantidade de peas, tendo as opes de alternar entre oito e quinze peas, podendo assim, comparar o desempenho da busca em dois nveis de problemas, alm de apresentar conceitos de desenvolvimento de jogos. O trabalho tambm difere na linguagem utilizada para o desenvolvimento, pois a maioria dos trabalhos pesquisados foi desenvolvida utilizando a linguagem de programao Java, enquanto que este trabalho utiliza a linguagem object pascal.

A pesquisa documental complementou na prtica a pesquisa bibliogrfica, pois muitos dos conceitos adquiridos com bibliografias seriam complicados para implementar sem ajuda, entretanto, as bibliografias foram essenciais para ter um compreendimento mais amplo de inteligncia artificial, e tambm ajudaram a otimizar os algoritmos implementados possibilitando compreender com clareza o conceito do estudo em questo. Inteligncia artificial (IA) o estudo do comportamento inteligente (em homens, animais e mquinas) e a tentativa de encontrar formas pelas quais esse comportamento possa ser transformado em qualquer tipo de artefato por meio da engenharia. (WHITBY, 2004).

FATEC Faculdade de Tecnologia de Ourinhos

17

Luger(2004, p. 95) explica que Para ser bem sucedido no projeto e na implementao de algoritmos de busca, um programador deve ser capaz de analisar e predizer o seu comportamento.. Entendendo assim, que para fazer uma busca, voc primeiro deve definir o comportamento que ela deve ter e que algumas questes deve ser levantadas: como se h uma garantia do sistema encontrar uma soluo? Se o sistema sempre chegar ao fim ou se pode ficar preso em um lao infinito? Quando se encontra uma soluo, garantido que seja tima? Qual a complexidade do processo de busca em termos de consumo de tempo e memria? Estas questes foram levantadas por Luger (2004) e determina o sucesso de uma busca em espao de estados, j que se ignoradas podem fazer com que o sistema no chegue a seu objetivo ou que leve muito tempo para resolver o problema.

Para quem no acredita no potencial da IA e acredita que tudo que as mquinas fazem fruto do que foram programadas, no esto to errados, porm se analisar melhor perceber que alguns problemas so praticamente impossveis de ser resolvido com a melhor soluo por um ser humano, no pela incapacidade de resolver e sim pela limitao de pensar em todas as variveis do problema e assim chegar melhor soluo, fazendo assim com que se resolva o problema com as variveis de menos complexidade e que nem sempre a melhor soluo. Ento, esta tarefa passada para uma mquina que no tem crebro, mas que poder analisar milhares de estados do problema em segundos, chegando na melhor soluo antes mesmo que uma pessoa tivesse comeado a pensar na forma de como iria resolver. Este fato encontrado em Costa e Simes (2004).

Existe a crena generalizada de que os computadores s fazem aquilo para que foram programados. No entanto, eles so chamados cada vez mais a resolver problemas complexos, para os quais se torna difcil antecipar tudo o que pode acontecer, pelo que os computadores necessitam estar preparados para estas situaes. (COSTA E SIMES, 2004, p. 37).

Portanto, o mais coerente no pensar na inteligncia artificial como uma concorrente da inteligncia do homem, mas sim como uma extenso da capacidade humana em processar dados em grandes quantidades, tornando possvel a execuo de tarefas que tanto o homem, quanto a mquina separados, no so capazes de executar, mas juntos, interagem de forma a superar grandes dificuldades em todas as reas exploradas pelo homem.

FATEC Faculdade de Tecnologia de Ourinhos

18

3 METODOLOGIA

Para o desenvolvimento do projeto, foram feitas pesquisas bibliogrficas que permitiram adquirir conhecimentos essenciais e importantes para o entendimento das busca em estado, aplicadas ao jogo 8-puzzle, a busca em estado um recurso de inteligncia artificial que possibilita que um problema seja solucionando com uma soluo tima, testando vrios estados do problema at que se chegue soluo ou retorne falha se a soluo no existir. Vrios algoritmos de busca puderam ser analisados de uma forma simples com pequenas variaes entre os autores, as buscas foram exploradas e exemplificadas, o que facilitou o desenvolvimento do projeto. claro que para um amplo conhecimento de I.A. exigido pelo projeto, foi necessrio que se fizesse vrias releituras variando entre os autores, a fim de compreender todas as dificuldades expostas na aplicao da teoria proposta, portanto a aprendizagem foi gradativa e s vezes retroativa, chegando a alguns momentos desconsiderar o contedo apreendido para possibilitar que novas pesquisas pudessem resolver e explicar aplicaes que no atingiam o objetivo por falta de conhecimento. Entre as pesquisas bibliogrficas, destacaram os autores Luger (2004) e Russel e Norvig (2004), expondo os conceitos de inteligncia artificial fundamentais para o sucesso deste projeto, Costa(2004) tambm teve participao com demonstraes de algoritmos de busca. As pesquisas foram indispensveis desde o inicio do projeto.

Para a aplicao dos conceitos de inteligncia artificial junto com o jogo 8-Puzzle foi utilizado linguagem de programao Object Pascal e que para solucionar o jogo foram implementados as busca em estado em amplitude (largura) e a busca A Estrela (A*), sendo a ltima usada como soluo definitiva para o jogo. Para a escolha da busca foi levado em considerao a melhor soluo com o menor custo computacional. E assim foi escolhida a busca A* que apresenta estas caractersticas, sendo utilizada na maioria dos jogos atuais que precisam movimentar a personagem de um ponto para outro, respeitando os obstculos do percurso, sendo assim perfeita para o jogo 8-Puzzle. Para a implementao das heursticas na busca A*, foi utilizado um algoritmo de fila ordenada usando como parmetro de ordenao o custo do problema, para encontrar o custo do problema foram utilizadas as heursticas, quadrados fora do lugar e distncia de Manhattan. A implementao da busca em amplitude, foi para efeito de comparao com a Busca A*. Tambm foi feito uma variao da busca A*, utilizando somente a heurstica distncia de Manhattan que diminuiu em muito o custo

FATEC Faculdade de Tecnologia de Ourinhos

19

computacional, mas encontrando uma soluo no tima, por ter um custo computacional baixo, foi possvel utiliz-la para solucionar problemas do jogo com quinze peas. Na implementao das buscas foram utilizado os recursos de ponteiros, pilhas e filas que foram o alicerce dos algoritmos de busca, pois sem estes recursos alm de ter um trabalho de codificao muito maior, possivelmente perderia desempenho de processamento. Para o desenvolvimento de alguns algoritmos foram utilizadas pesquisas documentais, que auxiliram o aperfeioamento da implementao do projeto.

FATEC Faculdade de Tecnologia de Ourinhos

20

4 A HISTRIA DO JOGO 15 PUZZLE

Loyd (1914) compilou centenas de colunas antes publicadas em vrios jornais e revistas de que era colaborador. Em uma destas colunas, ele conta a histria de um quebracabea mais popular, o 15-Puzzle, jogo que perturbou muitos solucionadores que se arriscavam em tentar resolv-lo.

Segundo Ximenes (2010), ele conta que O fifteen puzzle entrou para a Histria como uma das mais diablicas invenes de Loyd.. A figura 1 mostra a dificuldade que o solucionador tinha para resolver o problema proposto por Loyd (1914). O problema proposto tinha uma recompensa de mil dlares para a primeira pessoa que o solucionasse, entretanto nunca foi pago, pois o problema no tinha soluo. O fato que apenas a metade das combinaes de peas possveis tem soluo, s tem soluo nos casos em que para desorganizar o tabuleiro, utilize a regra do movimento da pea ser deslizada para a casa vazia, caso uma pea seja troca de lugar com outra sem respeitar a regra do movimento, o jogo ficar sem soluo.

Figura 1 - Fazendeiro tentado resolver o jogo Fonte: XIMENES, 2010

Este era o grande segredo de Loyd (1914) e que deixava muita gente perturbada tentando solucionar o problema.

Um fazendeiro olhava para o quadro com o jogo, mostrando raiva na mo direita fechada e desespero no gesto de esfregar os cabelos com a mo esquerda. O cavalo e o arado, deixados de lado, indicavam o grau de concentrao e envolvimento que o jogo era capaz de despertar naqueles que ousassem buscar a sua soluo. (XIMENES, 2010).

FATEC Faculdade de Tecnologia de Ourinhos

21

Loyd (1914) conta que as histrias absurdas so contadas e destaca a caracterstica misteriosa do jogo que ningum conseguia lembrar-se da seqncia de movimentos realizados que se chega soluo do problema.

Os habitantes mais velhos da Terra dos Quebra-Cabeas lembraro como, no incio da dcada de 70 (do sculo XIX), enlouqueci o mundo todo por causa de uma pequena caixa de blocos mveis que se tornou conhecida como o 'Quebra-Cabeas 14-15'. Os quinze blocos eram dispostos em ordem regular dentro da caixa quadrada, mas com os nmeros 14 e 15 invertidos, assim como aparece na ilustrao acima. O jogo consistia em mover os blocos, um de cada vez, de modo a traz-los de volta posio inicial em todos os aspectos, exceto que o erro nos nmeros 14 e 15 deveria ser corrigido. (LOYD 1914, p. 235)

Ximenes (2010) explica que embora Loyd considere as histrias ludicrous (absurdas, ldicas, ridculas), ele as conta detalhadamente para dar fora ao folclore em torno do fifteen puzzle, demonstrando a sua inclinao para a autopropaganda..

Ximenes (2010) cita que ainda foram propostas por Loyd (1914) outras possibilidades de desafios aos jogadores. Sendo que uma delas consistia em deixar o espao vazio no canto superior esquerdo ao invs do original no canto inferior direito, outra possibilidade era virar o tabuleiro para o lado direito ou esquerdo deixando os nmeros deitados e resolv-lo como se estivessem na posio original, essas possibilidades podem ser analisadas na figura 2 e ainda um outro desafio que consistia em distribuir os nmeros para que formassem, na soma, um total de 30, em dez direes; as quatro horizontais, as quatro verticais e as duas diagonais.

Figura 2 Possibilidades de desafios Fonte: XIMENES, 2010

FATEC Faculdade de Tecnologia de Ourinhos

22

5 DESENVOLVENDO O JOGO 8-PUZZLE

Como j foi visto na metodologia, foi utilizada a linguagem de programao Object Pascal, junto com o ambiente de desenvolvimento integrado (IDE) do Delphi para o desenvolvimento do jogo. O desenvolvimento do jogo inicializa com a definio dos objetivos a serem atingidos e com a ideia de como dever ser a interface grfica, este trabalho no ir aprofundar o desenvolvimento da parte grfica e sim a mecnica do jogo e por isso os cdigos apresentados tero apenas as propriedades necessrias para explicar os conceitos bsicos da criao do jogo, no entanto possvel ver a implementao da parte grfica no cdigo fonte do jogo no disco em anexo.

Como ponto de partida do jogo devemos identificar a sua estrutura principal, que se trata de um jogo com oito peas e um espao vazio dentro de uma caixa, as peas prximas ao espao vazio podem ser movidas para o espao vazio deixando um espao vazio no seu local de origem, as peas s podem ser movidas no sentido horizontal e vertical.

Figura 3 Estado do tabuleiro antes e depois do movimento Fonte: AUTOR

Um estado problema do jogo qualquer estado diferente do estado soluo, neste trabalho o estado soluo uma sequencia numrica ordenada crescentemente dentro da matriz inicializando pelo nmero um. Para a criao das peas foi construda uma classe como mostrada na figura 4. Esta classe ser utilizada para criar todas as peas do jogo. Foi utilizada como ancestral a classe TImage, que contem recursos bsicos de manipulao de imagem para facilitar o desenvolvimento. Para o controle do movimento da pea foram criadas as propriedades origem, slot, row e col. A propriedade origem ser utilizada para

FATEC Faculdade de Tecnologia de Ourinhos

23

identificar o local original das peas, assim ser possvel calcular as funes heursticas na implementao da IA, a propriedade Slot responsvel para identificar a localizao da pea, ou seja, em qual posio a pea est localizada. Ser til para saber se a pea est em seu local de origem. As propriedades row e col so necessrias para delimitar o movimento da pea para que no se mova para um sentido no permitido.

Figura 4 Estrutura da Classe TPeca Fonte: AUTOR

Com a classe da pea j escrita, poder criar o tabuleiro com todas as peas do jogo. Na figura 5 possvel visualizar o algoritmo completo da criao do tabuleiro, no entanto algumas funes utilizadas neste algoritmo sero detalhadas mais a frente.

Figura 5 Algoritmo para criar as pea do tabuleiro Fonte: AUTOR

FATEC Faculdade de Tecnologia de Ourinhos

24

Atravs dos dois laos de repetio, foi possvel criar uma matriz com trs colunas e trs linhas totalizando nove peas. Para cada pea foi atribudo uma funo no evento OnClick, esta funo responsvel por movimentar a pea ao ser clicada, no sendo atribuda na ltima pea criada, pois esta recebe a funo que oculta a pea fazendo com que o tabuleiro fique com um espao vazio permitindo assim que as peas adjacentes possam ser movidas. Porm, antes da implementao da funo do movimento necessrio escrever duas estruturas que sero utilizadas para facilitar a implementao do movimento.

Figura 6 Estruturas de dados para o movimento Fonte: AUTOR

Com as estruturas da figura acima, ser mais fcil implementar o movimento.

Figura 7 Funo para o evento do movimento ao clicar na pea Fonte: AUTOR

FATEC Faculdade de Tecnologia de Ourinhos

25

Depois de definido se a pea pode ser movida e qual a direo do movimento, chamado funo Move, que recebe como parmetro a pea e a direo do movimento, pois essa funo que realmente ir fazer o movimento. Nesta funo feita a troca de valores entre a pea movida e a pea oculta que representa o slot vazio e tambm passa valores para as propriedades da varivel empty que permite ao algoritmo do movimento identificar quais peas podem ser movidas atravs da referencia da localizao do espao vazio.

Figura 8 Algoritmo do movimento da pea em uma direo Fonte: AUTOR

Para alterar valores da pea oculta que representa o espao vazio, necessrio utilizar uma funo que recebe como parmetro o nmero de origem da pea, assim a funo encontra a pea pela sua origem e possibilita fazer alteraes em suas propriedades, podendo ento fazer com que os algoritmos de movimento sejam ntegros quanto direo do movimento

FATEC Faculdade de Tecnologia de Ourinhos

26

uma vez que seja possvel localizar a pea oculta e saber se a pea clicada pode ser movida para o local em que esta a pea oculta.

Figura 9 Funo encontra pea pela sua origem Fonte: AUTOR

Alm da funo que encontra uma pea pela sua origem tambm ser necessrio uma funo que encontre a pea pela slot em que est localizada, essa funo ser utilizada quando for necessrio mover a pea informando apenas sua localizao sem precisar clicar sobre ela. Sua estrutura semelhante a uma funo anterior com diferencial na propriedade utilizada na condio do retorno.

Figura 10 Funo para retornar uma pea pela localizao do slot Fonte: AUTOR

FATEC Faculdade de Tecnologia de Ourinhos

27

Com os algoritmos mostrados possvel criarmos o jogo 8-Puzzle possibilitando movimentar a pea clicando sobre ela. Abaixo segue a figura com as estrutura da classe do formulrio do jogo. Essa estrutura apenas para a criao do jogo, sendo que aps a implementao da inteligncia artificial a estrutura ir sofrer alteraes, no entanto estas alteraes sero apresentadas no andamento do trabalho.

Figura 11 Estrutura da classe do formulrio do jogo Fonte: AUTOR

Nestes algoritmos no foram aprofundados a manipulao de recursos grficos, porm possvel encontrar no disco em anexo, o cdigo fonte do projeto que implementa alguns recursos que melhora o visual do jogo.

FATEC Faculdade de Tecnologia de Ourinhos

28

6 A INTELIGNCIA ARTIFICIAL

A inteligncia uma das razes que distingue o homem do animal, mas o que aconteceria se uma maquina tambm fosse inteligente? Ela se tornaria homem? O homem se tornaria animal? Ou as maquinas dominariam o mundo? Estas so algumas das ideias que Whitby (2004) apresenta como argumento de temor de algumas pessoas quando ouvem falar em inteligncia artificial (IA). Ele cita que alguns mitos sobre IA no tem a veracidade como fonte do conhecimento, contradizendo os mitos, o avano dos estudos na rea da inteligncia artificial, deixa mais claro que o rumo desta tecnologia, vai alm da fico introduzida nas mentes das pessoas, por meio das mdias de entretenimento. J utilizada em varias reas profissionais como instrumento de preciso, soluo rpida e eficcia, a inteligncia artificial faz parte do dia-a-dia de muitas pessoas.

Considerada uma cincia recente por Stuart e Norvig (2004), ele conta que a inteligncia artificial surgiu logo aps a segunda guerra mundial e que o prprio nome foi criado em 1956, despertando interesse por vrios cientistas de outras reas, argumentando que todas as boas ideias j foram desenvolvidas por Galileu, Newton, Einstein e outros cientistas que participaram da historia da fsica e matemtica, no entanto a IA ainda teria espaos para o surgimento de vrios Einsteins.

Denominamos nossa espcie Homo sapiens Homem sbio porque nossas capacidades mentais so muito importantes para ns. Durante milhares de anos, procuramos entender como pensamos; isto , como um mero punhado de matria pode perceber, compreender, prever e manipular o mundo muito maior que ela prpria. O campo da inteligncia artificial, ou IA, vai ainda mais alm: ele tenta no apenas compreender, mas tambm construir entidades inteligentes. (STUART E NORVIG, 2004)

Stuart e Norvig (2004), explicam que IA abrange vrios subcampos, partindo de reas de uso geral como aprendizado e percepo, at tarefas mais especficas como jogos de xadrez, demonstraes de teoremas matemticos, criao de poesia e diagnstico de doenas. E assim automatizando tarefas intelectuais, atuando em um campo universal relevante para qualquer atividade intelectual humana.

FATEC Faculdade de Tecnologia de Ourinhos

29

Contudo no coerente pensar na IA, como sendo uma soluo que resolver todos os problemas, pois seu prprio desenvolvimento tende a superar grandes desafios cientficos e crticas de pessoas fora da rea, que interpretam a IA como sendo mal direcionada ou impossvel. Whitby (2004) descreve essas dificuldades e afirma que no afetou o progresso e to pouco o entusiasmo fora perdido. Ele tambm faz lembrar que os requerimentos para pesquisas de IA, no necessitam de equipamentos absurdamente caros ou restries de local, sendo a principal qualificao necessria, a capacidade de pensar criativamente e ter persistncia nos problemas com dificuldade mais elevada.

Com a evoluo da tecnologia novas reas de problemas surgem para a IA, no entanto h tambm uma grande quantidade de tcnicas empregadas, que possibilita que a IA contribua para que a soluo possa ser satisfatria. Este trabalho no tem como objetivo detalhar todas as teorias fundamentais de IA e sim usar uma de suas reas para solucionar problemas comuns em jogos que envolvam o raciocnio para jogar.

[...] como a busca guiada pela heurstica fornece uma boa base para certos tipos de problemas, o que levou a programas de jogo de classe mundial (WHITBY, 2004, p. 83).

Este trabalho iniciou com o desenvolvimento do jogo, tornando-o funcional para ser jogado por uma pessoa, aps o desenvolvimento do jogo, chega-se a parte da aplicao da IA para solucionar o jogo quando no estiver em seu estado de soluo. A primeira interao com a IA neste momento identificar qual rea e tcnica dever ser utilizada para obter sucesso na aplicao. O no conhecimento das reas de IA pode dificultar a estratgia a ser utilizada, e exigir pesquisas at que seja identificada qual rea da IA que ir permitir o incio da aplicao.

Para que o jogo 8-Puzzle proposto por este trabalho tenha a capacidade de chegar a soluo, sero utilizadas as tcnicas de buscas exploradas por Luger (2004) e tambm por Russel e Norvig (2004) que utilizaram exemplos da aplicao da tcnica no jogo base deste trabalho.

FATEC Faculdade de Tecnologia de Ourinhos

30

7 BUSCA EM ESTADO

Como visto no capitulo anterior, a rea da IA com potencial para resolver os problemas do jogo 8-Puzzle, denominado de busca em espao de estado. Para entender o que so buscas em espao de estados, importante compreender como o ser humano age com determinados problemas.

[...] problemas so resolvidos realizando busca entre escolhas alternativas, apoiada por uma viso de senso comum da resoluo de problemas por seres humanos. Os seres humanos geralmente consideram varias estratgias alternativas sobre o modo de resolver um problema. Um jogador de xadrez considera geralmente varias jogadas alternativas, selecionando a melhor de acordo com critrios como as possveis respostas do adversrio ou o grau com que varias jogadas correspondem a uma certa estratgia global do jogo. (NEWELL E SIMON apud LUGER, 2004, p. 60)

Por meio da citao de Luger (2004), possvel entender como o ser humano resolve um determinado problema, analisando varias alternativas e escolhendo a melhor de acordo com algum critrio, pode considerar-se que a analise de varias alternativas compreende-se como a busca pela melhor escolha, utilizando um critrio de comparao. Luger da um exemplo de como a busca usada para resolver um problema mais complicado, utilizando no exemplo uma pane mecnica em um automvel. Ele afirma que embora este problema no parea ser adequado para utilizar busca em espao de estado, como o jogo da velha ou o jogo de xadrez, um problema que se enquadra bem nesta estratgia.

Um grafo um conjunto de ns e arcos que se conectam. Um grafo rotulado tem um ou mais descritores (rtulos) atribudos a cada n, que distingue aquele n de qualquer outro n do grafo. Num grafo de espao de estados, estes descritores identificam estados num processo de soluo de problema. (LUGER, 2004, p. 98)

Usando como comparao entre o problema do jogo e a pane mecnica, Luger explica que como no jogo-da-velha ou o jogo de xadrez , um n de um grafo representa um estado do tabuleiro e que no problema da pane o n representa um estado do conhecimento parcial sobre problemas mecnicos do automvel. Assim o n inicial do problema vazio indicando que no h nenhum conhecimento sobre a causa do problema. Ento a primeira coisa a ser feita, seria o mecnico perguntar ao cliente qual o parte do automvel que parece estar causando o

FATEC Faculdade de Tecnologia de Ourinhos

31

problema, gerando vrios outro ns partindo do n inicial do grafo e cada novo n representando um estado do problema.

Com o exemplo de Luger, possvel ter uma ideia das possibilidades da aplicao da busca em espao de estado e que o estado inicial do problema representa o n inicial em um grafo e que a partir de uma informao novos ns so gerados. Este conceito de busca ser a base do desenvolvimento de IA para este trabalho e para ter um entendimento melhor a figura abaixo mostra a estrutura de uma busca em grafo.

Figura 12 Busca em espao de estado em um grafo Fonte: AUTOR

Para compreender melhora a figura acima, pode utiliza-se do exemplo da pane mecnica no automvel, definindo o n inicial como uma pergunta do mecnico para o cliente sobre onde esta o problema e limitando o cliente em apenas trs respostas, sendo a primeira resposta o motor, a segunda transmisso e por fim a terceira freios. Se o cliente responder motor ento duas novas perguntas devem ser feitas, se o motor da partida, ou se o motor no da partida e assim novas perguntas deveram ser feitas para cada resposta dada at que a causa do problema seja encontrada.

muito importante fazer todas as perguntas possveis para cada n, permitindo assim que todas as hipteses da causa do problema sejam analisadas, evitando que a soluo no seja encontrada por no ter explorado um n que poderia ser a soluo. Por exemplo, caso a resposta da pergunta, o motor gira? for no, uma das prximas perguntas dever ser, as luzes acendem? Se a resposta para esta pergunta for no, h uma grande chance da causa do problema estar na bateria do automvel, portanto se esta pergunta no for feita, a soluo do problema poder no ser encontrada ou levar mais tempo para acha-la.

FATEC Faculdade de Tecnologia de Ourinhos

32

No entanto, at agora em todos os exemplos de busca citados, o objetivo encontrar a soluo, porm a soluo em si no a resposta para todo o problema e to pouco o nico objetivo da busca. Se o problema for solucionar o jogo 8-Puzzle de nada ir adiantar a busca achar a soluo, porque para resolver o jogo, dever mover as peas at que todas elas estejam em seus lugares corretamente. E sendo assim o importante saber qual pea deve ser movida por vez at que o jogo esteja solucionado.
Problema Soluo

Figura 13 Dois estados do Jogo 8-Puzzle Fonte: AUTOR

Analisando a figura acima, so identificados dois estados do jogo 8-Puzzle, o estado esquerda o problema ou estado inicial e o estado direita a soluo ou estado meta. No entanto, mesmo sabendo qual a soluo no possvel resolve-lo, pois neste caso necessrio saber os passos que devem ser feitos at a soluo.

A busca em extenso uma estratgia simples em que o n raiz expandido primeiro, em seguida todos os sucessores do n raiz so expandidos, depois os sucessores desses ns e assim por diante. Em geral todos os ns em uma dada profundidade na rvore de busca so expandidos, antes que todos os ns no nvel seguinte sejam expandidos. (RUSSEL e NORVIG, 2004, p. 74)

Na figura 14 possvel identificar o comportamento da busca em espao de estados. perceptiva a identificao do momento em que a busca encontra a soluo, no entanto, nota-se que a busca continua a explorar novos estados do problema. Este comportamento caracterstico de uma busca em amplitude ou largura, cada n gerado colocado na fila para ser explorado respeitando a ordem da sequencia da fila.

Russel e Norvig (2004, p. 74) denominam esta busca como busca em extenso e explicam que a busca em extenso pode ser implementada chamando-se BUSCA-EM-

FATEC Faculdade de Tecnologia de Ourinhos

33

RVORE com uma borda vazia que seja uma fila do tipo first-in-first-out (FIFO) assegurando-se que os ns visitados primeiros sero expandidos primeiros. Russel e Norvig afirmam que esta estratgia de busca garante que todos os ns de uma profundidade sejam expandidos ou explorados antes de passar para uma prxima profundidade. A profundidade o valor em que o n vai se distanciando do n raiz, por exemplo, na figura 14 atingiu-se uma profundidade mxima de trs nveis e a soluo foi encontrada na profundidade dois. Porm o fato da soluo ter sido encontrada no resolve o problema do jogo, neste caso o que importa o caminho do n inicial at a soluo encontrada, permitindo que seja possvel mover as peas at que o jogo esteja resolvido.

Figura 14 Busca em um estado do jogo 8-Puzzle Fonte: AUTOR

Sabendo que para solucionar um problema do jogo 8-Puzzle necessrio conhecer o caminho do n inicial at o n meta, ser preciso que o n guarde informaes de seu ancestral, assim quando a busca encontrar a soluo, poder montar o caminho partindo da soluo at o n inicial. Antes de iniciar a implementao da busca importante analisar bem

FATEC Faculdade de Tecnologia de Ourinhos

34

a definio do problema. Russel e Norvig (2004) afirmam que um problema pode ser definido formalmente por quatro componentes: O estado inicial o problema por onde a busca se inicializa. A funo sucessor permite que novos estados sejam criados a partir de um determinado n, e tambm contm a descrio das aes possveis que esto disponveis para que o sucessor criado seja um sucessor vlido. O teste objetivo responsvel por verificar se um dado estado a soluo. A funo de custo do caminho atribui um valor numrico a cada caminho. Com a definio do problema bem resolvido j ser possvel interpretar melhor os algoritmos de busca, faltando apenas entender a estrutura do n, que poder ser visualizado na figura abaixo.

Figura 15 Estrutura de um n Fonte: adaptado de RUSSEL e NORVIG (2004)

Ns so as estruturas de dados a partir das quais a rvore de busca construda. Cada n tem um pai, um estado e diversos campos de anotao. Setas apontam do filho para o pai (RUSSEL e NORVIG, 2004, p. 72). Abaixo segue a estrutura de dados do n que ser utilizado nos algoritmos de busca.

Figura 16 Cdigo em Object Pascal da estrutura do n Fonte: AUTOR

FATEC Faculdade de Tecnologia de Ourinhos

35

Definidas as informaes que devem compor o n que ser utilizado na busca, importante conhecer o algoritmo da busca. Luger (2004, p. 111) explica que Alm de especificar uma direo de busca (guiada por dados ou por objetivos), um algoritmo de busca deve determinar a ordem na qual os estados so examinados na rvore ou no grafo..
funo busca_em_amplitude; incio abertos := [iniciar]; fechados := [ ]; enquanto abertos [ ] faa inicio remova o estado mais esquerda em abertos, chame-o de X; se X for um objetivo, ento retorne SUCESSO seno incio gere filhos de X; coloque X em fechados; descarte filhos de X se j estiverem em abertos ou fechados; coloque os filhos que restam no final direita de abertos; fim; fim; retorne FALHA fim. Figura 17 Algoritmo de busca em amplitude Fonte: LUGER (2004)

Por meio do algoritmo da busca em amplitude de Luger, foi possvel escrever a funo da busca que ser utilizada no jogo 8-Puzze deste trabalho.

function TBuscaEstado.Busca(Const Inicial: TBoard): PNode; begin Result := nil; // Retorna vazio se no houver soluo NodoInicial(Node, Inicial); // Cria o n Inicial Abertos.Push(Node, Custo); // Coloca o n na fila de Abertos while not AbertosVazio do // Enquanto a fila no estiver vazia faa begin Node := Abertos.pop; // Remove o primeiro n da fila Fechados.Push(Node); // Inclui o n Atual na lista de fechados if EMeta(Node.Estado) then // Verifica se o n atual soluo begin Result := Node; // Retorna o n atual se for a soluo Break; // Quebra o lao de repetio end; Expandir(Node); // Gera filhos a partir do n atual AddSucessores; // Inclui se no esta aberto ou fechado end; end;

Figura 18 Cdigo em Object Pascal da funo Busca Fonte: AUTOR

FATEC Faculdade de Tecnologia de Ourinhos

36

O cdigo de programa da busca da figura acima, apresenta varias outras funes que so invocadas com o objetivo de processar informaes possibilitando a busca encontrar a soluo. Os cdigos dessas funes podem ser encontrados no disco em anexo. A implementao da funo da busca em amplitude, teve um diferencial comparado com o algoritmo de Luger (2004), que utilizou uma fila ordena para armazenar os ns, sendo a forma adequada para implementar a busca em amplitude, fazendo a busca expandir todos os ns de um determinado nvel ou profundidade antes de ir para o prximo nvel, no entanto, Luger tambm apresentou vrios outros algoritmos de busca com comportamentos diferentes, como a busca em profundidade que ao contrario da busca em amplitude, vai aprofundando os nveis at que a soluo seja encontrada ou que no tenha mais como aprofundar fazendo um processo de retrocesso.

Luger tambm apresentou buscas com heursticas que aperfeioam o custo computacional e encontra a soluo tima de um problema se ela existir. Ento o cdigo da busca da figura 18 difere na incluso do n na fila de abertos, pois a fila utilizada no cdigo da busca ordenada pela funo custo e no pela sequencia em que gerada. Assim se desejar que a busca tenha o comportamento da busca em amplitude, necessrio apenas passar um valor numrico sequencial para cada n gerado, tornando assim uma fila que o primeiro que entra o primeiro que sai no processamento da busca. Esta alterao no algoritmo facilitou a implementao de heursticas na busca por meio da funo custo.

FATEC Faculdade de Tecnologia de Ourinhos

37

8 HEURSTICAS UTILIZADAS EM BUSCA

Heurstica definido por Luger (2004) como as regras de julgamento que o ser humano utiliza para fazer escolhas que paream ser mais promissoras para resolver um determinado problema. E segundo ele a heurstica constitui um dos tpicos centrais da pesquisa em IA.

Uma heurstica (o nome vem da palavrea grega descobrir) uma estratgia para a busca seletiva de um espao de problema. Ela guia a nossa busca ao longo de linhas que tm uma alta probabilidade de sucesso, ao mesmo tempo evitando esforos desnecessrios e aparentemente estpidos. LUGER(2004, p. 63)

Luger adverte que heursticas no so perfeitamente seguras e mesmo a melhor estratgia pode ser derrotada, no entanto, uma boa heurstica pode e deve na maioria das vezes encontrar a soluo tima ou ficar prxima. Para o projeto foram utilizadas duas heursticas especficas para o jogo 8-Puzzle descritas por Russel e Norvig (2004). h1 = O nmero de blocos em posies erradas. h2 = A soma das distncias dos blocos de suas posies objetivo, conhecida como Distncia de Manhattan. Como exemplo da utilizao de heursticas em busca de estados, foi utilizado o problema da figura abaixo. A funo h1 que representa as peas fora do lugar igual a 3 (trs) enquanto que a funo h2 que representa a distncia de cada pea do seu local de origem igual a 5 (cinco).
Estado Inicial Estado Objetivo

h1 = 0 + 0 + 0 + 0 + 1 + 1 + 0 + 1 = 3 h2 = 0 + 0 + 0 + 0 + 2 + 1 + 0 + 2 = 5
Figura 19 Clculos de heursticas de um estado Fonte: AUTOR

FATEC Faculdade de Tecnologia de Ourinhos

38

Para implementar a heurstica necessrio utilizar a busca A Estrela (A*), que inclui o estado do problema em uma lista ordenada pelo custo heurstico, contudo a busca j esta implementada, bastando apenas implementar a funo custo que ir definir o custo do estado problema, ento a funo custo fica definida como f(n) = h1(n) + h2(n) + g(n), em que a funo g(n) o custo do caminho. A funo g(n) muito importante para garantir que a busca encontre a soluo tima, sem ela a busca poder aprofundar vrios nveis encontrando uma soluo no tima.

E assim fica completa a Implementao de IA utilizando a Busca A* para resolver os problemas do jogo 8-Puzzle. Para uma compreenso mais detalhada das implementaes feitas do jogo e da IA, poder utilizar o cdigo fonte no disco em anexo, no cdigo fonte esto todas as funes necessrias para desenvolver o jogo por completo.

FATEC Faculdade de Tecnologia de Ourinhos

39

9 CONCLUSO

Por meio das teorias e conceitos aplicados e demonstrados pelo presente trabalho pode-se concluir que, o desenvolvimento do projeto obteve sucesso tanto na programao do jogo quanto na implementao da inteligncia artificial. Quanto ao jogo, os conhecimentos bsicos de manipulao de matriz e algum conhecimento do ambiente de desenvolvimento Delphi 2010, foram suficientes para construir a interface bsica do jogo, exigindo a criatividade para aprimoramento de recursos grficos, movimentao e controle de objetos, o trabalho apresenta algoritmos simples que permitem a compreenso facilitada de conceitos pouco explorado como o movimento de um objeto na tela e portanto pode considerar-se que o jogo foi bem desenvolvido e pode interagir com o jogador.

A implementao da IA tambm obteve o resultado esperado, possibilitando a interao do processamento do computador para resolver um problema de um jogo que envolve raciocnio para soluciona-lo. As teorias de IA puderam ser testadas na prtica permitindo identificar as dificuldades e limitaes que todo programa de computador est sujeito a apresentar, no entanto a implementao da IA obteve mrito no custo computacional, que utilizando uma boa heurstica foi capaz de resolver qualquer problema do jogo com menos de um segundo, utilizando um computador com processador de baixo custo. Atravs de testes entre os algoritmos de busca, ficou comprovado que o algoritmo A Estrela, por ser muito mais eficiente comparado com a busca em largura, o algoritmo mais apropriado para este tipo de jogo, sendo que nos teste comparativos a diferena absurdamente grande, tanto no tempo de processamento quanto no consumo de memria. No disco em anexo, encontra-se todo o cdigo do jogo, inclusive a implementao da inteligncia artificial e alguns recursos grficos no abordados no trabalho.

FATEC Faculdade de Tecnologia de Ourinhos

40

REFERENCIAS

COSTA, Ernesto; SIMES, Anabela. Inteligncia Artificial: Fundamentos e Aplicaes. Coimbra: FCA, 2004.

HBNER, Jomi Fred. Busca Java. Disponvel em: <http://www.inf.furb.br/~jomi/ia/>. Acesso em: 19 Jun 2010.

LOYD, Samuel. Cyclopedia of 5000 Puzzles: Tricks, and Conundrums with Answers. New York: The Lamb Publishing Company, 1914.

LUGER, George F. Inteligncia Artificial: estruturas e estratgicas para a soluo de problemas complexos. 4. ed. Porto Alegre: Bookmann, 2004.

PERMADI, F. The 8 Puzzle. Disponvel em: <http://www.permadi.com/java/puzzle8/>. Acesso em: 14 Set 2010.

RUSSEL, Stuart; NORVIG, Peter. Inteligncia Artificial: So Paulo: Campus, 2003.

WHITBY, Blay. Inteligncia Artificial: um Guia para Iniciantes/Blay Whitby. So Paulo: Madras, 2004.

XIMENES,

Srgio

Barcellos.

Histria

das

Palavras

Cruzadas.

Disponvel

em:

<http://www.roteiroromanceado.com/cruzadas/historia/ancestrais/squares/fifteen/fifteen.html >. Acesso em: 15 de Out 2010.

Potrebbero piacerti anche