Buscar

Exercicios e respostas INTELIGÊNCIA ARTIFICIAL APLICADA

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 23 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 23 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 23 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

SE ESSE 
ARQUIVO TE 
AJUDOU, DEIXE 
UM QUE ME 
AJUDA MUITO!!!! 
(Comentar também ajuda! não precisa escrever textão, pode comentar só com um “valeu” 
mesmo que já ajuda!. 
O meu passeidireto.com só é de graça se várias pessoas derem like nos meus materiais) 
- 
- 
- 
Apresentação 
Inteligência Artificial Aplicada 
Aula 1: Introdução 
O objetivo dessa aula é abordar os conceitos de Inteligência Artificial (IA), mostrando por 
que ela é estudada, quais são as diferenças entre a IA fraca e a forte, o que são agentes, 
quais são seus tipos e o que é um ambiente. 
 
Além disso, essa aula visa explicar a IA direcionada para jogos e mostrar de maneira 
genérica as três técnicas básicas usadas em agentes: as técnicas de movimentação, as 
técnicas de tomada de decisão para onde se mover e as técnicas de pensar de forma 
estratégica e tática. 
 
Por fim, serão abordadas as diferenças e o que é incorporado entre a IA acadêmica e a IA 
em jogos. 
 
Aula 2: Técnicas de Movimentação – Parte 1 
O objetivo dessa aula é abordar os conceitos de técnicas para movimentação de agentes em 
jogos digitais e desenvolver alguns de seus algoritmos. 
 
As técnicas abordadas nessa aula serão: 
Movimentação básica: a respeito dessa técnica, serão abordados os conceitos e o 
desenvolvimento dos algoritmos das movimentações Seguir (Seek) e Fugir (Flee); 
Steering Behaviors (Boids): a respeito dessa técnica, serão abordados os conceitos e o 
desenvolvimento dos algoritmos de Seguir (Seek), Fugir (Flee), Aproximar-se (Arrive), Vagar 
(Wander), Perseguir (Porsuit), Evadir-se (Evade), Desviar-se de Objetos (Obstacle 
Avoidance), Seguir um Líder (Leader Following). 
 
 
O que difere a movimentação básica dos Steering Behaviors (Boids) é exatamente a forma 
com que os cálculos de movimentação são realizados. Nos algoritmos de Steering Behaviors, 
a movimentação é bem mais fluida. 
 
Aula 3: Técnicas de Movimentação – Parte 2 
O objetivo dessa aula é abordar os conceitos de técnicas para movimentação de agentes em 
jogos digitais e desenvolver alguns de seus algoritmos. 
 
A técnica abordada nessa aula será: 
 
Pathfinding: a respeito dessa técnica, será abordado o algoritmo A*, cujo objetivo é 
encontrar o melhor caminho entre dois pontos A e B. 
 
 
Para que o entendimento desse algoritmo seja mais fácil, é importante que o conceito e o 
estudo dos grafos sejam revisados. 
 
Aula 4: Técnicas de Movimentação – Parte 3 
O objetivo dessa aula é abordar os conceitos de técnicas para movimentação de agentes em 
jogos digitais e desenvolver alguns de seus algoritmos. 
 
A técnica abordada nessa aula será: 
 
Flocking: a respeito dessa técnica, será abordado o algoritmo de Flocking e como ele é 
utilizado para controlar o comportamento da movimentação de um grupo de agentes nos 
jogos. 
 
 
Aula 5: Técnicas de Tomada de Decisão – Parte 1 
O objetivo dessa aula é abordar e aplicar os conceitos do algoritmo de máquina de estados, 
presente na técnica de tomada de decisão. 
 
A máquina de estados é considerada um modelo básico de Inteligência Artificial e muito 
utilizada nos jogos. Ela consiste em um conjunto de estados conectados em um grafo por 
suas arestas. Um agente, em um jogo com um estado inicial e de acordo com eventos que 
vão acorrendo no jogo, vai verificando as condições e mudando de estado. 
 
Aula 6: Técnicas de Tomada de Decisão – Parte 2 
O objetivo dessa aula é estudar e aplicar os conceitos dos algoritmos de árvores de decisão 
e árvores de comportamento, presentes na técnica de tomada de decisão. 
 
A árvore de decisão é uma das técnicas de tomada de decisão mais simples de ser 
implementada. Ela é muito utilizada para controlar a lógica de tomada de decisão, como 
também para controlar a troca de sprites ou modelos 3D em uma animação do agente. 
 
A árvore de comportamento é um padrão utilizado para representar e controlar a lógica da 
tomada de decisão dos agentes inteligentes em jogos. Tornou-se muito conhecida quando 
foi aplicada em jogos AAA, como HALO. 
 
Aula 7: Técnicas de Tomada de Decisão – Parte 3 
O objetivo dessa aula é estudar e aplicar os conceitos do algoritmo de Lógica Fuzzy, 
presente na técnica de tomada de decisão. 
 
Na maioria das técnicas de tomada de decisão, uma condição é observada e uma ação é 
realizada a partir de um valor verdadeiro ou falso. Já na Lógica Fuzzy, o resultado é uma 
aproximação de valores, e não valor binário verdadeiro ou falso. 
 
Aula 8: Técnicas Avançadas – Aprendizado 
O objetivo dessa aula é estudar e aplicar alguns algoritmos de aprendizado de máquina e 
redes neurais. 
 
