26.11.2014 Views

1 IDENTIFICAÇÃO - Projeto Pesquisa - Furb

1 IDENTIFICAÇÃO - Projeto Pesquisa - Furb

1 IDENTIFICAÇÃO - Projeto Pesquisa - Furb

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

TURNO: NOTURNO VERSÃO: 03 N O<br />

UNIVERSIDADE REGIONAL DE BLUMENAU<br />

CENTRO DE CIÊNCIAS EXATAS E NATURAIS<br />

DEPARTAMENTO DE SISTEMAS E COMPUTAÇÃO<br />

CURSO DE CIÊNCIAS DA COMPUTAÇÃO — BACHARELADO<br />

COORDENAÇÃO DE TRABALHO DE CONCLUSÃO DE CURSO (TCC)<br />

PROPOSTA PARA O TRABALHO DE CONCLUSÃO DE CURSO (TCC)<br />

TÍTULO: ESTUDO COMPARATIVO ENTRE ALGORITMO A* E BUSCA EM<br />

LARGURA PARA PLANEJAMENTO DE CAMINHO DE PERSONAGENS<br />

EM JOGOS DO TIPO PACMAN<br />

ÁREA: Inteligência Artificial<br />

Palavras-chave:<br />

Jogos, Busca em largura, Algoritmo A*.<br />

1 IDENTIFICAÇÃO<br />

1.1 ALUNA<br />

Nome: Jeanita Bassani da Silva Código/matrícula: 76.642 / 19.255<br />

Endereço residencial:<br />

Rua: Paraná n° 247 Bairro: Czerniewicz<br />

CEP: 89.255-<br />

320<br />

Endereço comercial:<br />

Empresa: Jolimpac Ltda.<br />

Cidade: Jaraguá do<br />

Sul<br />

UF: SC Fone fixo: 273-1116 Celular: 9975-0348<br />

Rua: BR 280 KM 70 n° 1683 Bairro: Estrada Nova<br />

CEP: 89.254-700 Cidade: Jaraguá do Sul UF:SC Fone: 371-5353<br />

E-Mail FURB: jeanita@inf.furb.br<br />

E-Mail alternativo: jeanita@terra.com.br<br />

1.2 ORIENTADOR<br />

Nome: Paulo César Rodacki Gomes<br />

E-Mail FURB: rodacki@inf.furb.br<br />

E-Mail alternativo:


2 DECLARAÇÕES<br />

2.1 DECLARAÇÃO DA ALUNA<br />

Declaro que estou ciente do Regulamento do Trabalho de Conclusão de Curso de<br />

Ciências da Computação e que a proposta em anexo, a qual concordo, foi por mim rubricada<br />

em todas as páginas. Ainda me comprometo pela obtenção de quaisquer recursos necessários<br />

para o desenvolvimento do trabalho, caso esses recursos não sejam disponibilizados pela<br />

FURB.<br />

Assinatura:<br />

Local/Data:<br />

2.2 DECLARAÇÃO DO ORIENTADOR<br />

Declaro que estou ciente do Regulamento do Trabalho de Conclusão do Curso de<br />

Ciências da Computação e que a proposta em anexo, a qual concordo, foi por mim rubricada<br />

em todas as páginas. Ainda me comprometo a orientar a aluna de acordo com o plano de<br />

trabalho explícito na proposta do TCC da melhor forma possível.<br />

Assinatura:<br />

Local/Data:


3 AVALIAÇÃO DA PROPOSTA<br />

3.1 AVALIAÇÃO DA PROPOSTA (PELO COORDENADOR DE TCC)<br />

AVALIAÇÃO<br />

ASPECTO AVALIADO<br />

1. INTRODUÇÃO<br />

1.1. O problema está devidamente delimitado/claramente formulado?<br />

2. OBJETIVOS<br />

2.1. O objetivo geral está claramente definido e é passível de ser alcançado?<br />

2.2. São apresentados objetivos específicos (opcionais) coerentes com o objetivo geral? Caso não<br />

