1
© Noel de Jesus Mendonça Lopes 1
Resolução de Problemas
o Como é que um agente pode definir os seus objectivos e traçar sequências de acções que o podem levar a atingir esses mesmos objectivos ?
o O objectivo e o conjunto de meios necessários para o atingir é designado por problema e o processo levado a cabo para explorar esses meios é designado por pesquisa.
© Noel de Jesus Mendonça Lopes 2
Agentes que resolvem problemaso Um agente pode deliberar o que fazer
considerando para tal os resultados das sequências de acções que pode tomar.
o Estes agentes (problem-solving agents) são um tipo especifico dos agentes baseados em objectivos.
o Decidem o que fazer através da procura de sequências de acções que levem a estados desejáveis.
o A formulação do objectivo, baseando-nos na situação actual, é o primeiro passo para a resolução de um problema.
© Noel de Jesus Mendonça Lopes 3
Objectivo
o Nesta fase consideramos o objectivo como sendo um conjunto de estados do mundo, em que determinado critério é satisfeito.
o As acções podem ser vistas como sendo responsáveis pelas transições entre estados, pelo que o agente deverá encontrar a sequência de acções que permitem chegar a um dos estados do mundo onde o objectivo é satisfeito.
© Noel de Jesus Mendonça Lopes 4
Objectivo
o Antes de procurar a sequência de acções que permitem atingir o objectivo, o agente deverá decidir quais os estados e as acções que deve considerar.
o Formulação do problema –Processo de decisão das acções e dos estados a considerar (passo seguinte à formulação do objectivo).
2
© Noel de Jesus Mendonça Lopes 5 © Noel de Jesus Mendonça Lopes 6
Pesquisao Um agente que disponha de várias opções
imediatas, cujo resultado é desconhecido, pode decidir o que fazer através da análise de diferentes sequências de acções que levam a estados cujo resultado é conhecido.
o O agente pode posteriormente escolher a sequência de acções que o beneficia mais.
o Um algoritmo de pesquisa tem como entrada um problema e como saída uma solução, na forma de uma sequência de acções.
© Noel de Jesus Mendonça Lopes 7
Formular, procurar e executar
o Uma vez encontrada uma solução, o agente pode levar a cabo a sequência de acções associada. Esta fase é designada por execução.
© Noel de Jesus Mendonça Lopes 8
Agentes que resolvem problemasfunction AgenteSimpleResolucaoProblemas(p) returns accao
inputs : p, percepçõesstatic : a, uma sequência de acções inicialmente vazia
estado, descrição do estado do mundo actualo, um objectivo, inicialmente nuloproblema, a formulação de um problema
estado ← ActualizaEstado(estado, p)if a is empty then
o ← FormulaObjectivo(estado)problema ← FormulaProblema(estado, o)a ← Pesquisa(problema)
endaccao ← Recomendada(a, estado)a ← Resto(a, estado)return accao
3
© Noel de Jesus Mendonça Lopes 9
Aspirar o lixo1 2 3 4
5 6 7 8
© Noel de Jesus Mendonça Lopes 10
Tipos de problemas
o Estado único (single-state)n Ambiente acessível;n Agente sabe as consequências das suas
acções.
o Estados múltiplos (multiple-state)n Ambiente inacessível;n Agente sabe as consequências das suas
acções.
© Noel de Jesus Mendonça Lopes 11
Ignorância dos efeitos das acções
Lei de Murphy
Problema de estados múltiplosProblema de estados múltiplos
Ambiente Ambiente eestocásticostocástico(não (não deteministicodeteministico))
© Noel de Jesus Mendonça Lopes 12
Ignorância dos efeitos das acções
2
AspirarDireitaAspirar
6
8
4
© Noel de Jesus Mendonça Lopes 13
Ignorância dos efeitos das acções
1
2
Impede o agente de encontrar uma sequência de acções Impede o agente de encontrar uma sequência de acções que garanta uma solução para o problema.que garanta uma solução para o problema.
? 8
4
© Noel de Jesus Mendonça Lopes 14
Problemas de contingência
o Se o agente dispuser de um sensor que lhe indique se a sala onde se encontra está limpa, poderá aspirar apenas se esta tiver lixo.
o É necessário obter informações a partir dos sensores durante a fase de execução.
o Problemas reais a previsão exacta é impossível.
© Noel de Jesus Mendonça Lopes 15
Problemas de exploraçãoo Tipo de problema mais difícil para um
agente, já que este não dispõe de nenhum conhecimento sobre os efeitos das suas acções.
o O agente deve experimentar e descobrir de forma gradual as consequências das suas acções bem como os tipos de estado existentes (Ex: Recém nascidos).
o A pesquisa é feita no mundo real em vez de num modelo, pelo que pode representar um risco significativo para um agente ignorante.
© Noel de Jesus Mendonça Lopes 16
Problemas
o Problema - Colecção de informação que o agente pode usar para decidir o que fazer.
o Os elementos básicos de um problema são os estados e as acções.
5
© Noel de Jesus Mendonça Lopes 17
Problemas de estado único
o Dado um estado inicial no qual o agente sabe que se encontra.
o Dado um conjunto de acções disponíveis para o agente.n Operador : Uma descrição de uma acção em
termos do estado que será alcançado quando a acção em causa é levada a cabo num dado estado.
n Função Sucessor S : Dado um estado x, S(x) retorna o conjunto de estados que se podem alcançar aplicando uma única acção no estado x.
© Noel de Jesus Mendonça Lopes 18
Espaço dos estados
o O estado inicial e o conjunto de acções disponíveis definem o espaço dos estados do problema : O conjunto de todos os estados que se podem atingir a partir do estado inicial e de uma qualquer sequência de acções.
o Um caminho no espaço dos estados é simplesmente uma sequência de acções que vão de um estado para outro.
© Noel de Jesus Mendonça Lopes 19
Problemas de estado único
o Dado um teste de objectivo que o agente pode aplicar a uma descrição de um estado para determinar se esse estado é um estado que satisfaz objectivo.n Nalguns casos existe um conjunto explicito de
todos os estados que satisfazem o objectivo;n Noutros, o objectivo é especificado através de
uma propriedade abstracta (Ex: Xadrez).
© Noel de Jesus Mendonça Lopes 20
Problemas de estado único
o Dada uma função de custo do caminho :n A soma dos custos das acções individuais
ao longo do caminho.n Normalmente designa-se por g.
6
© Noel de Jesus Mendonça Lopes 21
Problema de estado único
Estado inicial+
Conjunto de operadores+
Teste de objectivo+
Custo do caminho
© Noel de Jesus Mendonça Lopes 22
Saída de um algoritmo de pesquisa
SoluçãoCaminho desde o estado inicial até um Caminho desde o estado inicial até um estado que satisfaça o teste de objectivo.estado que satisfaça o teste de objectivo.
© Noel de Jesus Mendonça Lopes 23
Problemas de estados múltiplos
Conjunto de estados iniciais+
Conjunto de operadores+
Teste de objectivo+
Custo do caminho
© Noel de Jesus Mendonça Lopes 24
Problemas de estados múltiploso Quando se aplica um operador a um conjunto de
estados obtemos a reunião de todos os estados que se atingem aplicando o operador individualmente a cada um dos estados.
o Um caminho liga vários conjuntos de estados.o Uma solução é o caminho que leva a um conjunto
de estados, em que todos eles satisfazem o objectivo.
o O espaço dos estados é substituído pelo espaço do conjunto de estados.
7
© Noel de Jesus Mendonça Lopes 25
Eficácia da pesquisa
o Encontrou-se uma solução ?o É uma boa solução (com um custo do
caminho baixo) ?o Qual é o custo da pesquisa (tempo
e memória necessários para encontrar a solução) ?
© Noel de Jesus Mendonça Lopes 26
Custo total
Custo do caminho+
Custo da pesquisa
© Noel de Jesus Mendonça Lopes 27
Custo da pesquisa
o Depende de o ambiente ser:n Estático (0)n Semi-dinâmicon Dinâmico
© Noel de Jesus Mendonça Lopes 28
Abstracção
o Retirar tantos detalhes quanto possível, garantindo no entanto que cada uma das acções abstractas podem ser levadas a cabo.n Descrição do estadon Acçõesn Efeitos das acções
8
© Noel de Jesus Mendonça Lopes 29
Exemplos de problemaso Puzzle com 8 peçasn Estado : A localização de cada uma das peças
(incluindo o branco).n Operadores : Branco move-se para esquerda,
direita, cima ou baixo.n Custo do caminho : Número de movimentos.
5 4
6 1
7 3
8
2 5
4
6
1
7
3
8
2
© Noel de Jesus Mendonça Lopes 30
Exemplos de problemas
Problemadasoito
rainhas
© Noel de Jesus Mendonça Lopes 31
Problema das oito rainhas
o Teste de objectivo : 8 rainhas no tabuleiro, não estar nenhuma a ser atacada.
o Custo do caminho : zero.o Estados : Qualquer combinação de 0
a 8 rainhas no tabuleiro.o Operadores : Adicionar rainhas a
uma dada posição do tabuleiro.
© Noel de Jesus Mendonça Lopes 32
Problema das oito rainhas -Dimensão do espaço de procura
o Estados : Arranjos de 8 rainhas, uma em cada coluna.
o Operadores : Mover uma rainha atacada, para outra posição do tabuleiro, na mesma coluna.
648 2057
9
© Noel de Jesus Mendonça Lopes 33
Aspirador (Problema de estado único)
o Teste de objectivo : Todas as salas limpas.
o Custo do caminho : Cada acção custa 1.
o Estados : Todos os estados da figura seguinte.
o Operadores : Esquerda, direita, aspirar.
D
D D
D
D
DD
D
EE
EE
E
E
EE
AA
A AAA
A A
© Noel de Jesus Mendonça Lopes 35
Aspirador (Problema de estados múltiplos)
o Teste de objectivo : Todas as salas limpas.
o Custo do caminho : Cada acção custa 1.
o Conjunto de estados : Todos os conjuntos da figura seguinte.
o Operadores : Esquerda, direita, aspirar.
D E
E D
A
DE
A
A
E
D E D
DE A
D E
A
A
E D
AA, E A, D
A
DE
DE
A A
10
© Noel de Jesus Mendonça Lopes 37
Missionários e canibais
© Noel de Jesus Mendonça Lopes 38
Outros problemas
o Pesquisa de rotasn Redes de computadoresn Assistentes de viagem (computador
carro)
o Caixeiro viajanteo Navegação de robôso Determinar a melhor sequência de
montagem de um objecto.
© Noel de Jesus Mendonça Lopes 39
Geração de sequências de acções
o Ao aplicarmos os operadores ao estado actual estamos a gerar um novo conjunto de estados. Este processo designa-se por expansãodo estado. DE
A
© Noel de Jesus Mendonça Lopes 40
Pesquisa da solução
o Quando temos várias possibilidades temos de escolher qual considerar primeiro (determinado pela estratégia da pesquisa).
o Escolher, testar, expandir.E
11
Oradea
Zerind
Arad
Timisoara
Lugoj
Mehadia
Dobreta
Sibiu
Rimnicu Vilcea
Fagaras
Criova
PitestiBucharest
© Noel de Jesus Mendonça Lopes 42
Árvore de pesquisa
Estado inicial
Depois de expandir Arad
Arad
Zerind Timisoara Sibiu
Arad
© Noel de Jesus Mendonça Lopes 43
Árvore de pesquisa
Depois de expandir Zerind
ZerindTimisoara Sibiu
Arad
Oradea AradNós de pesquisa
© Noel de Jesus Mendonça Lopes 44
Algoritmo Geral de Pesquisa
function PesquisaGeral(problema, estratégia) returns solução ou falhaInicializar a árvore de pesquisa, utilizando o estado inicial do problema.do
if não existem candidatos para expandir then return falhaEscolher um nó (folha) para expandir, de acordo com a estratégiaif nó contém um estado que satisfaz o objectivo then
return solução correspondenteendExpandir o nó e adicionar os nós resultantes à arvore de pesquisa
loop
12
© Noel de Jesus Mendonça Lopes 45
Estrutura dos nós
o O estado do espaço dos estados ao qual o nó corresponde;
o Pai;o Operador que foi aplicado para o
gerar;o Profundidade;o Custo do caminho g(n).
© Noel de Jesus Mendonça Lopes 46
Fronteira
o O conjunto dos nós que ainda não foram expandidos formam a fronteira.
o O objectivo da estratégia de pesquisa é escolher um nó da fronteira.
o Se considerarmos os nós que fazem parte da fronteira como estando numa lista, em que os nós que aparecem primeiro são os que o algoritmo de pesquisa escolhe primeiro para expandir podemos rescrever o algoritmo geral de pesquisa.
© Noel de Jesus Mendonça Lopes 47
Algoritmo geral de pesquisa
function PesquisaGeral(problema, FuncaoAdicaoFila) returns solução ou falha
nos ← CriaFila(CriaNo(EstadoInicial(problema)))do
if nos is empty then return falhano ← RetiraPrimeiro(nos)if ObjectivoSatisfeito(problema, Estado(no)) then return nonos ← FuncaoAdicaoFila(nos, Expande(no, Operadores(problema)))
loop
© Noel de Jesus Mendonça Lopes 48
Avaliação das estratégias de pesquisao Completa
o Garante que se houver uma solução ela é encontrada ?
o Complexidaden Tempo o Quanto tempo é necessário para encontrar uma
solução ?n Espaçoo Qual a memória necessária para efectuar a
pesquisa ?o Solução óptima
o Quando existem várias soluções é encontrada a solução de qualidade mais elevada ?
13
© Noel de Jesus Mendonça Lopes 49
Algoritmos de pesquisa
o Pesquisa uniforme (pesquisa cega)n Não existe informação do nº de passos
ou do custo do caminho desde o estado actual ao objectivo
o Pesquisa informadan heurística
© Noel de Jesus Mendonça Lopes 50
Algoritmos de pesquisa cega
o Breadth-first searcho Uniform cost searcho Depth-first searcho Depth-limited searcho Iterative deepening searcho Bidirectional search
© Noel de Jesus Mendonça Lopes 51
Breadth-first search
o Todos os nós com profundidade d são expandidos antes dos nós com profundidade d + 1.
o Se existir uma solução é garantido que o algoritmo a encontra.
o A solução encontrada é sempre a solução que tem o menor número de acções.
© Noel de Jesus Mendonça Lopes 52
Breadth-first search
Function BreadthFirstSearch(problema) returns solução ou falha
return PesquisaGeral(problema, FuncaoAdicionaFimFila)
14
© Noel de Jesus Mendonça Lopes 53
Breadth-first search
o Completoo Óptimo se o custo do caminho for
uma função não decrescente da profundidade do nó, isto é quando todos os operadores têm o mesmo custo.
o Complexidade (tempo e espaço)n Problema
© Noel de Jesus Mendonça Lopes 54
Breadth-first search(Complexidade)
o Consideremos um espaço de estados hipotético onde cada estado pode ser expandido dando origem a b estados.
o Diz-se que o factor de ramificação (branching factor) desses estados (e da árvore) é b.
o Suponhamos que para atingirmos a solução necessitamos de percorrer um caminho de comprimento d (com d passos).
© Noel de Jesus Mendonça Lopes 55
Breadth-first search(Complexidade)
o O número máximo de nós que temos de percorrer antes de encontrar a solução é :
1 + b + b2 + b3 + ... + bd
o ComplexidadeO(bd)
© Noel de Jesus Mendonça Lopes 56
Breadth-first search(Complexidade)
100 Bytes11 Kb1 Mb
111 Mb11 Gb
1 Terabyte111 Terabytes
11111 Terabytes
1 milisegundo0,1 segundos11 segundos18 minutos31 horas128 dias35 anos
3500 anos
1111
111111106
108
1010
1012
1014
02468
101214
MemóriaTempoNós (b=10)Profundidade (d)
15
© Noel de Jesus Mendonça Lopes 57
Uniform cost search
o Escolhe o nó com menor custo de caminho para expandir.
o Idêntica à Breadth-first search nos casos em que g(n) = Profundidade(n)
o Assume-se que :∀n, g(sucessor(n)) ≥ g(n)
© Noel de Jesus Mendonça Lopes 58
Uniform cost search
I F
A
B
1 10
C
5 5
15 5
0I
© Noel de Jesus Mendonça Lopes 59
Uniform cost search
I F
A
B
1 10
C
5 5
15 5
I
A B C1 5 15
© Noel de Jesus Mendonça Lopes 60
Uniform cost search
I F
A
B
1 10
C
5 5
15 5
I
A B C5 15
11F
16
© Noel de Jesus Mendonça Lopes 61
Uniform cost search
I F
A
B
1 10
C
5 5
15 5
I
A B C15
11F
10F
© Noel de Jesus Mendonça Lopes 62
Depth-first search
o Algoritmo :Function DepthFirstSearch(problema) returns solução ou falha
return PesquisaGeral(problema, FuncaoAdicionaInicioFila)
o Necessita de pouca memória.o Para um espaço com um factor de
ramificação de b e para uma profundidade máxima de m o algoritmo necessita apenas de bm nós.
o Complexidade : O(bm)
© Noel de Jesus Mendonça Lopes 63
Depth-first search
o Para problemas que têm muitas soluções este algoritmo pode encontrar uma solução primeiro que o Breath-first search.
o Muitos problemas têm árvores de pesquisa muito profundas ou mesmo infinitas, pelo que este algoritmo pode não conseguir recuperar de uma má escolha de um dos ramos no inicio da árvore.
© Noel de Jesus Mendonça Lopes 64
Depth-first search
o Pode encontrar uma solução com um custo de caminho muito maior que a solução óptima.
o Não é óptimo nem completo.o Fácil de implementar com uma função
recursiva.
17
© Noel de Jesus Mendonça Lopes 65
Depth-limited search
o Igual ao Depth-first search só que é imposto um limite de profundidade.
o Não é óptimoo Pode ou não ser completo, dependendo dos
limites impostos.o Para um espaço com um factor de
ramificação de b e para um limite de profundidade l o algoritmo necessita apenas de bl nós.
o Complexidade : O(bl)
© Noel de Jesus Mendonça Lopes 66
Iterative deepening search
o Objectivo é determinar o diâmetrodo espaço de estados por tentativas.
o Combina os benefícios do Breadth-first search com os do Depth-first search.
o É óptimo e completo como o Breadth-first search.
o Necessita de pouca memória como o Depth-first search.
© Noel de Jesus Mendonça Lopes 67
Iterative deepening search
o Muitos estados são expandidos múltiplas vezes. No entanto o tempo adicional de pesquisa não é tão significativo como pode parecer à primeira vista.
o Tomemos como exemplo o caso do depth-limited search em o que número máximo de nós a percorrer é de :1 + b + b2 + ... + bd-2 + bd-1 + bd
© Noel de Jesus Mendonça Lopes 68
Iterative deepening search
o Para uma profundidade d = 5 e para um factor de ramificação b = 10. O número máximo de nós a percorrer é de :1 + 10 + 100 + 1000 +10000 + 100000 = 111111
o No iterative deepening search o número máximo de nós a percorrer será de :
(d+1)1 + db + (d-1)b2 + ... + 3bd-2 + 2bd-1 + 1bd
o Para o caso :6 + 50 + 400 + 3000 + 20000 + 100000 = 123456
18
© Noel de Jesus Mendonça Lopes 69
Iterative deepening search
o Temos assim um aumento de cerca de 11% que será ainda menor para factores de ramificação maiores.
© Noel de Jesus Mendonça Lopes 70
Bidirectional search
o Complexidade : O(2bd/2) = O(bd/2)
Inicio Objectivo
© Noel de Jesus Mendonça Lopes 71
Bidirectional search
o O que significa procurar para trás?o Procurar para trás significa gerar
sucessivamente predecessores a partir do objectivo.
o Os predecessores de um nó n são todos os nós que têm o nó n como sucessor.
o Quando todos os operadores são reversíveis o conjunto dos predecessores e sucessores é idêntico.
o Nalguns problemas calcular os predecessores pode ser bastante difícil.
© Noel de Jesus Mendonça Lopes 72
Bidirectional search
o E se existir não apenas um estado correspondente ao objectivo, mas vários ?
o Se existir uma lista explicita destes estados, podemos aplicar uma função predecessora ao conjunto de estados, tal como aplicamos os sucessores.
o Se dispusermos apenas uma descrição do conjunto de estados correspondentes ao objectivo (tal como no xadrez – cheque mate) o problema torna-se mais complicado.
19
© Noel de Jesus Mendonça Lopes 73
Bidirectional search
o Deve existir uma forma eficiente de verificar se cada um dos novos nós já existe na árvore de pesquisa da outra metade da pesquisa.
o Devemos decidir que tipo de algoritmo vamos utilizar de cada lado da pesquisa.
© Noel de Jesus Mendonça Lopes 74
Bidirectional search
oComplexidade : O(bd/2) assumindo que o processo de teste de intercessão das duas fronteiras pode ser levado a cabo num tempo constante (isto é independente do número de estados).
© Noel de Jesus Mendonça Lopes 75
Bidirectional search
o Normalmente essa verificação é possível através da utilização de uma HASH table.
o Para determinar se as duas fronteiras se têm nós em comum, é necessário que os todos os nós de pelo menos uma delas estejam em memória (tal como no breath-first search).
o Complexidade do espaço : O(bd/2)© Noel de Jesus Mendonça Lopes 76
Comparação das estratégias de pesquisa
bm
bmNãoNão
Depth-first
bl
blNão
Sim, se l ≥ d
Depth-Limited
TempoEspaçoÓptimo?
Completo?
Critério
bd
bd
SimSim
Breadth-First
bd
bd
SimSim
Uniform-Cost
bd/2
bd/2
SimSim
Bidirectional(quando aplicável)
bd
bdSimSim
IterativeDeepening
20
© Noel de Jesus Mendonça Lopes 77
Evitar estados repetidos
o Estados repetidos implicam perda de tempo.
o Em muitos problemas é comum aparecerem estados repetidos.
o O exemplo mais flagrante é quando existem operações reversíveis.
o As árvores de pesquisa para estes problemas são infinitas. No entanto se retirarmos os estados repetidos podemos reduzir o tamanho da árvore de pesquisa a um tamanho finito.
© Noel de Jesus Mendonça Lopes 78
Evitar estados repetidos
o Mesmo quando a árvore de pesquisa é finita, evitar os estados repetidos pode levar a uma redução exponencial do custo da pesquisa.
© Noel de Jesus Mendonça Lopes 79
Formas de evitar estados repetidos
o Não retornar ao estado donde viemos. A função de expansão deverá recusar-se a gerar qualquer sucessor com o mesmo estado que o estado correspondente ao nó pai.
o Não criar caminhos com círculos. A função de expansão deverá recusar-se a gerar qualquer sucessor com o mesmo que qualquer estado correspondente a um dos nós antecessores.
© Noel de Jesus Mendonça Lopes 80
Formas de evitar estados repetidos
o Não gerar qualquer estado que já tenha sido gerado antes. Isto requer que todos os estados estejam em memória.n Complexidade do espaço O(bd) ou O(s) em que
s é o número de estados do espaço dos estados.n Normalmente é utilizada uma tabela HASH que
guarda os estados correspondentes a todos os nós gerados. Desta forma verificar a existência de espaços repetidos pode ser feito eficientemente.
21
© Noel de Jesus Mendonça Lopes 81
Constraint satisfaction search
o Um problema que para além dos requisitos básicos em geral, satisfaz propriedades estruturais adicionais designa-se por constraint satisfaction problem(CSP).
o Num CSP os estados são definidos por um conjunto de variáveis e o teste de objectivo especifica um conjunto de restrições a que esses valores devem obedecer.
© Noel de Jesus Mendonça Lopes 82
Constraint satisfaction search
o O problema das 8 rainhas pode ser visto como um CSP em que as variáveis são a posição de cada uma das 8 rainhas; os valores possíveis são os quadrados do tabuleiro; e as restrições especificam que não podem existir duas rainhas na mesma linha, coluna ou diagonal. Uma solução num CSP especifica os valores de todas as variáveis, de tal modo que todas as restrições são satisfeitas.
© Noel de Jesus Mendonça Lopes 83
Constraint satisfaction search
o Os CSP podem ser resolvidos por algoritmos de pesquisa de propósito geral, mas devido à sua estrutura especial os algoritmos desenhados para os CSP têm um desempenho muito melhor.
© Noel de Jesus Mendonça Lopes 84
Restrições
o Unáriasn Referem-se ao valor de uma única
variável
o Bináriasn Relacionam pares de variáveis
o Ordem maiorn Envolvem três ou mais variáveis
22
© Noel de Jesus Mendonça Lopes 85
Restrições
o Absolutasn Quando violadas impedem a obtenção de
uma solução
o Preferêncian Indicam quais as soluções que são
preferíveis.
© Noel de Jesus Mendonça Lopes 86
Variáveis e restrições
o Cada variável Vi num CSP tem um domínio Di, que é o conjunto de valores que a variável pode tomar.
o O domínio pode ser discreto ou continuo.
o Uma restrição unária especifica o subconjunto de valores pertencentes ao domínio Di que a uma dada variável Vi pode ter.
© Noel de Jesus Mendonça Lopes 87
Aplicar um algoritmo de pesquisa geral a um CSP
o Estado inicial – Um estado em que todas as variáveis não têm nenhum valor.
o Operadores – Atribuem um valor a uma variável a partir de um conjunto de valores possíveis.
o Objectivo – Todas as variáveis têm valores atribuídos que satisfazem todas as restrições.
© Noel de Jesus Mendonça Lopes 88
Aplicar um algoritmo de pesquisa geral a um CSP
oA profundidade máxima da árvore de pesquisa, bem como a profundidade onde se encontram todas as soluções é n (número de variáveis).
oNeste caso qual será o algoritmo adequado?
23
© Noel de Jesus Mendonça Lopes 89
Backtracking search
o É despendido tempo quando pelo menos uma das restrições já foi violada.
o O que podemos fazer é inserir um teste antes da geração de sucessores que garanta que não são gerados sucessores caso o estado actual viole as restrições.
© Noel de Jesus Mendonça Lopes 90
Forward checking
o Suponhamos que colocamos as primeiras 6 rainhas de tal forma que todas as colunas da 8 linha estão a ser atacadas.
o O backtracking irá tentar todas as posições para a 7ª rainha apesar de o problema já não ser solúvel.
o O forward checking evita isto olhando para a frente de forma a detectar se o problema já é insolúvel.
© Noel de Jesus Mendonça Lopes 91
Forward checking
o Cada vez que uma variável é instanciada, são eliminados todos os valores dos domínios que entrem em conflito com os valores das variáveis instanciadas até à data.
o Se algum dos domínios ficar com o conjunto vazio de valores a pesquisa retorna automaticamente.
© Noel de Jesus Mendonça Lopes 92
Forward checking
oNa maioria dos casos é mais rápido que o backtracking e é bastante fácil de implementar.
24
© Noel de Jesus Mendonça Lopes 93
Verificação da consistência dos arcos
o O forward checking é um caso especial da verificação da consistência dos arcos.
o Um estado diz-se ter consistência de arco quando todas as suas variáveis têm valores do seu domínio que são consistentes com todas as restrições que envolvem essa variável.
© Noel de Jesus Mendonça Lopes 94
Verificação da consistência dos arcos
oA consistência de arco pode ser obtida apagando sucessivamente todos os valores que são inconsistentes com uma dada restrição.
© Noel de Jesus Mendonça Lopes 95
Propagação de restrições
o À medida que se vão apagando valores, outros valores podem tornar-se inconsistentes porque dependiam daqueles que foram apagados para serem consistentes.
o Nalguns casos atingir a consistência dos arcos é suficiente para resolver o problema.
© Noel de Jesus Mendonça Lopes 96
Consistência dos arcos
o A verificação da consistência dos arcos é usada normalmente como um passo de pré processamento, mas pode também ser usada na pesquisa.