Aprendizado é a forma de o agente adaptar o seu comportamento a cada jogador, 
aprendendo seus truques e técnicas e, assim, fornecendo um maior desafio. É uma maneira 
de criar agentes com comportamentos e tomadas de decisões cada vez mais realistas, 
agentes que aprendem sobre o ambiente em que estão inseridos e usam isso a seu favor. 
 
- 
- 
 
- 
 
- 
AULA 01 
Introdução 
 
APRESENTAÇÃO 
A Inteligência Artificial (IA) está relacionada a utilizar métodos baseados no comportamento 
inteligente de humanos e outros animais para solucionar problemas complexos. 
 
A IA nos jogos não é novidade; suas primeiras aplicações ocorreram em jogos de tabuleiro, 
como damas, xadrez e jogo da velha. No entanto, hoje em dia praticamente em todos os 
jogos desenvolvidos há alguma técnica de IA. 
 
A IA se tornou uma parte essencial dos jogos de computador. À medida que os jogos se 
tornam mais complexos e os consumidores exigem personagens e oponentes controlados 
por computador cada vez mais sofisticados, os programadores têm de colocar maior ênfase 
no desenvolvimento da IA de seus jogos. 
 
No jogo, a IA é aplicada nos agentes. Um agente é uma entidade (objeto de jogo) que possui 
algoritmos de IA para modelar sua movimentação, ou sua tomada de decisão, ou seu 
aprendizado em um jogo; com isso, ele deixa suas ações menos aleatórias e mais 
inteligentes. Essa entidade (objeto de jogo) pode ser um personagem, uma criatura, um 
veículo ou qualquer outra coisa. Ela é autônoma e executa as técnicas e os algoritmos que 
aprenderemos com esta disciplina. 
 
Os algoritmos de IA para jogos que abordaremos nesta disciplina podem ser separados em 
uma estrutura-modelo para AI. Essa estrutura classifica os métodos e algoritmos que 
aprenderemos em: Técnicas de Movimentação; Técnicas de Tomada de Decisão; e Técnicas 
de Aprendizagem e Redes Neurais. 
 
Técnicas de Movimentação: nelas estão os métodos e algoritmos que realizarão a 
movimentação do agente no ambiente em que ele estiver. Movimentações como: Seguir 
Determinada Entidade (i.e., qualquer objeto) do jogo; Fugir; Perseguir; Aproximar-se; Vagar 
pelo Ambiente; Seguir um líder; e Desviar-se de Objetos. A maioria desses algoritmos segue 
o conceito da técnica de Comportamentos Direcionais (Steering Behaviors), criado por Craig 
Reynolds na década de 1990; 
Técnicas de Tomada de Decisão: nelas estão os métodos e algoritmos que ajudarão o agente 
a tomar alguma decisão em relação a certa ação em determinado jogo, a saber: 
 
Algoritmos como Máquina de Estados, que, por meio de um grafo e de condições 
predeterminadas, fazem o agente realizar suas ações dependendo das condições pré-
estabelecidas; 
Árvores de Decisão, que, por uma estrutura de árvore e condições pré-estabelecidas, 
alteram as ações dos agentes; 
Árvores de Comportamento, que trabalham com tarefas e comportamentos para modelar 
as ações dos agentes; 
Por fim (e não menos importante) a Lógica Fuzzy, que diferente das outras técnicas de 
tomada de decisão pois não trabalha com uma condição binária verdadeiro ou falso, e sim 
com um valor intervalado para realizar e alterar as ações dos agentes; 
 
 
Técnicas Avançadas (Aprendizagem e Redes Neurais): nelas estão os métodos e algoritmos 
que farão os agentes começarem a aprender com suas próprias ações e começarem a 
realizar uma tomada de decisão mais inteligente. Esses algoritmos fazem os agentes se 
adaptarem a cada jogador e forneceremuma maior interação e desafio. É um meio de criar 
agentes com comportamentos e tomadas de decisões cada vez mais realistas. 
 
Entendendo o funcionamento das técnicas e seus algoritmos, é importante compreender 
como o ambiente é disposto para os agentes. A IA classifica vários tipos de ambientes, entre 
eles: totalmente observável, parcialmente observável, estático, dinâmico, determinístico e 
não determinístico. 
 
Com essa crescente complexidade envolvida na implementação dos jogos e os 
consumidores cada vez mais exigentes, a elaboração de algoritmos para o desenvolvimento 
de comportamentos direcionais e a busca por melhor caminho para agentes em jogos 
digitais podem ser muito interessantes e desafiadoras. 
 
 
Questão 1 
Segundo a Inteligência Artificial, um agente é: 
 
************************************************************ 
(_CORRETA_) => a) Todo aquele que consegue interagir com o ambiente à sua volta a 
partir de sensores e atuadores. 
(_EXPLICACAO_) => O agente precisa perceber seu ambiente por meio de sensores e atuar 
no ambiente a partir da sua percepção, com seus atuadores. 
b) Todo aquele que não consegue perceber o ambiente à sua volta a partir de sensores. 
c) Todo aquele que não consegue agir no ambiente à sua volta a partir de atuadores. 
d) Algo que não possui relevância na Inteligência Artificial. 
e) Todo aquele que não possui nenhuma ação. 
. 
. 
. 
. 
. 
. 
.Questão 2 
A partir da definição: “O agente pode perceber todo o estado do ambiente, ou seja, tomar a 
melhor decisão em qualquer ponto do ambiente”, qual ambiente está relacionado a esse 
conceito? 
 