sejam apresentados objetivos específicos, deixe esse item em branco.<br />

3. RELEVÂNCIA<br />

3.1. A proposta apresenta um grau de relevância em computação que justifique o desenvolvimento<br />

do TCC?<br />

4. REQUISITOS DO SOFTWARE A SER DESENVOLVIDO<br />

4.1. Os requisitos funcionais e não funcionais do software a ser desenvolvido foram claramente<br />

descritos?<br />

5. METODOLOGIA<br />

5.1. Existe coerência entre a metodologia e o(s) objetivo(s)?<br />

5.2. Foram relacionadas todas as etapas necessárias para o desenvolvimento do TCC?<br />

5.3. Os métodos e recursos estão devidamente descritos e são compatíveis com a metodologia<br />

proposta?<br />

5.4. A proposta apresenta um cronograma físico (período de realização das etapas) de maneira a<br />

permitir a execução do TCC no prazo disponível?<br />

6. REVISÃO BIBLIOGRÁFICA<br />

6.1. As informações apresentadas são suficientes e têm relação com o tema do TCC?<br />

6.2. São apresentados trabalhos correlatos?<br />

7. CONSIDERAÇÕES FINAIS<br />

7.1. As considerações finais relacionam os assuntos apresentados na revisão bibliográfica com a<br />

realização do TCC?<br />

8. REFERÊNCIAS BIBLIOGRÁFICAS<br />

8.1. As referências bibliográficas citadas no texto obedecem às normas da ABNT?<br />

8.2. As referências bibliográficas citadas contemplam adequadamente os assuntos abordados na<br />

introdução e na revisão bibliográfica?<br />

9. AVALIAÇÃO GERAL (organização e apresentação gráfica / linguagem usada)<br />

9.1. O texto obedece ao formato estabelecido?<br />

9.2. A exposição do assunto é ordenada, isto é, as idéias estão bem encadeadas e a linguagem<br />

utilizada é clara?<br />

9.3. As informações retiradas de outros autores estão devidamente referenciadas e constam nas<br />

referências bibliográficas?<br />

atende<br />

atende<br />

parcialmente<br />

não atende<br />

A proposta de TCC deverá ser revisada, isto é, necessita de complementação, se qualquer um dos itens avaliados<br />

tiver resposta NÃO ATENDE, ou se pelo menos 4 (quatro) itens tiverem resposta ATENDE PARCIALMENTE.<br />

Se necessário, inclua observações no verso.<br />

PARECER:<br />

( ) APROVADA ( ) NECESSITA DE COMPLEMENTAÇÃO<br />

Avaliador:<br />

Assinatura:<br />

Local/Data:


3.2 AVALIAÇÃO DA PROPOSTA (PELA PROFESSORA DA DISCIPLINA DE TCC I)<br />

AVALIAÇÃO<br />

ASPECTO AVALIADO<br />

1. INTRODUÇÃO<br />

1.1. O problema está devidamente delimitado/claramente formulado?<br />

2. OBJETIVOS<br />

2.1. O objetivo geral está claramente definido e é passível de ser alcançado?<br />

2.2. São apresentados objetivos específicos (opcionais) coerentes com o objetivo geral? Caso não<br />

sejam apresentados objetivos específicos, deixe esse item em branco.<br />

3. RELEVÂNCIA<br />

3.1. A proposta apresenta um grau de relevância em computação que justifique o desenvolvimento<br />

do TCC?<br />

4. REQUISITOS DO SOFTWARE A SER DESENVOLVIDO<br />

4.1. Os requisitos funcionais e não funcionais do software a ser desenvolvido foram claramente<br />

descritos?<br />

5. METODOLOGIA<br />

5.1. Existe coerência entre a metodologia e o(s) objetivo(s)?<br />

5.2. Foram relacionadas todas as etapas necessárias para o desenvolvimento do TCC?<br />

5.3. Os métodos e recursos estão devidamente descritos e são compatíveis com a metodologia<br />

proposta?<br />

5.4. A proposta apresenta um cronograma físico (período de realização das etapas) de maneira a<br />

