Inteligência Artificial
Material Teórico
Resolução de Problemas por Meio de Buscas
Responsável pelo Conteúdo:
Prof. Me. Manuel Fernandez Paradela Ledón
Revisão Técnica:
Prof. Me. Douglas Almendro
Revisão Textual:
Prof. Me. Luciano Vieira Francisco
Resolução de Problemas
por Meio de Buscas
• Exercício ou Problema?;
• Comparando a Eficiência de Algoritmos
para Resolver Problemas;
• Métodos de Resolução de Problemas;
• Espaço de Estados – State Space.
OBJETIVO DE APRENDIZADO
· Conhecer formas de resolução de problemas por meio de buscas;
· Conhecer os tipos de buscas e comparar as suas características.
Orientações de estudo
Para que o conteúdo desta Disciplina seja bem
aproveitado e haja maior aplicabilidade na sua
formação acadêmica e atuação profissional, siga
algumas recomendações básicas:
Determine um
horário fixo
para estudar.
Procure manter
contato com seus
colegas e tutores
para trocar ideias!
Isso amplia a
aprendizagem.
Conserve seu
material e local de
estudos sempre
organizados.
Aproveite as
indicações
de Material
Complementar.
Mantenha o foco!
Evite se distrair com
as redes sociais.
Seja original!
Nunca plagie
trabalhos.
Assim:
Organize seus estudos de maneira que passem a fazer parte
da sua rotina. Por exemplo, você poderá determinar um dia e
horário fixos como seu “momento do estudo”;
Não se esqueça
de se alimentar
e de se manter
hidratado.
Procure se alimentar e se hidratar quando for estudar; lembre-se de que uma
alimentação saudável pode proporcionar melhor aproveitamento do estudo;
No material de cada Unidade, há leituras indicadas e, entre elas, artigos científicos, livros, vídeos
e sites para aprofundar os conhecimentos adquiridos ao longo da Unidade. Além disso, você
também encontrará sugestões de conteúdo extra no item Material Complementar, que ampliarão
sua interpretação e auxiliarão no pleno entendimento dos temas abordados;
Após o contato com o conteúdo proposto, participe dos debates mediados em fóruns de discussão, pois irão auxiliar a verificar o quanto você absorveu de conhecimento, além de propiciar o
contato com seus colegas e tutores, o que se apresenta como rico espaço de troca de ideias e
de aprendizagem.
UNIDADE
Resolução de problemas por meio de buscas
Exercício ou Problema?
Nesta Unidade abordaremos a resolução de problemas por meio de buscas.
Poderia parecer óbvio, mas, o que significa “problema”? “Problema” e “exercício”
têm o mesmo significado? Estes termos possuem uma grande semelhança, mas,
alguns autores, como Paul Zeitz (2007), fazem questão de diferenciar, vejamos:
First, what is a problem? We distinguish between problems and exercises.
An exercise is a question that you know how to resolve immediately.
Whether you get it right or not depends on how expertly you apply
specific techniques, but you don't need to puzzle out what techniques to
use. In contrast, a problem demands much thought and resourcefulness
before the right approach is found (ZEITZ, 2007).
Basicamente, esse teórico quis deixar claro que um exercício é utilizado para praticar
sobre algo que sabemos como resolver. Já para resolver um problema, cuja solução não
é tão óbvia ou fácil, por conta de sua complexidade, necessitamos de maior reflexão e
possivelmente estudar até encontrar uma estratégia adequada para a solução.
Comparando a Eficiência de Algoritmos
para Resolver Problemas
Como estudaremos aqui, quanto às estratégias para a resolução de problemas
por meio de buscas, chegaremos a conclusões e compararemos, finalmente, tais
algoritmos quanto ao seu desempenho e também à utilização de memória auxiliar
necessária para a implementação dos mesmos.
O desempenho ou eficiência na solução de problemas está relacionado com
vários elementos, mencionados a seguir:
8
•
Completeza ou completude: o algoritmo oferece certeza de encontrar uma
solução para o problema?
•
Otimização: o algoritmo encontrará uma solução ótima para o problema?
•
Complexidade de tempo – velocidade: quanto tempo é necessário para
executar a busca?
•
Complexidade de espaço: quanta memória é necessária para executar a busca?
•
Complexidade algorítmica: qual é o custo da implementação, dada a
sua complexidade?
Na Ciência da Computação é frequentemente utilizada uma notação conhecida
como big-O, com esta forma: O(expressão), que permite identificar a eficiência
de um algoritmo – quanto à velocidade ou memória – para resolver determinado
problema. Tal expressão normalmente considera o algoritmo em uma situação
onde a quantidade de dados é grande, utilizando o conceito matemático de limite,
ou seja, é efetuada uma análise assintótica para verificar a eficiência do algoritmo
em situações extremas. Quando o cálculo de O(expressão) se preocupa com a
velocidade, será analisada a quantidade de comparações ou operações necessárias
para se chegar à solução final.
Por exemplo, um algoritmo poderia ter eficiência O(n), O(n2), O(log2 n) etc., o
que caracterizará a sua complexidade, sendo O(expressão) uma representação do
número de passos do algoritmo em função do tamanho n da entrada. Por exemplo,
um algoritmo que executa em O(n) é melhor que outro com O(n2), ainda que para
n = 1 ou valores pequenos de n sejam equivalentes.
Outros dois exemplos mais críticos seriam algoritmos que executam em O(2n)
e O(n!), porque seriam algoritmos muito ineficientes. Observe que uma função
exponencial como 2n cresce muito rápido, à medida que aumenta o valor de n.
Figura 1 – Funções O(2n), O(n²) e O(log10 n)
Na Figura anterior, construída com a ferramenta disponibilizada em: <http://
www.graphsketch.com>, podemos observar que um algoritmo com eficiência
logarítmica, de O(log10 n), ainda que normalmente utilizemos um logaritmo de base
dois, O(log2 n), será muito eficiente, mesmo para valores grandes de n.
Já um algoritmo com eficiência O(n2) é bem menos eficiente. Ainda que não
desenhado na Figura, um algoritmo com eficiência O(n) seria um caso intermediário,
uma função que seria uma linha reta, que representa uma eficiência que depende
linearmente da quantidade de dados n. Um algoritmo com O(log2 n) continuaria
sendo bem melhor que os restantes.
Na outra função mostrada, um algoritmo que execute em O(2n), exponencial com
base dois, poderia ser considerado muito ineficiente, caracterizando o problema resolvido como intratável, se for esta a melhor solução possível para a implementação.
9
9
UNIDADE
Resolução de problemas por meio de buscas
Métodos de Resolução de Problemas
Além de outros autores, Russell e Norvig (2004) classificam os métodos para a
resolução de problemas como mostramos a seguir:
Quadro 1 – Classificação dos métodos para a resolução de problemas
Busca sem informação
Não existe nenhuma informação do problema além da sua definição;
Busca com informação
Informações conhecidas sobre as especifidades do problema ajudam a encontrar
soluções mais eficientes; buscas heurísticas;
Problemas de satisfação
de restrições
Utilizam alguma representação simples padrão (como um “grafo de restrições“)
para representar os elementos do problema e suas restrições;
Busca competitiva
A busca de soluções se caracteriza pela participação de agentes que estão em
conflito; a solução de um agente compete com a solução de outro que planeja
contra ele (típico em jogos);
Métodos estocásticos
Utilização da teoria das probabilidades e outros métodos que utilizem
conhecimento incerto, aproximado ou probabilístico para a solução de problemas.
Fonte: adaptado de Russell e Norvig (2004)
Especificamente, os métodos de resolução de problemas dentro da busca
sem informação em espaços de estados costumam ser subdivididos em algumas
possibilidades, como mostrado a seguir:
Quadro 2 – Métodos para buscas sem informação em espaços de estados
· Busca em extensão;
· Busca de custo uniforme;
· Busca em profundidade;
· Busca em profundidade limitada;
· Busca de aprofundamento iterativo em profundidade;
· Busca bidirecional.
Fonte: adaptado de Russell e Norvig (2004)
Já George Luger (2013) divide o seu estudo sobre métodos para a resolução de
problemas em três temas, a saber:
10
•
Busca em espaço de estados;
•
Busca heurística;
•
Métodos estocásticos.
Resolução de Problemas por Meio de Buscas
Muitos livros e textos de Inteligência Artificial estudam este assunto, chamado de
resolução de problemas por meio de buscas. Mas, o que isto significa?
Tecnicamente, isto seria utilizar alguma estratégia para buscar soluções para
um problema, encontrando sequências de ações que levem a estados desejáveis e
preferivelmente a uma solução ótima do problema.
Dito de outra forma, partimos de um estado inicial e queremos chegar a um
estado final, que seria uma solução para o problema que estamos resolvendo; mas
queremos que seja garantido que sempre cheguemos a uma solução utilizando esse
método – completeza ou completude: que encontremos sempre uma solução – e
que a solução seja ótima, a melhor possível quanto ao tempo e à memória utilizada.
Espaço de Estados – State Space
Na representação da solução de um problema como um espaço de estados,
podemos utilizar um grafo:
•
Cujos nós são estados parciais, intermediários ou finais na solução do problema; um desses nós será considerado o estado inicial para o princípio da
solução do problema;
•
Cujos arcos são passos ou etapas no processo de solução do problema;
•
Que costuma definir estados objetivos – metas –, que seriam resultados esperados para a solução do problema.
Uma busca em um espaço de estados será encontrar uma solução do problema
que se caracteriza por encontrar um caminho entre o estado inicial e um estado
objetivo, preferivelmente ótimo. Russell e Norvig (2004) mencionam que um
problema pode ser definido por quatro componentes:
1. O estado inicial em que o agente começa a resolver o problema;
2. Uma descrição das ações possíveis que estão disponíveis ao agente. Uma
função sucessora pode determinar dentro de um espaço de estados qual
será a próxima ação na sequência;
3. Um teste de objetivo que verifica se determinado estado é objetivo ou
final – por exemplo, no xadrez, a condição de xeque-mate seria um estado
objetivo ou final;
4. Poderá ser considerado um custo de caminho atribuído a cada percurso,
calculado como a soma dos custos de passos, onde cada passo pode ser um
valor numérico e será o custo de uma ação para ir de um estado para outro.
Um custo de caminho mínimo poderia ser uma solução ótima do problema.
11
11
UNIDADE
Resolução de problemas por meio de buscas
Analisemos o exemplo da Figura a seguir: os nós são cidades, são os estados
deste espaço, sendo que Cidade 1 é o estado inicial e a Cidade 7 é o estado final.
As outras cidades são estados parciais ou intermediários na solução do problema.
Os arcos são caminhos que especificam a distância em quilômetros entre duas
cidades. Neste grafo poderíamos acrescentar – nos arcos – os nomes das estradas
e as direções ou sentidos.
Figura 2 – Exemplo: um espaço de estados, com cidades (nós) e caminhos (arcos)
A solução do problema deste exemplo seria encontrar um caminho eficiente para
viajar de uma cidade a outra. Mas teremos várias questões a serem respondidas,
seguindo o esquema geral descrito:
a) Qual é o estado inicial?
b) Qual é o estado final ou objetivo?
c) Qual seria a função sucessora?
d) Qual seria o teste de objetivo?
e) Qual seria uma solução ótima?
Antes, porém, mencionamos que um custo de caminho mínimo poderia ser
uma solução ótima do problema. Ao analisar inicialmente a Figura anterior,
podemos achar várias possibilidades que, aparentemente, seriam as melhores
para ir do estado inicial Cidade 1 até o estado final Cidade 7. Mas, calculando
os custos de caminhos – quilometragem neste exemplo –, um caminho menos
óbvio é o que possui o custo mínimo: Cidade 1, Cidade 2, Cidade 4, Cidade 3,
Cidade 5, Cidade 7 (10 + 100 + 30 + 20 + 45).
Vejamos outro exemplo de “espaço de estados”: Você possivelmente lembrará
de um jogo cujo nome, em inglês, é 8-puzzle – reproduzido na Figura a seguir.
Consiste em, a partir de um estado inicial qualquer, mover os números nos quadros,
utilizando o único espaço vazio existente, para chegar a um estado final que mostre
os números ordenados em sequência crescente: 1, 2, 3, 4, 5, 6, 7 e 8. O diagrama
de estado mostra todas as possibilidades ou estados, dependendo do movimento
que será feito. A descrição utilizada pelo luger – up, down, left, right – refere-se
ao movimento do espaço, à operação “mover branco”.
12
Novamente, os conceitos explicados quanto a definir os estados inicial e final do
espaço de estados, ou seja, de ter uma função sucessora para decidir o próximo
movimento, o teste de objetivo, estabelecer um custo de caminho atribuído a cada
passo, para calcular um custo de percurso mínimo e que permita chegar à solução
do problema – estado final ou objetivo – o mais rápido possível.
1 4 3
7
6
5 8 2
Estado Inicial
Up
Left
1
3
7 4 6
5 8 2
Left
1 3
7 4 6
5 8 2
Right
1 3
7 4 6
5 8 2
Down
1 4 3
7 6
5 8 2
Up
Down
4 3
1 7 6
5 8 2
Right
1 4 3
7 8 6
5
2
1 4 3
5 7 6
8 2
Left
1 4 3
7 8 6
5 2
1 4 3
7 6
5 8 2
Right
1 4 3
7 8 6
5 2
Up
1 4
7 6 3
5 8 2
Down
1 4 3
7 6 2
5 8
Espaço de estados do 8-puzzle, gerado
por operações “mover branco”
Estado Objetivo
1 2 3
4 5 6
7 8
Figura 3 – Espaço (parcial) de estados para o jogo 8-puzzle
Fonte: Adaptada de Luger, 2013
Buscas sem Informação em Espaços de Estados
Analisaremos três tipos de buscas sem informação – busca não informada,
blind search, busca cega – em espaços de estados. Observe que isto significa que
conhecemos a definição do problema, os estados, mas não temos informações
adicionais ou sugestões sobre como encontrar mais rápido a solução ou o objetivo
final. Assim, abordaremos brevemente apenas três buscas sem informação em
espaços de estados, que diferem na forma em que são gerados/visitados os estados
do espaço, tratam-se das buscas:
•
Em extensão;
•
Em profundidade;
•
Bidirecionais.
13
13
UNIDADE
Resolução de problemas por meio de buscas
Busca em Extensão
A busca em extensão ou amplitude – em inglês, breadth-first search – caracteriza-se pela seguinte lógica: o nó raiz é expandido primeiro, em seguida serão
expandidos todos os sucessores do nó raiz, depois os sucessores desses nós e assim
por diante.
Figura 4 – Busca em extensão
A visita de um estado e expansão do mesmo ocorre completamente em um
nível para depois passar a expandir o próximo nível – é uma busca de nível a nível.
Na Figura 4, os estados já visitados e expandidos foram coloridos na cor azul escura
e os estados ainda não visitados/expandidos na cor azul clara. Ademais, a seta
laranja aponta ao estado examinado.
Em uma busca em extensão, como mostrado na Figura 4, os estados são “examinados” nesta ordem: A, B, C, D, E, F, G..., o que mostra a característica de visitar os
estados nível a nível, semelhante a uma leitura de cima para baixo e da esquerda para
a direita em cada linha, ou seja, visitar o espaço de estados nível a nível.
Vejamos aspectos positivos desse método de busca em um espaço de estados:
é uma estratégia relativamente simples, é completa – sempre encontraremos um
estado objetivo, uma solução – e podemos chegar a encontrar uma solução ótima
– se os custos de todos os passos são iguais.
Já quanto aos problemas: para uma solução encontrada na profundidade d e
supondo que os estados tenham b nós sucessores, pode ser demonstrado que a
eficiência em armazenamento e de tempo é de O(bd+1), ordem exponencial, o que
o cataloga como um método ineficiente de busca em um espaço de estados para
valores grandes de b e d.
14
Busca em Profundidade
Examinemos agora a busca em profundidade, conhecida, em inglês, como
depth-first search.
A busca em profundidade em um espaço de estado se caracteriza por esta
estratégia: quando um estado é examinado, todos os seus filhos e descendentes
são averiguados, antes que qualquer um de seus irmãos.
Figura 5 – Busca em profundidade
Analisemos a Figura 5: o primeiro estado examinado é A. Imediatamente,
abrimos os seus filhos B e C. Observe que B será, então, examinado, com seus
filhos, antes de averiguar os irmãos de B – antes de examinar C, no exemplo.
O mesmo acontece com D que, com seus filhos H e I, serão abertos e examinados
antes de averiguar o seu irmão E. Esta lógica – que justifica o nome de busca em
profundidade – mergulha pelo caminho do primeiro filho esquerdo no espaço de
estados, antes de analisar os irmãos.
São aspectos positivos desse método de busca em um espaço de estados: para
um espaço de estados com fator de ramificação b e profundidade máxima m
(níveis), exige o armazenamento de, apenas, bm + 1 nós, ou seja, é de ordem
O(bm), polinomial, pelo que a busca em profundidade seria mais eficiente quanto
à memória – armazenamento –, se comparada à busca em amplitude – extensão.
Sobre os problemas: pode acontecer que efetuemos uma escolha de caminho
equivocada – em um percurso muito longo ou mesmo infinito –, no lugar de escolher
uma solução próxima à raiz da árvore de procura. A busca em profundidade nem
sempre é ótima. Se for escolhida uma subárvore de profundidade ilimitada, sem
nenhuma solução, essa busca nunca terminaria, então não seria completa. No
pior caso, pode chegar a ser de ordem O(bm), exponencial, quanto ao tempo de
processamento.
15
15
UNIDADE
Resolução de problemas por meio de buscas
Exemplo: Analisemos um caso a partir da figura presente em Luger (2013), a fim
de demonstrar as sequências das buscas em extensão – amplitude – e profundidade
em um espaço de estados:
A
C
B
F
E
K
L
S
T
M
D
G
H
N
O
I
J
P
Q
R
U
Figura 6 – Um grafo de um espaço de estados
Fonte: Adaptado de Luger, 2013
Uma busca em extensão – amplitude – nesse espaço de estados, examinará os
estados nível a nível, nesta ordem:
A
B C D
E F G H I J
K L M N O P Q R
S T U
Já uma busca em profundidade neste mesmo espaço de estados, examinará os
presentes nesta ordem:
A
B
E
K
S
L
T
F
M
C
G
N
H
O
P
U
D
I
Q
J
R
Isto porque a busca se aprofundará nos caminhos esquerdos antes de examinar
os estados dos nodos irmãos.
Busca Bidirecional
Em uma busca bidirecional serão feitas procuras em extensão simultaneamente,
partindo de um estado inicial e objetivo até se encontrarem em um ponto intermediário.
Este método de busca possui eficiências de armazenamento e de processamento
de ordem O(bd/2), uma função exponencial, sendo que d é a profundidade da solução
mais rasa – em menor nível.
16
Figura 7 – Busca bidirecional em um espaço de estados
Fonte: Russell e Norvig, 2004
Busca Heurística – Busca com Informação, Busca Informada
O que significa heurística? Trata-se do: “Conjunto de regras e métodos que
visam à descoberta, à invenção ou à resolução de problemas” (AURÉLIO, 2009).
“Eureka!”, disse o grego Arquimedes, expressão que significa o achei!, o encontrei!
Em buscas em espaços de estados, as heurísticas são identificadas como regras
ou funções para escolher aqueles caminhos em um espaço de estados que levam a
uma solução do problema aceitável. É um caso de busca com informação.
Situações básicas onde os “resolvedores” de problemas utilizam heurísticas:
•
Um problema poderia não ter uma solução exata, como consequência de
ambiguidades na formulação do problema ou nos dados disponíveis – por
exemplo, situações de diagnóstico médico e visão/reconhecimento;
•
Um problema poderia ter uma solução exata, mas o custo computacional –
memória/tempo – poderia ser proibitivo.
Determinadas heurísticas poderiam resolver problemas nessas duas situações,
propondo soluções baseadas na experiência sobre o problema e oferecer caminhos
mais promissórios ou com menores custos de tempo/memória.
Busca Gulosa
Conhecida como busca gulosa, busca gulosa pela melhor escolha, greedy e
Busca pela Melhor Escolha (BME) – em inglês, best-first search. Esta busca poderia
ser utilizada para encontrar uma solução em um espaço de estados.
Tal busca, dentro de um espaço de estados, tenta expandir – analisar – o nó
mais próximo da meta ou do objetivo – nodo mais próximo, perto da solução, com
menor tempo ou qualquer outra função heurística semelhante –, na suposição de
que essa estratégia levará a uma solução mais rápida.
17
17
UNIDADE
Resolução de problemas por meio de buscas
É utilizada uma função heurística h(n), que retorna o custo estimado do caminho
mais econômico do nó n até um nó objetivo – para alguma solução do problema.
Pressupõe conhecimento ou informação sobre o problema a resolver, ou seja, é um
método de busca com informação.
Exemplo: analisemos um caso de busca gulosa apresentado por Russell e Norvig
(2004, p. 65, 95-97), em que utilizaram um modelo com cidades da Romênia:
Figura 8 – Exemplo de busca gulosa
Fonte: Adaptada de Russell e Norvig, 2004.
O problema será encontrar o melhor caminho para ir de Arad até Bucareste.
Será realizada, portanto, uma análise considerando distâncias e ignorando fatores
importantes, tais como estado de uso das estradas, trânsito nas mesmas, paisagem,
velocidade permitida, lugares históricos para visitar etc.
Na Figura 8, os nós são as cidades – estados do problema – e os números são
as distâncias rodoviárias entre duas cidades.
A função heurística que será utilizada, h(n), é a distância em linha reta de uma
cidade n até Bucareste, que é o destino final.
Observe, no exemplo da Figura 8, que:
18
•
O primeiro nó que será expandido a partir de Arad será Sibiu porque, segundo
a função heurística h(n), é a cidade que está mais próxima (253) em linha reta até
Bucareste. Os outros nós adjacentes a Arad são Zerind (374) e Timisoara (329);
•
Analisando as cidades adjacentes a Sibiu e utilizando a mesma função heurística,
será selecionada Fagaras, que é a que fica mais próxima a Bucareste em linha reta;
•
Fagaras gera Bucareste, que é o objetivo desejado;
•
Se analisarmos detalhadamente, o caminho Arad-Sibiu-Fagaras-Bucareste,
recomendado pela função heurística, tem 140 + 99 + 211 = 450 km,
de modo que não seria o melhor caminho. Temos 418 km, uma menor
distância, se vamos por Arad-Sibiu-RimnicuVilcea-Pitesti-Bucareste;
•
Podemos encontrar determinados problemas, vejamos: utilizando uma função
heurística semelhante para ir de Iasi até Fagaras, sugerir-se-ia tomar o caminho
Iasi-Neamt, um beco sem saída, uma vez que não existe estrada entre Neamt
e Fagaras. Neste caso, a função heurística propõe um caminho que não é uma
solução correta, ou seja, não garante a completude.
Importante!
Importante!
Uma função heurística aprimorada poderá levar a soluções muito mais eficientes.
Finalmente, compararemos os métodos para “resolução de problemas por meio
de buscas em um espaço de estados” que foram aqui estudados. Para tanto, veja o
seguinte Quadro:
Quadro 3 – Comparando os métodos estudados para resolução de problemas por meio de buscas
Critério
Em extensão
Em profundidade
Bidirecional
Gulosa
Completa?
Sim
Não
Sim
Não
Tempo
O(bd+1)
O(bm)
O(bd/2)
O(bm)
Espaço
O(bd+1)
O(bm)
O(bd/2)
O(bm)
Ótima?
Sim
Não
Sim
Não
Os elementos marcados com a cor vermelha representam situações piores, enquanto que os assinalados com a cor verde são as condições melhores.
Eficiências que possuem funções exponenciais serão críticas para grandes tamanhos dos parâmetros, seja quanto ao tempo ou à memória utilizada pelo método.
Eficiências que possuem funções polinomiais ou uma função exponencial menos
agressiva serão melhores, ainda para tamanhos grandes dos parâmetros – e, no
Quadro 3, foram marcadas na cor verde.
Quanto aos comentários sim e não, o desejado é que um método seja completo – que sempre permita chegar a uma solução – e ótimo, marcado com o
valor sim no Quadro 3.
Finalmente, não existe um método perfeito. Por exemplo, a busca em extensão
é completa e permite encontrar uma solução ótima para esta sequência de busca,
mas as funções de eficiência quanto ao tempo e à memória são exponenciais.
19
19
UNIDADE
Resolução de problemas por meio de buscas
Material Complementar
Indicações para saber mais sobre os assuntos abordados nesta Unidade:
Sites
Internet Encyclopedia of Philosophy
HAUSER, L. Artificial intelligence. Internet Encyclopedia of Philosophy.
goo.gl/WP5dAe
Livros
Inteligência artificial
WINSTON, P. H. Inteligência artificial. Rio de Janeiro: LTC, 1988.
Leitura
Resolução de problemas por meio de busca
LIMA, E. S. de. Resolução de problemas por meio de busca;
goo.gl/dJLxFg
Resolução de problemas por meio de busca
PRATI, R. Resolução de problemas por meio de busca;
goo.gl/azfSC8
20
Referências
AURÉLIO. Novo dicionário eletrônico Aurélio. Versão 6.0. Curitiba, PR:
Positivo, 2009.
LUGER, G. F. Inteligência artificial. 6. ed. São Paulo: Pearson Education do
Brasil, 2013.
RICH, E.; KNIGHT, K. Inteligência artificial. 2. ed. São Paulo: Makron Books, 1994.
ROSA, J. L. G. Fundamentos da inteligência artificial. Rio de Janeiro: LTC, 2011.
RUSSELL, S. J.; NORVIG, P. Inteligência artificial: referência completa para cursos
de Computação. 2. ed. Rio de Janeiro: Elsevier, 2004.
ZEITZ, P. The art and craft of problem solving. 2nd ed. New York: Wiley, 2007.
21
21