************************************************************ 
a) Parcialmente observável. 
b) Estático. 
c) Discreto. 
(_CORRETA_) => d) Completamente observável. 
(_EXPLICACAO_) => No ambiente completamente observável, o agente pode perceber 
todo o estado do ambiente e, assim, tomar a melhor decisão para determinada ação. 
e) Benigno. 
. 
. 
. 
. 
. 
. 
.Questão 3 
Os algoritmos estudados nas técnicas de tomada de decisão são: 
 
************************************************************ 
(_CORRETA_) => a) Máquina de Estados Finitos; Árvores de Decisão; Árvores de 
Comportamento; Lógica Fuzzy. 
(_EXPLICACAO_) => Os algoritmos de decisão são os mais complexos, como Máquina de 
Estados Finitos, Árvores de Decisão, Árvores de Comportamento e Lógica Fuzzy. Esses 
algoritmos precisam mapear as decisões que os agentes tomarão durante o jogo e 
executá-las seguindo regras predefinidas. 
b) Máquina de Estados Finitos; Fugir; Perseguir, Árvores de Comportamento. 
c) Árvores de Decisão, Aproximar-se; Vagar pelo Ambiente; Lógica Fuzzy. 
d) Árvores de Decisão; Árvores de Comportamento; Lógica Fuzzy; Fugir. 
e) Perseguir; Fugir; Desviar-se de Obstáculos; Vagar pelo Ambiente. 
. 
. 
. 
. 
. 
. 
.Questão 4 
O Ambiente é _______________ se as ações do agente geram situações aleatórias no 
ambiente, ou seja, não se pode determinar com a máxima certeza se determinada ação irá 
gerar o efeito desejado no ambiente. 
 
************************************************************ 
a) Estático. 
b) Parcialmente observável. 
c) Discreto. 
d) Completamente observável. 
(_CORRETA_) => e) Estocástico. 
(_EXPLICACAO_) => O ambiente é estocástico se as ações do agente geram situações 
aleatórias no ambiente, ou seja, não se pode determinar com a máxima certeza se 
determinada ação irá gerar o efeito desejado no ambiente. 
. 
. 
. 
. 
. 
. 
. 
AULA 02 
Técnicas de Movimentação – Parte 1 
APRESENTAÇÃO 
Uma das principais técnicas de um agente, a movimentação é, na verdade, fundamental 
para que alguns agentes alcancem seus objetivos. Os algoritmos de movimentação podem 
classificar-se em três, a saber: 
 
Tomada de decisão; 
A ação de movimentação; 
Desvio de obstáculos. 
 
Os algoritmos básicos de movimentação estão relacionados ao decremento das distâncias 
no plano cartesiano entre as coordenadas do agente e seu alvo. 
Os tipos de movimentações criadas com esses algoritmos são: fazer um agente seguir um 
alvo; fugir de outro agente; seguir com alguma linha de visão, entre outros. No entanto, 
seus cálculos de movimentação não são tão eficientes nem deixam a movimentação fluída. 
 
Já as técnicas de movimentações de comportamentos direcionais (Steering Behaviors), 
criadas por Craig Reynolds na década de 1980, adotam uma ideia mais elaborada para 
calcular as movimentações, criada com base na observação dos comportamentos dos 
pássaros. 
 
Essas técnicas podem ser usadas para refinar o caminho gerado pelos algoritmos de busca 
por melhor caminho, visto que alguns algoritmos de Steering Behaviors podem ser usados 
para seguir a rota de waypoints gerados por esses algoritmos. No entanto, os Steering 
Behaviors também podem ser adotados para comportamentos mais reativos, como fugir ou 
perseguir um inimigo nas proximidades, evitar colisão com paredes, bem como controlar a 
movimentação de grupo de indivíduos. 
 
Esses movimentos podem ser definidos em três etapas, bem parecidas com as dos 
algoritmos de movimentação básica, a saber: 
Seleção da ação: é a parte em que o agente escolhe o objetivo e qual plano seguir; 
Direcionamento: é a parte responsável por calcular a direção que o agente deverá seguir; 
Locomoção: é a parte responsável por definir os mecanismos de locomoção do agente 
(BUCKLAND, 2005). 
 
Os Steering Behaviors utilizam o conceito de forças para determinar a direção dos agentes. 
Essas forças são representadas por vetores 2D ou 3D, que alteram a direção e a velocidade 
do agente em direção a um alvo selecionado. Como essa ilustrada na Figura 2 da Apostila, 
também são usados alguns conceitos de Física para controlar os comportamentos. 
 
Questão 1 
Qual das alternativas a seguir possui o conceito da movimentação Seek? 
 
************************************************************ 
(_CORRETA_) => a) Faz o agente mover-se em direção ao alvo. 
b) Faz o agente mover-se em direção contrária ao alvo. 
c) Faz o agente movimentar-se aleatoriamente no ambiente. 
d) Faz o agente seguir um caminho predefinido no ambiente. 
e) Faz o agente desviar-se de obstáculos. 
. 
. 
. 
. 
. 
. 
.Questão 2 
A movimentação que faz o agente movimentar-se aleatoriamente no ambiente é: 
 
************************************************************ 
a) Seek. 
b) Flee. 
(_CORRETA_) => c) Wander. 
(_EXPLICACAO_) => A movimentação Wander produz vetores direcionais randômicos, 
dando impressão de que o agente está movimentando-se em um caminho aleatório no 
ambiente. 
d) Evade. 
e) Pursuit. 
. 
. 
. 
. 
. 
. 
. 
Qual a diferença entre as movimentações Seek e Arrive? 
 