permitir a execução do TCC no prazo disponível?<br />

6. REVISÃO BIBLIOGRÁFICA<br />

6.1. As informações apresentadas são suficientes e têm relação com o tema do TCC?<br />

6.2. São apresentados trabalhos correlatos?<br />

7. CONSIDERAÇÕES FINAIS<br />

7.1. As considerações finais relacionam os assuntos apresentados na revisão bibliográfica com a<br />

realização do TCC?<br />

8. REFERÊNCIAS BIBLIOGRÁFICAS<br />

8.1. As referências bibliográficas citadas no texto obedecem às normas da ABNT?<br />

8.2. As referências bibliográficas citadas contemplam adequadamente os assuntos abordados na<br />

introdução e na revisão bibliográfica?<br />

9. AVALIAÇÃO GERAL (organização e apresentação gráfica / linguagem usada)<br />

9.1. O texto obedece ao formato estabelecido?<br />

9.2. A exposição do assunto é ordenada, isto é, as idéias estão bem encadeadas e a linguagem<br />

utilizada é clara?<br />

9.3. As informações retiradas de outros autores estão devidamente referenciadas e constam nas<br />

referências bibliográficas?<br />

atende<br />

atende<br />

parcialmente<br />

não atende<br />

A proposta de TCC deverá ser revisada, isto é, necessita de complementação, se qualquer um dos itens avaliados<br />

tiver resposta NÃO ATENDE, ou se pelo menos 4 (quatro) itens tiverem resposta ATENDE PARCIALMENTE.<br />

Se necessário, inclua observações no verso.<br />

PARECER:<br />

( ) APROVADA ( ) NECESSITA DE COMPLEMENTAÇÃO<br />

Avaliadora:<br />

Assinatura:<br />

Local/Data:


3.3 AVALIAÇÃO DA PROPOSTA (PELO PROFESSOR 1)<br />

AVALIAÇÃO<br />

ASPECTO AVALIADO<br />

1. INTRODUÇÃO<br />

1.1. O problema está devidamente delimitado/claramente formulado?<br />

2. OBJETIVOS<br />

2.1. O objetivo geral está claramente definido e é passível de ser alcançado?<br />

2.2. São apresentados objetivos específicos (opcionais) coerentes com o objetivo geral? Caso não<br />

sejam apresentados objetivos específicos, deixe esse item em branco.<br />

3. RELEVÂNCIA<br />

3.1. A proposta apresenta um grau de relevância em computação que justifique o desenvolvimento<br />

do TCC?<br />

4. REQUISITOS DO SOFTWARE A SER DESENVOLVIDO<br />

4.1. Os requisitos funcionais e não funcionais do software a ser desenvolvido foram claramente<br />

descritos?<br />

5. METODOLOGIA<br />

5.1. Existe coerência entre a metodologia e o(s) objetivo(s)?<br />

5.2. Foram relacionadas todas as etapas necessárias para o desenvolvimento do TCC?<br />

5.3. Os métodos e recursos estão devidamente descritos e são compatíveis com a metodologia<br />

proposta?<br />

5.4. A proposta apresenta um cronograma físico (período de realização das etapas) de maneira a<br />

permitir a execução do TCC no prazo disponível?<br />

6. REVISÃO BIBLIOGRÁFICA<br />

6.1. As informações apresentadas são suficientes e têm relação com o tema do TCC?<br />

6.2. São apresentados trabalhos correlatos?<br />

7. CONSIDERAÇÕES FINAIS<br />

7.1. As considerações finais relacionam os assuntos apresentados na revisão bibliográfica com a<br />

realização do TCC?<br />

8. REFERÊNCIAS BIBLIOGRÁFICAS<br />

8.1. As referências bibliográficas citadas no texto obedecem às normas da ABNT?<br />

8.2. As referências bibliográficas citadas contemplam adequadamente os assuntos abordados na<br />

introdução e na revisão bibliográfica?<br />

9. AVALIAÇÃO GERAL (organização e apresentação gráfica / linguagem usada)<br />

