Post on 01-Jan-2019
Resolução de problemas por meio de algoritmos de busca
Aula I - Introdução
Universidade Estadual do Oeste do Paraná
Curso de Bacharelado em Ciência da Computação
Inteligência Artificial
Roteiro
Experimentação de desafios (página)
Introdução aos problemas de busca
Explosão combinatória
Problemas e soluções
Características do algoritmo de busca
Toy Problems ou mini problemas
Busca cega
Introdução
A capacidade das pessoas para resolver problemas
é um importante indicador de inteligência – o
mesmo é válido para a IA.
A maneira mais simples de resolver um problema é
através do uso exaustivo (força bruta) de um
procedimento que garanta a solução, caso ela
exista.
Introdução: motivação
Resolvendo problemas: imagine que você
tenha perdido as chaves de seu carro.
Você sabe que elas estão em algum lugar de
sua casa, que possui a seguinte planta (Herbert
Schildt).
Você está no local marcado com X
Um grafo do caminho-solução
Uma alternativa para encontrar as chaves seria
seguir este caminho:
Explosão combinatória
Para este caso, o método de ir a todos os
cômodos da casa é uma boa maneira de encontrá-
las.
Porém, a maioria dos problemas a situação é
diferente.
Em particular, o computador é usado para
solucionar problemas nos quais o número de nós
do espaço de busca é muito grande e, conforme
o espaço de busca cresce, cresce também o
número de diferentes caminhos possíveis para
alcançar o objetivo.
Explosão combinatória
O problema é que a cada nó adicionado ao espaço
de busca é acrescentado mais de um caminho, ou
seja, a quantidade de caminhos até o objetivo
aumenta muito a cada novo nó.
Outro exemplo: existem três objetos A, B e C.
Identifique todas as maneiras de arranjá-los.
Explosão combinatória
O problema é que a cada nó adicionado ao espaço
de busca é acrescentado mais de um caminho, ou
seja, a quantidade de caminhos até o objetivo
aumenta muito a cada novo nó.
Outro exemplo: existem três objetos A, B e C.
Identifique todas as maneiras de arranjá-los.
A B C
A C B
B C A
B A C
C B A
C A B
Explosão combinatória
Pode-se encontrar esse resultado utilizando
análise combinatória.
O teorema afirma que o número de maneira que N
objetos podem ser permutados é igual a N! (o
fatorial do número é o produto deste por todos os
números menores que ele até 1)
Assim, 3! é 3x2x1= 6
4! = 4x3x2x1 = 24
5! = 5x4x3x2x1 = 120
6! = 6x5x4x3x2x1 = 720
1000! = ? – explosão combinatória
Explosão combinatória
Gráfico:
3! = 3x2x1= 6
4! = 4x3x2x1 = 24
Introdução
Busca no espaços de estados é uma das
técnicas mais utilizadas para resolução de
problemas em Inteligência Artificial.
No início das pesquisas em IA, desenvolver
bons métodos de busca foi o primeiro objetivo
em função da necessidade e do desejo.
Era necessário que programadores
desenvolvessem boas técnicas de busca para
solucionar esses problemas por causa da
limitação dos computadores usados na época.
Explosão combinatória
Apesar de a técnica exaustiva, ou de “força bruta”,
teoricamente sempre funcionar, isto não é prático,
porque consome muito tempo, muitos recursos de
computação ou ambos.
Por essa razão, outras técnicas de busca têm sido
desenvolvidas.
Introdução
Em IA, a questão é definir como representar o
conhecimento sobre um determinado problema e o
modo como se processará essa representação para
a solução de problemas.
Quanto de conhecimento preciso representar para
resolver um problema?
Exemplo: que conhecimento preciso para
representar o problema das chaves perdidas, das
jarras ou dos missionários e canibais?
Introdução
Para construir um sistema para resolver um problema
específico nós precisamos:
Analisar o problema
Definir o problema precisamente (inclusive definindo
quais estados finais constituem soluções para o
problema)
Identificar e representar o conhecimento
específico à tarefa que é necessário para se
resolver o problema
Aplicar técnicas de resolução de problemas
Avaliar resultados
Introdução
Representação da solução de problemas
Podemos representar a solução de problemas
como uma sequência de estados, que leva de um
estado inicial até um estado final, onde cada estado
é um estado admissível, isto é, produzido a partir
de um estado anterior através de uma ação.
Problemas e Soluções
Componentes de um problema de busca:
Nó = um ponto discreto e um possível objetivo
Nó terminal = um nó que finaliza um caminho
Espaço de busca = o conjunto de todos os nós
Objetivo = o nó que é o objeto da busca
Caminho para a solução = um grafo dirigido dos
nós visitados que leva à solução
Avaliação = indicação de quanto “custa” essa
solução
Problemas e Soluções
De outra maneira, um problema pode ser definido
formalmente por quatro componentes (Russell e
Norvig):
1) Estado inicial: é o estado inicial dado.
2) Ações possíveis: uma descrição das ações que
estão disponíveis;
3) O teste de objetivo: este teste determina se um
dado estado é um estado objetivo.
4) Uma função de custo de caminho: esta função
atribui um custo numérico a cada caminho.
Problemas e Soluções
Assim:
O espaço de estados forma um grafo em que os
nós são estados e os arcos são ações / conexões.
Um caminho no espaço de estados é uma
seqüência de estados conectados por uma
seqüência de ações.
Do exemplo:
Avaliar uma Busca
Avaliar a performance de uma técnica de busca
pode ser complicado.
Mas, resumidamente, existem duas medidas
elementares que são importantes:
1) Com que velocidade a busca encontra a solução
2) Quão boa é a solução.
Existem diversos tipos de problemas em que a
única preocupação é encontrar uma solução –
qualquer que seja – com o mínimo de esforço.
Avaliar uma Busca
Para os problemas que só requerem uma solução,
a primeira medida é importante (velocidade).
Para outras, o importante é que a solução esteja
perto de ser a solução ótima (qualidade).
O comprimento do caminho da solução como a
quantidade de nós visitados determinam a
velocidade da busca.
Qualidade da solução é ótima: se ela tem o
menor custo de caminho entre todas as soluções.
Avaliar uma Busca
É importante entender a diferença entre encontrar
uma solução ótima e encontrar uma boa
solução.
Encontrar uma solução ótima, frequentemente
implica uma busca exaustiva.
Encontrar uma boa solução significa encontrar
uma solução que obedeça a um conjunto de
restrições – não importando se existe ou não uma
solução melhor.
Formulação de problemas
Voltando à questão da abstração:
Para formular problemas é importante abstrair
detalhes;
A abstração é útil se a execução de cada uma das
ações na solução é mais fácil que o problema
original.
Formulação de problemas
A questão da abstração:
Exemplo (Russell e Norvig): sair de uma cidade e
chegar em outra.
Abstrações:
Companheiros de viagem
Paisagem
Outros veículos
Distância até a próxima parada
Condições da estrada
Condições do tempo
...
Mini problema Toy Problems
Um Mini problema ou “toy problem” se destina a
ilustrar ou exercitar diversos métodos de resolução
de problemas.
Ele tem uma descrição concisa e exata.
Isto significa que ele pode ser usado com facilidade
visando comparar o desempenho de algoritmos.
Exemplos: problema das jarras de água,
missionários e canibais, quebra-cabeças de 8 peças,
o problema das 8 rainhas...
Problema Real
Um problema real é aquele cujas soluções de fato
preocupam as pessoas.
Eles tendem a não apresentar uma única descrição
consensual.
Exemplos: xadrez, problemas de roteamento,
problemas de tour, caixeiro viajante, navegação de
robôs, sequência automática de montagem, projeto
de proteínas, pesquisas na Internet…
Exemplos de Problemas
Xadrez
Etapas: especificar a posição inicial do tabuleiro, as regras
que definem os movimento, as posições que representam a
vitória.
O que se sabe: como representar a posição inicial (matriz
8x8), identificar peças brancas e pretas.
Meta: qualquer posição no tabuleiro na qual o oponente não
tenha um movimento legal, e seu rei esteja sendo atacado.
Movimentos legais: a maneira de sair de um estado inicial e
chegar a um estado-meta, descrito por um conjunto de
regras (movimento do peão, da torre, do bispo...).
Exemplos de Problemas
Xadrez
Existem vária maneiras pelas quais estas regras
podem ser escritas.
Para escrever uma a uma as regras, será
necessário considerar, aproximadamente, as 10120
possíveis posições no tabuleiro, ou seja, uma regra
para cada uma dessas posições.
Exemplos de Problemas
Xadrez
O uso de tantas regras resulta em pelo menos as
seguintes dificuldades:
a) nenhuma pessoa seria capaz de fornecer um
conjunto completo dessas regras.
Este processo demoraria muito e certamente não poderia
ser realizado sem erros;
b) nenhum programa conseguiria lidar facilmente
com essas regras.
Daí a necessidade de abstração
Parênteses!!
Deep Blue: supercomputador + software criado pela
IBM para jogar xadrez.
Capaz de analisar aproximadamente 200 milhões de
posições por segundo.
Em sua base de dados havia mais de 700 mil
partidas de Mestres e Grandes Mestres
Em 1997, Deep Blue venceu Garry Kasparov em uma
partida controversa.
Discussões: o movimento nº 44, foi interpretado
como estratégico, mas teria sido um erro. Kasparov
foi surpreendido com o movimento e mudou sua
forma de jogar, sendo derrotado por isto.
Mini problemas ou Toy Problems
Novamente os exemplos:
Missionários e canibais
Quebra-cabeças de 8 peças,
O problema das 8 rainhas
A ovelha e o lobo
Travessia da ponte…
Missionários e canibais
Três missionários e três canibais estão em um lado
do rio, juntamente com um barco que pode conter
uma ou duas pessoas.
Descubra uma maneira de fazer todos
atravessarem o rio, sem deixar que um grupo de
missionários de um lado fique em número menor
que o número de canibais nesse lado do rio.
Missionários e canibais
Que elementos são necessários?
Quais abstrações devem ser feitas?
Qual estrutura de dados pode ser utilizada?
Qual é o estado inicial?
Qual é o objetivo?
Como avaliar a solução?
Missionários e canibais
MMM CCC B Rio Estado inicial
MMM C CC B
MMM CC B C
MMM CCC B
MMM C B CC
M C MM CC B
MM CC B M C
CC MMM C B
CCC B MMM
C MMM CC B
CC B MMM C
Estado final MMM CCC B
Missionários e canibais
MMM CCC B Rio Estado inicial
MMM C CC B
MMM CC B C
MMM CCC B
MMM C B CC
M C MM CC B
MM CC B M C
CC MMM C B
CCC B MMM
C MMM CC B
CC B MMM C
Estado final MMM CCC B
Missionários e canibais
MMM CCC B Rio Estado inicial
MMM C CC B
MMM CC B C
MMM CCC B
MMM C B CC
M C MM CC B
MM CC B M C
CC MMM C B
CCC B MMM
C MMM CC B
CC B MMM C
Estado final MMM CCC B
Toy Problems/Mini problemas
Toy Problems/Mini problemas
Toy Problems/Blocos deslizantes
4 5 8
1 6
7 3 2
5 8
4 1 6
7 3 2
4 5 8
7 1 6
3 2
4 5 8
6
7 3 2
1
1 2 3
4 6
7 8
5
Toy Problems: blocos deslizantes
Usado com freqüência como problema de teste
para novos algoritmos de busca em IA.
Sabe-se que essa classe geral é NP-completa;
Com 8 peças existem 181.440 estados
acessíveis (9!/2);
Com 15 peças tem 1.3 trilhões de estados
Com 24 peças tem 1025 estados
Toy Problems: 8 rainhas
O objetivo do problema das 8 rainhas é posicionar
oito rainhas em um tabuleiro de xadrez de tal forma
que nenhuma rainha ataque qualquer outra.
Uma rainha ataca qualquer peça situada na mesma
linha, coluna ou diagonal.
Toy Problems: 8 rainhas
Exercício com Jarras de água
Você tem duas jarras, uma de 4 litros e uma de 3
litros.
Nenhuma delas tem qualquer marcação de
medidas.
Há uma bomba que pode ser usada para encher as
jarras com água.
Como você consegue colocar exatamente 2 litros
de água na jarra de 4 litros?
Características do Algoritmo de busca
Características de um algoritmo de busca:
Completude (completeza): o algoritmo sempre
encontra uma solução, se ela existe
Complexidade temporal: se refere ao tempo
máximo exigido pelo algoritmo para realizar a busca
Complexidade espacial (memória): quantidade
máxima de memória usada pelo algoritmo
(geralmente p/guardar os nós visitados)
Otimalidade (otimização): quando o algoritmo
encontra a solução ótima
Algoritmo de busca
Complexidade: a complexidade depende de b, o
fator de ramificação no espaço de estados, e de d, a
profundidade da solução mais rasa.
b
d
Estratégias de busca sem informação / busca cega
“Busca cega” denomina o conjunto de estratégias de
busca que não têm nenhuma informação sobre
estados, além daquelas fornecidas na definição do
problema;
Tudo o que elas podem fazer é gerar sucessores e
distinguir um estado objetivo de um estado não-
objetivo;
As estratégias que sabem se um estado não-objetivo
é “mais promissor” que outro são chamadas
estratégias de busca com informação ou busca
heurística.
Próxima aulas
Algoritmos de busca
Busca em amplitude/largura
Busca em profundidade
Busca em profundidade limitada
Busca em profundidade de custo uniforme
Busca de aprofundamento iterativo
Busca bidirecional