************************************************************ 
a) Seek persegue um alvo; já Arrive se distancia do alvo. 
b) Seek e Arrive perseguem determinado alvo no ambiente; no entanto, a movimentação 
Seek reduz sua velocidade à medida que se aproxima do alvo. 
c) Seek e Arrive têm o mesmo comportamento. 
d) Arrive anda aleatoriamente, e Seek persegue o personagem. 
(_CORRETA_) => e) Seek e Arrive perseguem determinado alvo no ambiente; no entanto, a 
movimentação Arrive reduz sua velocidade à medida que se aproxima do alvo. 
(_EXPLICACAO_) => O comportamento Arrive é bem parecido com o Seek. A única 
diferença é que o Arrive, quando vai aproximando-se do alvo, reduz a velocidade até 
parar. 
. 
. 
. 
. 
. 
. 
.Questão 4 
As movimentações que fazem o agente fugir de um alvo são: 
 
************************************************************ 
(_CORRETA_) => a) Flee e Evade. 
(_EXPLICACAO_) => As movimentações que fazem o agente fugir de um alvo no ambiente 
são Flee e Evade. 
b) Wander e Seek. 
c) Flee e Arrive. 
d) Pursuit e Obstacle Avoidance. 
e) Evade e Wander. 
. 
. 
. 
. 
. 
. 
. 
 
 
AULA 03 
Técnicas de Movimentação – Parte 2 
APRESENTAÇÃO 
A técnica de Pathfinding busca o melhor caminho entre dois pontos definidos em um grafo. 
No entanto, antes de abordarmos o algoritmo A*, é importante que se entenda a Teoria de 
Grafos. 
 
O estudo de grafos, nesta aula,é de extrema importância, pois, para que a movimentação 
ou busca por melhor caminho seja implementada, é necessário que, por baixo delas, exista 
um grafo cobrindo a área do ambiente. 
 
Um grafo é composto por dois tipos diferentes de elemento: vértices (nós), que, muitas 
vezes, são desenhados como círculos ou pontos e servem para definir pontos no caminho 
das decisões; e arestas (conexões), representadas como linhas e usadas para interligar os 
nós. 
 
Os grafos são simplesmente representados como a combinação de um conjunto de nós 
interligados por várias conexões e que se localizam na extremidade de cada uma delas 
conexão. Dependendo da aplicação, os grafos podem ter ou não direção; nesse caso, o grafo 
não apresenta direção em suas conexões. 
 
Para uso dos grafos no Pathfinding, cada nó normalmente representa uma região do nível 
de jogo, como uma sala, uma seção do corredor, uma plataforma ou uma pequena região 
do espaço ao ar livre. Ligações mostram quem está conectado. Se um quarto é adjacente a 
um corredor, então o nó que representa o quarto terá uma conexão com o nó que 
representa o corredor. Dessa maneira, o nível do jogo inteiro é dividido em regiões ligadas 
entre si. 
 
Além do estudo da Teoria dos Grafos, é necessario entender como funcionam os grafos 
ponderados e os grafos ponderados direcionais. 
 
O algoritmo A* é muito importante, tanto para IA tradicional quanto para a IA para jogos. O 
A* (pronuncia-se “A estrela”) é um algoritmo admissível; logo, para qualquer grafo, ele 
encontrará um caminho ótimo entre os estados inicial e final, caso exista um caminho entre 
esses estados. 
 
Para utilizar o A* em jogos, dividimos o terreno de um cenário ou mapa em pequenos 
quadrados de igual tamanho (matriz, sendo cada quadrado uma posição na matriz) e 
consideramos cada quadrado como sendo um nó no grafo. A distância total a ser percorrida 
no Pathfinding corresponde ao número de quadrados percorridos pela unidade do ponto 
(estado) inicial ao final. Os nós-filho de cada nó são representados pelos quadrados 
adjacentes ao quadrado em questão, conforme exemplificado na Figura 1. 
 
O A* mantém duas listas: a de nós abertos e a de nós fechados. A primeira armazena todos 
os quadrados que precisam ser verificados, sendo que um deles será escolhido como o 
próximo nó-destino da entidade segundo uma estratégia de escolha; já a segunda armazena 
os nós que não precisam mais ser verificados no momento. 
 
No algoritmo A* é escolhido na lista aberta o nó com o menor valor de custo total estimado 
– valor esse que é encontrado calculando-se a seguinte função: 
f(x) = g(x) + h(x) 
Em que: 
f(x) é o custo estimado total; 
g(x) é a soma em cada interação do valor de cada conexão de saída, conhecido em Dijkstra 
como custo total; 
h(x) é a heurística usada para encontrar o caminho. 
 
 
Questão 1 
A partir da definição: “conjunto de nós (vértices) interligados por várias conexões (arestas)”, 
selecione a alternativa correta: 
 
************************************************************ 
a) Essa é uma definição de grafos ponderados. 
b) Essa é uma definição de grafos direcionais. 
(_CORRETA_) => c) Essa é uma definição de grafos. 
(_EXPLICACAO_) => Os grafos são simplesmente representados como a combinação de um 
conjunto de nós interligados por várias conexões. 
d) Essa é a definição do algoritmo A*. 
e) Essa é a definição de um ambiente dinâmico. 
. 
. 
. 
. 
. 
. 
.O que é uma heurística no problema de busca? 
 
************************************************************ 
a) A soma de todos os nós de um grafo. 
(_CORRETA_) => b) Um valor aproximado da posição do agente até a posição do destino. 
(_EXPLICACAO_) => Em problema de busca, a heurística é um valor aproximado da posição 
do agente até a posição do destino. 
c) Um valor absoluto da posição do agente até a posição do destino. 
d) O valor atual de um nó do grafo. 
e) O custo total estimado. 
. 
. 
. 
. 
. 
. 
.Questão 3 
Qual a aplicação do algoritmo A* em jogos digitais? 
 