9.1. O texto obedece ao formato estabelecido?<br />

9.2. A exposição do assunto é ordenada, isto é, as idéias estão bem encadeadas e a linguagem<br />

utilizada é clara?<br />

9.3. As informações retiradas de outros autores estão devidamente referenciadas e constam nas<br />

referências bibliográficas?<br />

atende<br />

atende<br />

parcialmente<br />

não atende<br />

A proposta de TCC deverá ser revisada, isto é, necessita de complementação, se qualquer um dos itens avaliados<br />

tiver resposta NÃO ATENDE, ou se pelo menos 4 (quatro) itens tiverem resposta ATENDE PARCIALMENTE.<br />

Se necessário, inclua observações no verso.<br />

PARECER:<br />

( ) APROVADA ( ) NECESSITA DE COMPLEMENTAÇÃO<br />

Avaliador:<br />

Assinatura:<br />

Local/Data:


UNIVERSIDADE REGIONAL DE BLUMENAU<br />

CENTRO DE CIÊNCIAS EXATAS E NATURAIS<br />

CURSO DE CIÊNCIAS DA COMPUTAÇÃO – BACHARELADO<br />

ESTUDO COMPARATIVO ENTRE ALGORITIMO A* E<br />

BUSCA EM LARGURA PARA PLANEJAMENTO DE<br />

CAMINHO DE PERSONAGENS EM JOGOS DO TIPO<br />

PACMAN<br />

JEANITA BASSANI DA SILVA<br />

BLUMENAU<br />

2004


JEANITA BASSANI DA SILVA<br />

ESTUDO COMPARATIVO ENTRE ALGORITMO A* E<br />

BUSCA EM LARGURA PARA PLANEJAMENTO DE<br />

CAMINHO DE PERSONAGENS EM JOGOS DO TIPO<br />

PACMAN<br />

Proposta de trabalho apresentada à<br />

Coordenação de Trabalho de Conclusão de<br />

Curso de Ciências da Computação da<br />

Universidade Regional de Blumenau, para<br />

desenvolvimento durante a disciplina de<br />

Trabalho de Conclusão de Curso II.<br />

Prof. Paulo César Rodacki Gomes –<br />

Orientador<br />

BLUMENAU<br />

2004


2<br />

1 INTRODUÇÃO<br />

Nos últimos anos, cada vez mais os jogos por computador vêm implementando algum<br />

grau de inteligência em seus personagens. Um exemplo disto é a implementação de métodos<br />

de planejamento de caminho.<br />

Este trabalho visa comparar duas técnicas utilizadas normalmente para planejamento<br />

de caminho de personagens de jogos de labirinto 2D, do tipo PacMan (o jogo pode ser<br />

encontrado em Postma (2000)). Estas técnicas são o algoritmo de busca heurística A* e a<br />

busca em largura em grafos.<br />

O jogo PacMan possui dois personagens, o “come-come” e os “fantasmas”. O jogador<br />

controla o personagem “come-come”, que tem o objetivo de comer todas as bolinhas do<br />

cenário para vencer o jogo. A fig. 1 a) mostra como é o formato do personagem “comecome”.<br />

Os personagens “fantasmas” têm o objetivo de impedir a atividade do personagem<br />

“come-come”, tentando encurralá-lo. A morte deste acontece quando algum “fantasma”<br />

consegue encostar-se a ele, impedindo que o jogador vença o jogo. A fig. 1 b) mostra como é<br />

o formato do personagem “fantasma”. Uma ilustração de um cenário para o jogo pode ser<br />

visto na fig. 2.<br />

a) personagem “come-come” b) personagem “fantasma”<br />

Figura 1 – Personagens<br />

Figura 2 – Demonstração do jogo PacMan


3<br />

Em cada estado do jogo, o objetivo de cada “fantasma” é dirigir-se para o local onde<br />

está o “come-come”. Para isso cada “fantasma” precisa calcular o caminho mais curto de sua<br />

posição até a posição do “come-come”.<br />

