











































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
inteligencia artificial
Tipologia: Notas de estudo
1 / 51
Esta página não é visível na pré-visualização
Não perca as partes importantes!












































o Aquisição de Conhecimento o Aprendizado Computacional Redes Neuronais Sistemas e Linguagens para IA Arquiteturas Específicas para IA Processamento de Linguagem Natural Robótica Inteligente o Síntese de Voz o Percepção o Manipulação o Planejamento
1.4. Referências O conteúdo desta apostila é fortemente baseado na bibliografia básica do programa da disciplina, CIC250 – Inteligência Artificial, [Rich93] e [Bratko90]. Diversas partes do texto também foram baseadas no material de aula do Prof. Elton Silva.
2.1. Discussão e Tentativa de Definição O termo “Inteligência Artificial” não é de fácil definição e há controvérsias entre vários pesquisadores. Abaixo são apresentadas algumas definições para as palavras que compõem o termo retirado do Dicionário Michaelis e outros. Artificial
Assim, a inteligência passou a ser vista e discutida sob vários aspectos:
2.2. Comparação entre IA e Computação Convencional
IA Computação Convencional Não algorítmico Algorítmico Processamento Simbólico Processamento Numérico Não Determinista Determinista Fácil Modificação Difícil Modificação Estrutura Estrutura
Figura 2 - IA x Computação Convencional
2.3. Automação de Atividades A Figura 3 mostra uma classificação das atividades que são executadas nas empresas e o tipo de automação que é utilizado em cada caso.
Figura 3 - Perfil das atividades em relação à mão-de-obra
Neste capítulo serão estudadas duas abordagens que permitem resolver a maior parte dos problemas:
3.1. Espaço de Estados Nesta abordagem a modelagem do problema é elaborada conforme a Figura 4. Partindo-se de um estado inicial deseja-se chegar a um estado final utilizando-se um conjunto de operações de transformação de estados.
Figura 4 Representação do problema.
3.1.1. Representação do Problema em Espaço de Estados Para facilitar a assimilação dos conceitos, a introdução ao assunto será feita através do mundo dos blocos. O mundo dos blocos proposto para estudo possui apenas três blocos (A, B e C) e uma mesa. Os blocos podem estar sobre a mesa ou empilhados. O problema é elaborar um plano para re-arranjar a disposição dos blocos de acordo com o desejado. Assim, um plano é uma seqüência de movimentos de blocos que, partindo de uma situação inicial, leva a uma situação desejada. A Figura 5 apresenta um problema específico, onde estão definidas a situação inicial e a situação desejada. A definição do mundo estabelece uma classe de problema, pois é possível definir para o mesmo mundo novos problemas através da escolha de outras situações inicial e desejada.
Figura 5 Um problema de re-arranjo de blocos (baseado em [Bratko2001]).
Neste problema, a modelagem utilizando a abordagem Espaço de Estados é natural: a situação inicial dos blocos é o estado inicial, a situação desejada é o estado final e a seqüência de movimentos é uma seqüência de operações válidas do conjunto de operações de transformação de estados. O conjunto de operações pode ser formado pelas operações apresentadas na Figura 6.
(1) coloque o bloco A sobre a mesa; (2) coloque o bloco A sobre o bloco B; (3) coloque o bloco A sobre o bloco C; (4) coloque o bloco B sobre a mesa; (5) coloque o bloco B sobre o bloco A; (6) coloque o bloco B sobre o bloco C; (7) coloque o bloco C sobre a mesa; (8) coloque o bloco C sobre o bloco A; (9) coloque o bloco C sobre o bloco B.
Figura 6 Um possível conjunto de operações para o problema da Figura 5.
Uma operação é válida quando ela respeita as restrições impostas na definição do problema. As restrições de movimentos no problema proposto são bastante simples: é permitido mover apenas um bloco de cada vez, não pode haver outros blocos em cima do bloco a ser movimentado nem do bloco sobre o qual se quer colocar um bloco em cima. Por exemplo, para aplicar a operação (2) não poder haver blocos em cima do bloco A nem do bloco B. Desta forma, partindo da situação inicial do problema apresentado na Figura 5, existe apenas um movimento legal: coloque o bloco C sobre a mesa. Na nova situação, após o
Estado Inicial
Estado Final
Operações
seqüência de
situação inicial situação desejada
(2) se X e Y estão no topo de pilhas coloque o bloco X sobre o bloco Y. Em um outro exemplo, as restrições são implicitamente representadas nas operações, conforme a Figura 8.
Figura 8 Conjunto de operações onde as restrições estão implicitamente representadas.
3.1.2. Implementação da Representação do Problema em Espaço de Estados A implementação da representação depende da linguagem. Em Prolog, no caso do problema da Figura 5, os estado podem ser representados como uma lista de pilhas. Se houver no máximo três pilhas e uma pilha for representada também como uma lista, sendo que o topo é primeiro elemento da lista, então a representação final dos estados é [[
O(s) estado(s) sucessor(es) de um estado qualquer pode(m) ser definido(s) pela cláusula sucessor(
sucessor([[a, b, c], [], []], [[b, c], [a], []]). sucessor([[a, b, c], [], []], [[b, c], [], [a]]). sucessor([[],[a, b, c], []], [[a], [b, c], []]). sucessor([[],[a, b, c], []], [[], [b, c], [a]]).
... Figura 9 Uma implementação do conjunto de operações Figura 8.
Entretanto, esta implementação não é muito adequada porque exige escrever todas as configurações possíveis de pilhas. Uma implementação mais econômica é apresentada abaixo: sucessor(Estado, [Pilha1, [Topo1 | Pilha2] | OutrasPilhas]) :- remove([Topo1 | Pilha1], Estado, EstadoAux), remove(Pilha2, EstadoAux, OutrasPilhas).
remove(Pilha, [Pilha | RestoEstado], RestoEstado).
remove(Pilha, [Paux | RestoEstado], [Paux | Resto]) :- remove(Pilha, RestoEstado, Resto).
3.1.3. Métodos de Busca Cegos em Espaço de Estados A busca de uma solução é feita através da procura de um caminho no espaço de estados que leva do estado inicial para o estado final. Os métodos cegos fazem uma pesquisa sistemática do espaço de estados, porém não utilizam nenhum conhecimento para guiar a busca. Os dois principais métodos cegos são a “busca em profundidade” e a “busca em extensão”.
% $&
$%&
& $%
$ % (1) Se estado atual é & então o estado atual é alterado para % $&
$ % (2) Se estado atual é então o estado atual é alterado para & % (3) Se estado atual é $&então o estado atual é alterado para
% $& % (4) Se estado atual é $&então o estado atual é alterado para
...
(30) Se estado atual é então o estado atual é alterado para
$%&
A ação de percorrer o espaço de estados é feita de acordo com uma estratégia de controle que seleciona um estado e um operador que será aplicado ao estado para gerar os estados subseqüentes. A aplicação dos operadores nos estados iniciais e intermediários é feita até que se chegue a um estado objetivo. Este processo, à medida que vai sendo executado, vai gerando a árvore de busca. Quando se encontra o estado final o processo é interrompido com sucesso. Dependendo do problema, a solução pode ser o próprio estado final ou o caminho entre o estado inicial e o estado final. A Figura 10 apresenta uma parte da árvore de busca para o problema da Figura 5.
Figura 10 Árvore de pesquisa para o problema da Figura 5, utilizando o conj. de operações da Figura 6.
3.1.3.1. Busca em Profundidade A busca em profundidade explora um ramo da árvore de cada vez, ou seja, todos os nodos de um caminho da árvore são examinados antes dos nodos dos outros caminhos. A estrutura de dados associada é uma pilha, pois deve visitar primeiro os nodos mais recentes, aqueles que estão mais distantes da raiz. É necessário armazenar apenas o caminho que está sendo explorado e os caminhos já explorados podem ser descartados. A exploração dos caminhos alternativos pode ser feita através do retrocesso. No algoritmo abaixo não está previsto nenhum mecanismo de retrocesso. Algoritmo:
Abaixo é apresentada uma implementação em Prolog bastante simples e, portanto fácil de entender. A desvantagem desta implementação é que a mesma permite ciclos, o que pode conduzir a pesquisa a um ramo sem saídas. pesquise(N, [N]) :- objetivo(N).
pesquise(N, [N | Caminho]):- sucessor(N, Naux), pesquise(Naux, Caminho).
% $ &
& $%
% $&
& $ %
$ %&
$ %&
$%&
% $&
& $%
$ % &
& $ %
$%&
$ %&
$ %&
$ %&
$ %&
$%&
% $&
(7)
(3) (1) (8)
3.1.3.4. Comparação: Busca em Profundidade x Busca em Extensão Busca em profundidade:
3.1.3.5. Outros Exemplos de Problemas e de Modelagem utilizando Espaço de Estados Exemplo 1: Torre de Hanói A representação gráfica do problema da Torre de Hanói é apresentada na Figura 11.
Figura 11 Torre de Hanói.
a) Estados Sintaxe: (Menor, Média, Maior) Menor = Número do poste onde está a argola menor. Média = Número do poste onde está a argola média. Maior = Número do poste onde está a argola maior. Assim os estado inicial e final podem ser representados como: Estado inicial : (1,1,1). Estado final : (3,3,3).
b) Operações Sintaxe: move (poste de origem, poste de destino) move (1,2) move (1,3) move (2,1) move (2,3) move (3,1) move (3,2)
Nesse caso devemos sempre observar as restrições do problema e a validade das operações. A Figura 12 apresenta a árvore de pesquisa deste problema.
Figura 12 Árvore de pesquisa para o problema da Torre de Hanói.
move(1,2) move(1,3)
move(1,3)^ move(2,3)
move(1,2) move(3,2)
Estado Inicial Estado Final
Exemplo 2: Jogo dos 8 A Figura 13 mostra a representação gráfica para o problema do jogo dos 8.
Figura 13 Representação do problema para o jogo dos 8. É possível modelar as operações de diversas maneiras, mas a forma mais eficiente consiste em aplicar operações na casa vazia, o que possibilita que sejam necessárias apenas quatro operações: (1) Mover a casa vazia para cima. (2) Mover a casa vazia para baixo. (3) Mover a casa vazia para esquerda. (4) Mover a casa vazia para direita.
Figura 14 Árvore de pesquisa para o jogo dos 8.
Exemplo 3: Jogar Xadrez
Estado Inicial Estado Objetivo
(1)
(1) (^) (3) (1)
(4)
(1)
(3)
(4)
Operações
A Figura 16 apresenta uma árvore E/OU e como é a feita a busca em profundidade de uma solução. Os nodos são numerados por ordem de visita, sendo que os nodos marcados com T são problemas terminais e os nodos marcados com P são problemas primitivos. A Figura 17 apresenta como é feita a busca em extensão.
Figura 16 Exemplo de busca em profundidade em uma árvore E/OU. A solução é o conjunto de problemas primitivos {P2, P5}.
Figura 17 Exemplo de busca em extensão em uma árvore E/OU. A solução é o conjunto de problemas primitivos {P1, P3}.
3.3. Métodos de Busca Heurística Os métodos de busca vistos anteriormente fazem uma pesquisa sistemática do espaço de estados ou do espaço de problemas, porém não são adequados para muitos problemas reais devido à explosão combinatória. Os métodos heurísticos(1)^ utilizam alguma forma de conhecimento para orientar a busca e evitar a explosão combinatória. Entretanto, a eficiência depende fortemente em como o conhecimento é explorado. O conhecimento a ser utilizado pode ser inserido manualmente, ou através de aprendizado automático. (1) Heurística vem da palavra grega “heuriskein” que significa descobir.
Tipos de heurística no processo de busca a) Heurística genérica:
Diferentes aspectos gerais do problema são considerados e avaliados de modo que o valor resultante da função heurística seja uma boa estimativa de quão efetivo pode ser o estado para alcançar a solução. Os métodos que utilizam apenas heurísticas genéricas, úteis a muitos tipos de problemas, são denominados métodos fracos e não são capazes de evitar a explosão combinatória. Freqüentemente, esta medida consiste em uma estimativa da distância da solução. Por exemplo, no Jogo dos 8 a heurística pode ser o número de peças que estão fora do lugar. b) Heurística específica: Apresenta as convicções dos especialistas em uma determinada área. A maioria das regras dos Sistemas Especialistas pertence a essa classe. É extremamente eficiente se bem utilizada.
Função Heurística Nos métodos de busca, o conhecimento sobre o problema é utilizado para compor uma função heurística. Esta função heurística tem a forma f(Estado) e é aplicada aos estados para atribuir notas indicando a proximidade do estado em relação à solução.
3.3.1. Subida da encosta ("Hill-Climbing") A idéia deste método é maximizar a nota fornecida pela função heurística. A busca é feita com a geração de um estado sucessor do estado corrente. Se o estado sucessor tiver uma nota melhor, então ele passa a ser o estado corrente. Algoritmo:
Características:
Exemplo: Mundo dos Blocos A Figura 18 apresenta o problema no qual será aplicado o método da subida da encosta.
Figura 18 Representação gráfica de um problema do Mundo dos Blocos
Os operadores são: (1) Pegue um bloco e coloque-o sobre a mesa (2) Pegue um bloco e coloque-o sobre outro A função heurística que será utilizada faz o seguinte cálculo: some um ponto para cada bloco em cima do bloco em que ele deva esta e subtraia um ponto para cada bloco que estiver sobre o bloco errado. Com esta heurística os estados inicial e final recebem as notas: f(estado inicial) = 1 e f(estado meta) = 5. A árvore de busca é apresentada na Figura 19.
Figura 20 Árvore de busca para o problema da Figura 18 utilizando o método Subida da Encosta com uma função heurística mais adequada.
3.3.3. Busca pela melhor escolha ("Best-First") A heurística é aplicada globalmente, isto é, o caminho a ser seguido é selecionado entre todos os nodos abertos até o momento. O nodo aberto com a melhor nota é escolhido para a expansão.
Exemplo: Achar o Menor Trajeto Definição do Problema: Procurar o menor trajeto, ou uma alternativa aceitável, entre a cidade a e a cidade z.
Mapa:
Representação do Estado: Nome da cidade Representação do Espaço de Estados: O próprio mapa ou um grafo Estado Inicial: a
5
3
2
3
4
1 6
início
fim
2
1
4
5
Estado Final: z
Operações: percorrer uma estrada até uma cidade vizinha
Função Heurística (faz parte da modelagem do problema) f(x) = g(x) + h(x) onde g(x) = distância percorrida da cidade a até a cidade x (números em negrito, próximo às cidades) h(x) = distância em linha reta da cidade x até a cidade z (números em negrito, próximo às cidades)
Problema: Achar o Menor Trajeto Exemplos de Aplicação da Função Heurística f(b) = g(b) + h(b) = 1 + 6 = 7 f(c) = g(c) + h(c) = 3 + 2 = 5 f(e) = g(e) + h(e) = 5 + 1 = 6 f(k) = g(k) + h(k) = (5+4) + 5 = 14
...
Árvore de Busca: os números em negrito próximos aos nodos indicam a ordem de expansão
A solução encontrada pode eventualmente não ser o menor trajeto, dependendo do problema, mas pode ser uma solução bastante aceitável.
Exemplo: Achar o Menor Trajeto
Representação em Prolog objetivo: goal(z).
sintaxe das operações : s(
f=
f=5 f=
f=7 (^) f=
f=
f=
f=
f=8 f=
5
1
3 4 2
6