************************************************************ 
(_CORRETA_) => a) Calcular a melhor rota entre um ponto de origem e um ponto de 
destino no ambiente. 
(_EXPLICACAO_) => Nos jogos, o algoritmo A* é utilizado para calcular a melhor rota entre 
um ponto de origem e um ponto de destino no ambiente 
b) Movimentar o agente entre um caminho predefinido. 
c) Movimentar o agente em sentido contrário ao alvo. 
d) Apenas desviar o agente de obstáculos. 
e) Calcular rotas aleatórias para um agente. 
. 
. 
. 
. 
. 
. 
.Questão 4 
A função f(x) = g(x) + h(x) representa a maneira de selecionar os nós na lista aberta do 
algoritmo A* durante a graduação do caminho. O que f(x) representa na graduação do 
caminho? 
 
************************************************************ 
a) O último nó do caminho. 
b) A heurística usada para encontrar o caminho. 
c) A soma em cada interação do valor de cada conexão de saída. 
(_CORRETA_) => d) O custo total estimado. 
(_EXPLICACAO_) => f(x) é o custo estimado total. 
e) A multiplicação total de todos as arestas. 
. 
. 
. 
. 
. 
. 
. 
 
 
 
AULA 04 
Técnicas de Movimentação – Parte 3 
 
 
APRESENTAÇÃO 
A movimentação de agentes em grupos é muito importante para alguns tipos de jogos, 
principalmente nos de estratégia RPG. Os grupos podem ser formados por animais, pessoas, 
unidades de combate, navios, entre outros. Com o algoritmo de Flocking, todos os agentes 
são controlados por um único script> – não sendo, portanto, necessário criar um script para 
cada agente e, assim, tornar essa tarefa mais complexa. 
 
Em 1987, Craig Reynolds apresentou um algoritmo básico de flocking em um artigo 
intitulado Flocks, Herds and Schools – a distributed behavioral model. O algoritmo tinha 
como ideia principal fazer agentes (NPCs; do inglês, Non-Player Characters) se moverem de 
maneira coesa, como se todos tivessem um objetivo em comum, ao contrário de se terem 
vários agentes (NPCs) movendo-se de maneira independente e sem coordenação alguma. 
 
Para que a direção e a movimentação do grupo de agentes ocorram de maneira coesa, o 
algoritmo de Flocking mantém informações sobre outros agentes em um raio circular de 
tamanho predefinido, centrado na própria unidade. Esse raio é chamado de raio de 
vizinhança (neighborhood radius). O Flocking não só é utilizado em jogos, mas também é 
muito empregado na computação gráfica de filmes, como O Senhor dos Anéis. 
 
O algoritmo Flocking é representado por três regras: separação, alinhamento e coesão de 
uma unidade (grupo de agentes). 
 
• Separação: é uma força de repulsão cujo objetivo é fazer com que os agentes que 
estiverem se movimentando em um mesmo grupo se mantenham a uma certa distância uns 
dos outros, evitando colisões com seus vizinhos, conforme ilustrado na Figura 4.1. 
 
FIGURA 4.1 Exemplo de Separação Flocking. 
 
 
 
 
FONTE: Reynolds. 
 
• Alinhamento: mantém a direção da movimentação alinhada entre todos os agentes de um 
grupo, cada agente alinhando a sua direção com a do seu vizinho. Para isso, é necessário 
que se calcule a média dos vetores de direção de cada vizinho e depois subtraia essa média 
da direção atual da unidade como um todo. O resultado é a direção que a unidade (grupo de 
agentes) deve seguir, conforme ilustrado na Figura 4.2. 
 
FIGURA 4.2 Exemplo de Alinhamento Flocking. 
 
 
 
 
FONTE: Reynolds. 
 
• Coesão: para que a movimentação do grupo fique mais fluida e realista, é necessário que 
os agentes se dirijam ao centro de massa (posição média) de seus vizinhos, conforme 
ilustrado na Figura 4.3. 
 
FIGURA 4.3 Exemplo de Coesão Flocking. 
 
 
 
 
 
 
Questão 1 
Qual a função do algoritmo Flocking na inteligência artificial para jogos digitais? 
 
************************************************************ 
(_CORRETA_) => a) Movimentar um grupo de agentes pelo ambiente. 
(_EXPLICACAO_) => A movimentação em grupo implementada com o algoritmo Flocking 
elimina a necessidade da criação de um script para cada agente do grupo, tornandopossível que todos os agentes sejam controlados por um único script. 
b) Movimentar um único agente pelo ambiente. 
c) Calcular a melhor rota entre um ponto A e um ponto B, para vários agentes. 
d) Verificar a melhor decisão para um agente. 
e) Fazer o agente aprender com suas próprias ações. 
. 
. 
. 
. 
. 
. 
.Questão 2 
Para implementar o algoritmo Flocking, é importante conhecer três importantes conceitos. 
Um deles tem a seguinte definição: “força que mantém a distância entre cada agente do 
grupo”. Que conceito é assim definido? 
 
************************************************************ 
a) Coesão. 
b) Alinhamento. 
(_CORRETA_) => c) Separação. 
(_EXPLICACAO_) => Separação: um vetor de força que mantém a distância entre cada 
agente do grupo, evitando assim colisões entre os agentes. 
d) Movimentação. 
e) Tomada de Decisão. 
. 
. 
. 
. 
. 
. 
.Questão 3 
Qual conceito de coesão é aplicado ao algoritmo de Flocking? 
 