A área onde se encontra o cenário do jogo pode ser modelada como um grafo, e o<br />

planejamento do caminho de cada “fantasma” se resume a um problema de busca por<br />

caminho mínimo no grafo.<br />

Neste contexto, o caminho mínimo entre um par de vértices u e v em um grafo é<br />

definido como sendo o caminho com menor quantidade de arestas, dentre todos os caminhos<br />

possíveis entre esses dois vértices.<br />

Devido à característica dinâmica dos jogos do tipo PacMan, acredita-se que os<br />

métodos tradicionais de busca possuem um desempenho muito lento, pois durante o processo<br />

de busca, eles visitam uma grande quantidade de vértices desnecessariamente.<br />

Uma das técnicas que pode melhorar o desempenho dos personagens “fantasmas” em<br />

concluir o seu objetivo, é o uso de um algoritmo de busca heurística. A heurística é uma<br />

técnica que melhora a eficiência de um processo de busca. No problema proposto, é<br />

necessária uma heurística que se aproxime bastante do caminho mínimo, mas que explore<br />

uma pequena quantidade de vértices para chegar à solução.<br />

O algoritmo de busca heurística A* (RABUSKE, 1995, p. 41) e a busca em largura<br />

(CORMEM et al., 2002, p. 422) encontram o menor caminho entre dois vértices em um grafo,<br />

podendo ser utilizados para planejamento do menor caminho entre o personagem “fantasma”<br />

e o personagem “come-come”.<br />

1.1 OBJETIVOS DO TRABALHO<br />

O objetivo deste trabalho é implementar e comparar o desempenho dos algoritmos de<br />

busca em largura e de busca heurística A*, para encontrar o melhor caminho entre os<br />

personagens de um jogo, o PacMan.


4<br />

1.2 RELEVÂNCIA DO TRABALHO<br />

A implementação dos algoritmos A* e busca em largura, comparando os seus<br />

desempenhos, são fatores de relevância nesta proposta, pois eles fazem uso de técnicas da<br />

Inteligência Artificial e Teoria de Grafos. Este tema está inserido numa área de pesquisa<br />

emergente que é o desenvolvimento de jogos para o computador. Além disso, o trabalho<br />

deverá usar técnicas de Computação Gráfica para ilustração do funcionamento dos algoritmos<br />

em um cenário de jogo semelhante ao PacMan.<br />

1.3 REQUISITOS DO SOFTWARE A SER DESENVOLVIDO<br />

Os requisitos funcionais são:<br />

a) implementação do algoritmo A*, para planejamento de caminho de personagens de<br />

jogos tipo PacMan;<br />

b) implementação do algoritmo busca em largura, para planejamento de caminho de<br />

personagens de jogos tipo PacMan;<br />

c) visualização gráfica do ambiente semelhante ao jogo, demonstrando o<br />

funcionamento da busca em largura e do algoritmo A*.<br />

Os requisitos não funcionais são:<br />

a) boa performance do algoritmo, ou seja, rápida execução;<br />

b) utilizar a linguagem de programação Object Pascal com ambiente Delphi.<br />

1.4 METODOLOGIA<br />

O trabalho será desenvolvido observando as seguintes etapas:<br />

a) bibliografia inicial: levantamento e estudo de referências bibliográficas sobre os<br />

seguintes temas: busca em largura, o algoritmo A*, inteligência artificial para<br />

jogos, ambiente de programação Delphi 7;<br />

b) definição e levantamento de requisitos: revisão e levantamento de novos requisitos<br />

do software a ser desenvolvido. Para o levantamento de novos requisitos do<br />

software, será efetuada uma análise de um jogo do tipo PacMan (o jogo pode ser<br />

encontrado em Postma (2000));


5<br />

c) especificação: modelagem do protótipo de software utilizando técnicas de<br />

orientação a objetos (OO) com Unified Modelling Language (UML) e a ferramenta<br />

Rational Rose Requisite-Pro, será utilizado o diagrama de classes, o diagrama de<br />

casos de uso e o diagrama de seqüência;<br />

d) implementação do protótipo do jogo, incluindo os algoritmos A* e busca em<br />

largura;<br />

e) testes: testes para verificar validação do algoritmo. O A* terá seu desempenho<br />

comparado com a busca em largura. Será usado como parâmetro de comparação, a<br />

quantidade de vértices visitados pelos dois algoritmos no cálculo dos caminhos<br />

mínimos;<br />

f) monografia: redação da monografia.<br />

As etapas serão realizadas nos períodos relacionados na Tabela 1.<br />

Tabela 1 - Cronograma das etapas<br />

2005<br />

fev mar abr maio jun<br />

etapas / quinzenas 1 2 1 2 1 2 1 2 1 2<br />

bibliografia inicial<br />

definição e levantamento de requisitos<br />

especificação<br />

implementação<br />

testes<br />

monografia


6<br />

2 REVISÃO BIBLIOGRÁFICA<br />

Para a realização desta proposta de trabalho foi feita uma revisão bibliográfica dos<br />

seguintes temas: jogos para computador, inteligência artificial, busca em largura, busca<br />

heurística, algoritmo A* e trabalhos correlatos.<br />

2.1 JOGOS PARA COMPUTADOR<br />

Segundo Santos (2002, p. 8), um jogo é um programa de computador que se<br />

caracteriza por intensa interatividade e participação do usuário ou jogador, utilizando<br />

habilidade com os dispositivos de entrada, seu raciocínio lógico e sua imaginação para<br />

alcançar um determinado objetivo. O objetivo do jogo pode ser uma tarefa simples, como<br />

chegar em primeiro lugar em uma corrida ou eliminar do tabuleiro todas as peças do<br />

adversário.<br />

Os jogos necessitam de estruturas de dados para representar todos os seus<br />

elementos: um jogo de corrida de carros precisa armazenar a posição<br />

ocupada por cada carro em cada momento da corrida; um jogo de damas<br />

deve registrar as posições de todas as peças do tabuleiro; um jogo de ação ou<br />

aventura precisa guardar a posição do jogador, dos inimigos e das demais<br />

entidades. De acordo com o grau de complexidade do jogo, pode ser<br />

necessário armazenar informações sobre a posição de diversos objetos dentro<br />

do espaço do jogo. (SANTOS, 2002, p. 8).<br />

No caso dos jogos do tipo PacMan, a estrutura de dados mais importante a ser utilizada<br />

na implementação dos algoritmos de busca, é a estrutura do grafo não dirigido. A seção 3<br />

apresenta esta estrutura com mais detalhes.<br />

2.2 INTELIGÊNCIA ARTIFICIAL<br />

Segundo Rich e Knight (1993), inteligência artificial (IA) é o estudo de como fazer os<br />

computadores realizarem tarefas que, até o presente, os seres humanos realizam melhor. Esta<br />

definição não consegue incluir problemas que não podem ainda ser bem solucionados nem<br />

pelos computadores nem pelas pessoas. Mas cria uma noção do que vem a ser inteligência<br />

artificial.


7<br />

De acordo com Rabuske (1995, p. 21), inteligência artificial é o resultado da aplicação<br />

de técnicas e recursos especialmente de natureza não numérica, tornando possível a solução<br />

de problemas que exigiriam do humano certo grau de raciocínio e de perícia. Geralmente a<br />

solução destes problemas é muito mais difícil com recursos tipicamente numéricos.<br />

Projetando esse objetivo ao limite, espera-se que, no futuro, seja possível interagir com<br />

um programa de computador e não saber se o interlocutor é de fato a máquina ou uma outra<br />

pessoa.<br />

Segundo Santos (2002, p. 15), é exatamente isso que o jogador espera do<br />

comportamento dos personagens do jogo: que seus atos, suas reações e seu diálogo sejam o<br />

mais parecido possível com os de uma pessoa real. E, além disso, devido ao impressionante<br />

desenvolvimento da computação gráfica para jogos, o jogador passou a ter expectativas de<br />