************************************************************ 
a) Força que mantém a distância entre cada agente do grupo. 
(_CORRETA_) => b) Força que faz o agente se dirigir ao centro de massa (posição média) de 
seus vizinhos. 
(_EXPLICACAO_) => Faz o agente se dirigir ao centro de massa (posição média) de seus 
vizinhos. Essa média é calculada recebendo como parâmetro o vetor da posição de seus 
vizinhos – obtendo, assim, o vetor resultante do centro de massa de todo o grupo e 
indicando a posição para a qual o agente deve se dirigir. 
c) Força que alinha a direção de cada agente com o seu vizinho no grupo. 
d) Força que direciona o agente para fora do grupo. 
e) Força que mantém o agente na primeira posição do grupo. 
. 
. 
. 
. 
. 
. 
.Questão 4 
A técnica de ______________ usa um vetor de força que mantém a distância entre cada 
agente do grupo, evitando assim colisões entre os agentes. 
 
************************************************************ 
a) Colisão. 
b) Coesão. 
(_CORRETA_) => c) Separação. 
(_EXPLICACAO_) => A separação usa um vetor de força que mantém a distância entre cada 
agente do grupo, evitando assim colisões entre os agentes. 
d) Alinhamento. 
e) Sobreposição. 
. 
. 
. 
. 
. 
. 
. 
AULA 05 
Técnicas de Tomada de Decisão – Parte 1 
 
APRESENTAÇÃO 
Esta aula apresentará o conceito de máquina de estados finitos. Nos jogos, as máquinas de 
estados são implementas para representar a tomada de decisão de um agente. Seu objetivo 
é dividir essa tomada de decisão em uma estrutura lógica, na qual o comportamento do 
agente é divido em vários estados, com transições entre eles. 
 
Para uma melhor aplicação dos conceitos de máquina de estados finitos, é importante que 
se tenha um prévio conhecimento de autômatos finitos e determinísticos e grafos. Assim, a 
tomada de decisão do agente poderá ser exposta com mais detalhes. 
 
 
 
Questão 1 
As máquinas de estados finitos são formadas por: 
 
************************************************************ 
a) Estados, tarefas, eventos e condições. 
b) Estados, transições, subtarefas e condições. 
c) Tarefas, transições, eventos e condições. 
d) Estados, transições, eventos e subtarefas. 
(_CORRETA_) => e) Estados, transições, eventos e condições. 
. 
. 
. 
. 
. 
. 
.Questão 2 
Qual a definição dos estados de uma máquina de estados finitos? 
 
************************************************************ 
a) A ligação entre os estados. 
b) Ações que ocorrem de maneira externa ao agente. 
c) Regras que representam a troca de estados. 
(_CORRETA_) => d) Comportamentos que o agente poderá assumir durante a sua 
execução. 
(_EXPLICACAO_) => Estados: são os comportamentos que o agente poderá assumir 
durante a sua execução. 
e) Regras que representam a permanência em determinado estado. 
. 
. 
. 
. 
. 
. 
.Questão 3 
Em uma máquina de estados, as/os ______________ são as ligações entre os estados, 
podem ser uni ou bidirecionais e ocorrem quando determinada condição é ativada. 
 
************************************************************ 
a) Estados. 
(_CORRETA_) => b) Transições. 
(_EXPLICACAO_) => Transições: são as ligações entre os estados; elas podem ser uni ou 
bidirecionais e ocorrem quando determinada condição é ativada. 
c) Eventos. 
d) Condições. 
e) Animações. 
. 
. 
. 
. 
. 
. 
.Questão 4 
_________________ são estruturas lógicas formadas por um conjunto de estados e um 
conjunto de regras de transição entre os estados. 
 
************************************************************ 
(_CORRETA_) => a) Máquina de estados. 
(_EXPLICACAO_) => Máquinas de estados são estruturas lógicas formadas por um 
conjunto de estados e um conjunto de regras de transição entre os estados. 
b) Máquina de comportamento. 
c) Máquina de decisão. 
d) Condições. 
e) Animações. 
. 
. 
. 
. 
. 
. 
. 
 
 
 
 
AULA 06 
Técnicas de Tomada de Decisão – Parte 2 
 
 
APRESENTAÇÃO 
Esta aula abordará os conceitos de árvores de decisão e árvores de comportamento. As 
árvores de decisão (decision threes) são técnicas que podem ajudar um agente a tomar 
determinada decisão. Dado um conjunto de estímulos, o agente precisa gerar uma ação 
correspondente a partir de um conjunto de possíveis ações. 
 
Já as árvores de comportamento são baseadas em tarefas (tasks). Uma tarefa para um 
agente pode ser simplesmente procurar um valor de determinada variável nos jogos, como 
também trocar suas animações. 
 
As tarefas são compostas de subárvores, que representam as ações mais complexas da 
tomada de decisão. Cada uma dessas ações pode ser composta por comportamentos de alto 
nível. É essa interoperabilidade que provê grande funcionalidade. 
 
Para uma melhor aplicação dos conceitos de árvores de decisão e árvores de 
comportamento, é importante que se tenha um prévio conhecimento de máquina de 
estados finitos e a estrutura árvore em computação. Assim, o conceito ensinado e a tomada 
de decisão do agente poderão ser expostos com mais detalhes. 
 
 
Questão 1 
A respeito de uma árvore de decisão, NÃO é correto afirmar: 
 