que o mesmo grau de realismo seja observado no comportamento dos personagens do jogo.<br />

2.3 BUSCA EM LARGURA<br />

É um método de busca que examina todos os vértices de certo nível do grafo antes dos<br />

vértices do nível abaixo. Se o grafo é finito e se existe uma solução, então ela será encontrada<br />

por este método.<br />

Segundo Rabuske (1995, p. 39), o método de busca em largura requer muita memória.<br />

O número de vértices, que é exponencial em relação à profundidade, aumenta absurdamente a<br />

quantidade de memória necessária, exigindo um esforço computacional grande, se o<br />

comprimento dos caminhos for “não-pequeno”.<br />

2.4 BUSCA HEURÍSTICA<br />

De acordo com Russel e Norvig (2003, p. 94), a busca heurística é uma estratégia que<br />

utiliza o conhecimento específico do problema, podendo encontrar soluções de forma mais<br />

eficiente que uma estratégia sem informação específica sobre o problema, como é o caso da<br />

busca em largura.


8<br />

Segundo Rich e Knight (1993), a heurística é uma técnica eficiente em um processo de<br />

busca. A heurística é útil, pois leva a direcionamentos interessantes, mesmo que possa ignorar<br />

pontos de interesse para alguém. Em geral, as heurísticas melhoram os caminhos a serem<br />

percorridos, porém pode ocorrer de ignorar o melhor caminho. Pode-se obter boas soluções<br />

usando uma boa heurística em problemas complexos.<br />

2.4.1 O ALGORITMO A*<br />

“O algoritmo A* irá encontrar um caminho entre dois vértices em um grafo. Existem<br />

muitos algoritmos de busca, mas o A* encontra o menor caminho, se existir, e fará isto<br />

relativamente rápido – é isto que o diferencia dos outros.” (RABIN, 2002, p. 105, tradução<br />

nossa).<br />

O algoritmo A* atravessa o grafo marcando vértices que correspondem às várias<br />

posições exploradas. Esses vértices gravam o progresso da busca. Além de guardar o local do<br />

vértice, cada um desses vértices têm 3 atributos principais chamados comumente de F, G e H:<br />

a) o atributo G de um determinado vértice é o custo que se tem desde o vértice de<br />

início até este vértice destino;<br />

b) o atributo H de um vértice é o custo estimado do caminho deste vértice até o<br />

vértice final. H entende-se por heurística e significa “estimativa bem comportada”,<br />

visto que realmente não se conhece esse custo;<br />

c) o atributo F é a soma de G e H. F representa a melhor avaliação para o custo de um<br />

caminho passando através de um determinado vértice. Quanto menor o valor de F,<br />

para um determinado vértice, maior as chances de ele fazer parte do menor<br />

caminho.<br />

O objetivo de F, G e H é quantificar o quão promissor é o caminho passando por<br />

determinado vértice. O atributo G pode ser calculado. Ele é o custo para chegar ao vértice<br />

corrente. Desde que se tenha explorado todos os vértices que apontam para este, sabe-se o<br />

valor exato de G. Entretanto, o atributo H é completamente diferente. Desde que não se sabe<br />

quanto além está o vértice final depois deste, deve-se estimar este valor. Na melhor das<br />

avaliações, o F fica mais próximo do valor correto, e mais rápido o A* encontra o fim com<br />

um pequeno esforço de empenho (RABIN, 2002, p. 106, tradução nossa).


9<br />

2.5 TRABALHOS CORRELATOS<br />

Santos (2002) desenvolveu um trabalho sobre Inteligência Artificial aplicada a jogos<br />

em três dimensões. Em especial, é dada ênfase à camada de busca de caminhos, e é<br />

apresentada uma implementação do algoritmo A* para encontrar caminhos no espaço 3D. Foi<br />

implementado um algoritmo de suavização do caminho gerado através de curvas de Bézier,<br />

buscando diminuir as descontinuidades no movimento de qualquer entidade que se locomova<br />

ao longo desse caminho.<br />

Lester (2003) em um artigo descreve os conceitos básicos do algoritmo A*,<br />

demonstrando a sua eficiência na busca de caminhos. São apresentados exemplos da<br />

implementação do algoritmo A* na linguagem C++.<br />

Matthews (2000) realizou um estudo que demonstra a utilização do algoritmo A*<br />

buscando um caminho em um labirinto simples, discutindo também a teoria do A*.


10<br />

3 CONSIDERAÇÕES FINAIS<br />

Será implementado o algoritmo de busca heurística A*, para ser utilizado na<br />

construção de um jogo tipo PacMan, visando otimizar o cálculo do melhor caminho entre os<br />

seus personagens. A utilização da busca heurística se faz necessária para dar um certo grau de<br />

inteligência aos “fantasmas”. O desempenho do algoritmo A* será comparado ao do<br />

algoritmo de busca em largura.<br />

O cenário do jogo será representado através de um grafo não dirigido. Cada quadrado<br />

que compõe o cenário do jogo é uma possível posição dos personagens, que pode estar livre<br />

ou com obstáculos (quadrado obstruído ou parede). No grafo, os quadrados livres serão<br />

vértices. As arestas ligam quadrados vizinhos entre si. A função do algoritmo A* é encontrar<br />

o menor caminho entre o vértice onde está o personagem “fantasma” e o vértice onde está o<br />

personagem “come-come”. A fig. 3 ilustra a modelagem deste grafo.<br />

Quadrado livre<br />

. .<br />

. . .<br />

. . .<br />

. . .<br />

Quadrado obstruído (parede)<br />

Vértice<br />

Aresta<br />

Figura 3 - Modelagem do grafo<br />

O A* não procura um caminho como um rato em um labirinto, mas escolhe a melhor<br />

direção para explorar, devido ao fato de utilizar uma heurística que considera informações<br />

específicas sobre o problema.


11<br />

Os trabalhos de Santos (2002), Lester (2003), Matthews (2000), são similares em<br />

relação ao trabalho que está sendo proposto, pois todos deram ênfase à utilização do algoritmo<br />

A* para solucionar o problema da busca de caminhos. Neste contexto é que nasce a idéia de<br />

implementar o algoritmo A* para dar inteligência ao jogo tipo PacMan, principalmente ao<br />

personagem “fantasma”, e compará-lo ao algoritmo de busca em largura. O trabalho será<br />

desenvolvido na linguagem de programação Object Pascal, ambiente Delphi.


12<br />

REFERÊNCIAS BIBLIOGRÁFICAS<br />

CORMEM, Thomas H. et al. Algoritmos: teoria e prática. 2. ed. Rio de Janeiro: Editora<br />

Campus, 2002.<br />

LESTER, Patrick. A* pathfinding for beginners. [S.l], 2003. Disponível em:<br />

. Acesso em: 03 out. 2004.<br />

MATTHEWS, James. A* for the Masses. [S.l], 2000. Disponível em:<br />

. Acesso em: 03 out. 2004.<br />

POSTMA, Brian. PacMan. [S.l], 2000. Disponível em:<br />

. Acesso em: 02 out. 2004.<br />

RABIN, Steven. AI game programming wisdow. Massachusets: Charles River Media, Inc.,<br />

2002.<br />

RABUSKE, Renato A . Inteligência artificial. Florianópolis: Editora da UFSC, 1995.<br />

RICH, Elaine; KNIGHT, Kevin. Inteligência artificial . São Paulo: Makron Books, 1993.<br />

RUSSELL, Stuart; NORVIG, Peter. Artificial intelligence: a modern approach. New Jersey:<br />

Prentice Hall, 2003.<br />

SANTOS, Gilliard L. Inteligência artificial em jogos 3D. 2002. 39 f. Trabalho de Conclusão<br />

de Curso (Bacharelado em Ciência da Computação) - Departamento de Ciência da<br />

Computação, Universidade Federal Fluminense, Niterói. Disponível em:<br />

. Acesso em: 28<br />

set. 2004.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!