************************************************************ 
a) Uma árvore de decisão é composta por conexões de pontos de decisão. 
b) Uma árvore de decisão possui uma raiz, que é o ponto inicial da decisão. 
c) Para se chegar à sua decisão, a árvore de decisão precisa passar por uma sequência de 
testes. 
(_CORRETA_) => d) Uma árvore de decisão não possui conexões de pontos de decisão. 
(_EXPLICACAO_) => Uma árvore de decisão é composta por conexões de pontos de 
decisão 
e) A árvore de decisão possui nós-folha que representam as ações a serem executadas pelo 
agente. 
. 
. 
. 
. 
. 
. 
Questão 2 
As árvores de comportamento são baseadas em: 
 
************************************************************ 
a) Pontos de decisão. 
(_CORRETA_) => b) Tasks (Tarefas). 
(_EXPLICACAO_) => Uma árvore de comportamento é baseada em tarefas (tasks). Uma 
tarefa para um agente pode ser simplesmente procurar um valor de determinada variável 
nos jogos, como trocar suas animações. 
c) Arestas. 
d) Vértices. 
e) Decisões. 
. 
. 
. 
. 
. 
. 
.Questão 3 
A respeito das árvores de comportamento, é CORRETO afirmar que: 
 
************************************************************ 
a) Uma árvore de comportamento não é baseada em tarefas (tasks). 
(_CORRETA_) => b) As tarefas de uma árvore de comportamento não são compostas em 
subárvores. 
c) As tarefas de uma árvore de comportamento não possuem a mesma estrutura básica. 
d) Cada tarefa da árvore de comportamento pode ser qualquer comportamento que o 
programador desejar aplicar a um agente. 
e) As árvores de comportamento são implementadas para auxiliar na movimentação do 
agente. 
. 
. 
. 
. 
. 
. 
.. 
 
 
 
AULA 07 
Técnicas de Tomada de Decisão – Parte 3 
 
APRESENTAÇÃO 
A lógica Fuzzy (nebulosa) nos jogos pode ser utilizada para construir um sistema baseado 
em regras ou em máquina de estados finitos. 
 
Exemplo de lógica Fuzzy: 
 
Neste exemplo o agente realiza a sua tomada decisão de acordo com o estado atual do 
jogador; esse estado é calculado de acordo com a lógicaFuzzy. 
 
Se (vida_forte) então fugir; 
Se (vida_média) então atacar; 
Se (vida_baixa) então atacar. 
 
No exemplo, vida_forte, vida_media e vida_baixa são funções Fuzzy. 
 
Para usar a lógica Fuzzy, é necessário entender suas etapas: Entrada (fuzzificação), Saída 
(saída Fuzzy) e quantização (deFuzzyficação). 
 
Questão 1 
Por que utilizar a lógica Fuzzy (nebulosa) nos jogos? 
 
************************************************************ 
a) Para movimentar o agente no ambiente. 
(_CORRETA_) => b) Para implementar a tomada de decisão de um agente. 
c) Para implementar a movimentação de um grupo de agentes. 
d) Para fazer o agente aprender com suas ações. 
e) Para implementar a detecção de colisão entre agentes. 
. 
. 
. 
. 
. 
. 
.Questão 2 
Na lógica Fuzzy, a etapa que mapeia os dados de entrada em dados nebulosos é chamada: 
 
************************************************************ 
a) Operadores Fuzzy. 
(_CORRETA_) => b) Fuzzificação. 
(_EXPLICACAO_) => Nessa etapa, os dados de entrada passados para o algoritmo são 
mapeados em dados nebulosos. Esse mapeamento busca encontrar o grau de 
associatividade entre os dados de entrada observados e os conjuntos de valores Fuzzy 
predefinidos. 
c) Defuzzificação. 
d) Saída Fuzzy. 
e) Funções de associatividade. 
. 
. 
. 
. 
. 
. 
.Questão 3 
As funções de associatividade na lógica Fuzzy servem para: 
 
************************************************************ 
a) Realizar as transições entre os estados. 
b) Realizar as ações que ocorrem de maneira externa ao agente. 
c) Associar valores de entrada para as transições de estados. 
(_CORRETA_) => d) Associar um valor de entrada a determinada ação de saída do agente. 
(_EXPLICACAO_) => A função de associatividade, como o próprio nome já diz, irá associar 
um valor de entrada a determinada ação de saída do agente. Qualquer função pode ser 
usada como uma função de associatividade; a escolha vai depender da precisão que se 
deseja alcançar e da facilidade de implementação. 
e) Realizar os cálculos para movimentação do agente. 
. 
. 
. 
. 
. 
. 
.Questão 4 
Quando se deseja uma saída quantitativa, o que é necessário utilizar para que a saída seja 
um número do sistema nebuloso? 
 
************************************************************ 
a) Funções de Associatividade. 
b) Saída Fuzzy. 
(_CORRETA_) => c) Desfuzzificação. 
(_EXPLICACAO_) => Quando se deseja uma saída quantitativa, é necessário utilizar a 
desfuzzificação; assim, a saída será um número do sistema nebuloso. Por exemplo, se um 
agente estiver perseguindo o jogador (player), um sistema Fuzzy pode indicar ao agente 
um valor quantitativo que recomenda uma mudança de direção para direita ou para 
esquerda a fim de interceptar o jogador. 
d) Operador de Conjunção. 
e) Fuzzificação. 
. 
. 
. 
. 
. 
. 
. 
 
AULA 08 
Técnicas Avançadas – Aprendizado 
 
APRESENTAÇÃO 
O aprendizado está ligado diretamente à inteligência, pois, se um sistema é capaz de 
aprender a realizar determinada tarefa, merece então ser chamado de inteligente. O 
aprendizado de máquina nada mais é que um aprendizado por experiência; à medida que a 
tarefa é executada, o programa aprende a melhor maneira de resolver o problema. 
 
O campo de aprendizado de máquina costuma distinguir três subcampos: o supervisionado, 
o não supervisionado e o por reforço. O foco desta aula é mostrar um pouco de cada um 
deles e um algoritmo que utiliza aprendizado supervisionado para representar sua forma de 
aprender, as redes neurais. 
 
Aprendizagem supervisionada: como o próprio nome sugere, faz o agente necessitar de 
supervisão de dados externos, mais especificamente um instrutor. A partir desses dados, o 
agente aprende uma função que mapeia os valores de entrada para os de saída. Durante o 
treinamento, o instrutor fornece ao agente os dados corretos para que o objetivo seja 
alcançado; assim, esse método se torna muito eficiente, pois o sistema pode trabalhar 
diretamente com informações corretas. Se os valores forem discretos, o problema é 
categorizado como classificação. No entanto, se forem contínuos, o problema é 
categorizado como regressão. Esse método é muito utilizado em agentes para classificação, 
regressão e estimação de probabilidade condicional; 
Aprendizagem não supervisionada: nesse tipo de aprendizagem, não são fornecidas saídas 
para as entradas das funções de aprendizado do agente; com isso, há a incerteza sobre a 
saída da função de aprendizagem do agente. Com essa ausência dos parâmetros de entrada, 
esse tipo de arendizagem usado puramente não fornece condições para o agente decidir 
sobre a ação adequada ou o estado desejado. Assim, são utilizados muitos métodos 
probabilísticos para simular essa experiência não vivida – um deles é a aprendizagem 
bayesiana (ou redes bayesianas); 
Aprendizagem por reforço: nesse método, em vez de o agente ser informado sobre o que 
fazer por um instrutor, o agente de aprendizagem por reforço deve aprender a partir de 
reforços fornecidos em cima de suas ações realizadas no ambiente e, com isso, fazer uma 
hipótese e determinar se ela foi boa ou ruim, pois os reforços podem significar recompensa 
ou punição. 
As redes neurais fazem parte de um aprendizado supervisionado. O objetivo dos algoritmos 
de redes neurais é simular o modelo de ligação e comunicação dos neurônios existentes nos 
seres vivos. Um neurônio possui um núcleo, um corpo celular, um axônio e dendritos. 
 
Questão 1 
De acordo com Russell e Norvig, o campo de aprendizado de máquina costuma distinguir 
três subcampos. Quais são eles? 
 
************************************************************ 
a) Supervisionado, por ação, não supervisionado. 
b) Condicional, supervisionado, por reforço. 
c) Por reforço, condicional, não supervisionado. 
(_CORRETA_) => d) Supervisionado, não supervisionado e por reforço. 
e) Por reforço, por ação, condicional. 
. 
. 
. 
. 
. 
. 
. 
Questão 2 
Por que utilizar algoritmos de aprendizado em jogos? 
 
************************************************************ 
a) Para movimentar os agentes em jogos. 
(_CORRETA_) => b) Porque os algoritmos de aprendizado fazem os agentes aprenderem 
com suas ações e se tornarem menos previsíveis. 
(_EXPLICACAO_) => Os algoritmos de aprendizado nos jogos fazem o agente se adaptar a 
cada jogador ou ambiente, aprendendo seus truques e técnicas, assim fornecendo um 
desafio mais consistente e sem previsibilidade. Com essa técnica, podemos criar agentes 
mais próximos da realidade, capazes de se adaptarem a tudo à sua volta no ambiente do 
jogo. 
c) Para deixar as tomadas de decisões menos complexas. 
d) Porque eles fazem os agentes agirem sobre suas próprias ações, sem nenhuma 
aprendizagem. 
e) Para tornar os agentes em jogos mais previsíveis. 
. 
. 
. 
. 
. 
. 
.Questão 3 
Qual o objetivo dos algoritmos de redes neurais? 
 
************************************************************ 
(_CORRETA_) => a) Simular o modelo de ligação e comunicação dos neurônios existentes 
nos seres vivos. 
(_EXPLICACAO_) => O objetivo dos algoritmos de redes neurais é simular o modelo de 
ligação e comunicação dos neurônios existentes nos seres vivos. Um neurônio possui um 
núcleo, um corpo celular, um axônio e dendritos. 
b) Simular o comportamento de movimentação do ser humano. 
c) Simular a ligação e comunicação das células humanas. 
d) Simular os estados de um autômato finito. 
e) Simular as ligações entre as árvores de decisão. 
. 
. 
. 
. 
. 
. 
.Questão 4 
A aprendizagem ________________ faz o agente necessitar de uma supervisão de dados 
externos, mais especificamente um instrutor. A partir desses dados, o agente aprende uma 
função que mapeia os valores de entrada para os de saída. 
 
************************************************************ 
(_CORRETA_) => a) Supervisionada. 
(_EXPLICACAO_) => A aprendizagem supervisionada, como o próprio nome sugere, faz o 
agente necessitar de uma supervisão de dados externos, mais especificamente um 
instrutor. A partir desses dados, o agenteaprende uma função que mapeia os valores de 
entrada para os de saída. 
b) Não supervisionada. 
c) Por instrução. 
d) Reforço. 
e) Elementar. 
. 
. 
. 
. 
. 
. 
.

Continue navegando