Escolar Documentos
Profissional Documentos
Cultura Documentos
No qual vemos como um agente pode encontrar uma sequência de ações que atinja seus objetivos,
quando nenhuma ação isolada o fará.
Os agentes mais simples discutidos no Capítulo 2 foram os agentes reflexos, que baseiam suas ações em um
mapeamento direto de estados para ações. Esses agentes não podem operar bem em ambientes para os quais
esse mapeamento seria muito grande para armazenar e levaria muito tempo para aprender. Agentes baseados em
objetivos, por outro lado, podem ter sucesso considerando ações futuras e a conveniência de seus resultados.
SOLUÇÃO DE PROBLEMAS
AGENTE
Este capítulo descreve um tipo de agente baseado em objetivos chamado agente de solução de problemas.
Os agentes de solução de problemas pensam sobre o mundo usando representações atômicas , conforme
descrito na Seção 2.4.7 — isto é, os estados do mundo são considerados como um todo, sem nenhuma estrutura
interna visível para os algoritmos de solução de problemas. Agentes baseados em objetivos que usam
representações fatoradas ou estruturadas mais avançadas são geralmente chamados de agentes de
planejamento e são discutidos nos Capítulos 7 e 11.
Começamos nossa discussão sobre resolução de problemas definindo precisamente os elementos que
constituem um “problema” e sua “solução”, e damos vários exemplos para ilustrar essas definições.
Em seguida, descrevemos vários algoritmos de busca de uso geral que podem ser usados para resolver esses
problemas. Veremos vários algoritmos de busca não informados — algoritmos que não recebem nenhuma
informação sobre o problema além de sua definição. Embora alguns desses algoritmos possam resolver qualquer
problema solucionável, nenhum deles pode fazê-lo com eficiência. Algoritmos de busca informados , por outro
lado, muitas vezes podem funcionar muito bem se tiverem alguma ideia de onde procurar soluções.
Neste capítulo, nos limitamos ao tipo mais simples de ambiente de tarefa, para o qual a solução de um
problema é sempre uma sequência fixa de ações. O caso mais geral – em que as ações futuras do agente podem
variar dependendo das percepções futuras – é tratado no Capítulo 4.
Este capítulo usa conceitos da análise de algoritmos. Leitores não familiarizados com os conceitos de
complexidade assintótica (isto é, notação O() ) e NP-completude devem consultar o Apêndice A.
65
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
Agentes inteligentes devem maximizar sua medida de desempenho. Como mencionamos no Capítulo 2, alcançar
isso às vezes é simplificado se o agente puder adotar uma meta e almejar satisfazê-la. Vejamos primeiro por
que e como um agente pode fazer isso.
Imagine um agente na cidade de Arad, na Romênia, aproveitando as férias em turnê. A medida de
desempenho do agente contém muitos fatores: ele quer melhorar seu bronzeado, melhorar seu romeno, apreciar
a paisagem, aproveitar a vida noturna (como ela é), evitar ressacas e assim por diante. O problema de decisão
é complexo, envolvendo muitas compensações e leitura cuidadosa de guias. Agora, suponha que o agente
tenha uma passagem não reembolsável para sair de Bucareste no dia seguinte. Nesse caso, faz sentido que o
agente adote o objetivo de chegar a Bucareste.
Os cursos de ação que não chegam a Bucareste a tempo podem ser rejeitados sem maiores considerações e
o problema de decisão do agente é bastante simplificado. As metas ajudam a organizar o comportamento ,
limitando os objetivos que o agente está tentando alcançar e, portanto, as ações que ele precisa considerar. A
formulação de metas, com base na situação atual e na medida de desempenho do agente, é o primeiro passo na solução de
problemas.
Consideraremos uma meta como um conjunto de estados do mundo - exatamente aqueles estados nos
quais a meta é satisfeita. A tarefa do agente é descobrir como agir, agora e no futuro, para que atinja um estado
objetivo. Antes de poder fazer isso, ele precisa decidir (ou precisamos decidir em seu nome) que tipo de ações e
estados deve considerar. Se fosse para considerar ações do tipo “mova o pé esquerdo para a frente uma
polegada” ou “gire o volante um grau para a esquerda”, o agente provavelmente nunca encontraria o caminho
para fora do estacionamento, muito menos para Bucareste, porque nesse nível de detalhe, há muita incerteza
no mundo e haveria muitas etapas em uma solução. A formulação do problema é o processo de decidir quais
PROBLEMA
FORMULAÇÃO ações e estados considerar, dado um objetivo. Discutiremos esse processo com mais detalhes posteriormente.
Por ora, vamos assumir que o agente considerará ações no nível de dirigir de uma grande cidade para outra.
Cada estado, portanto, corresponde a estar em uma determinada cidade.
Nosso agente agora adotou o objetivo de dirigir até Bucareste e está considerando para onde ir de Arad.
Existem três estradas saindo de Arad, uma em direção a Sibiu, uma para Timisoara e uma para Zerind. Nenhum
deles atinge o objetivo, portanto, a menos que o agente esteja muito familiarizado com a geografia da Romênia,
ele não saberá qual caminho seguir.1 Em outras palavras, o agente não saberá qual de suas ações possíveis é
a melhor, porque não ainda não sabem o suficiente sobre o estado resultante de cada ação. Se o agente não
tiver nenhuma informação adicional – isto é, se o ambiente for desconhecido no sentido definido na Seção 2.3
– então ele não tem escolha a não ser tentar uma das ações aleatoriamente. Essa triste situação é discutida no
Capítulo 4.
Mas suponha que o agente tenha um mapa da Romênia. O objetivo de um mapa é fornecer ao agente
informações sobre os estados em que ele pode entrar e as ações que ele pode executar. O agente pode usar
esta informação para considerar as fases subsequentes de uma viagem hipotética através de cada uma das três
cidades, tentando encontrar uma viagem que eventualmente chegue a Bucareste. uma vez que tem
1 Estamos assumindo que a maioria dos leitores está na mesma posição e pode facilmente se imaginar tão sem noção
quanto nosso agente. Pedimos desculpas aos leitores romenos que não conseguem tirar proveito deste dispositivo pedagógico.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
encontrou um caminho no mapa de Arad a Bucareste, pode atingir seu objetivo realizando as ações de direção
que correspondem às etapas da viagem. Em geral, um agente com várias opções imediatas de valor desconhecido
pode decidir o que fazer examinando primeiro as ações futuras que eventualmente levam a estados de valor
conhecido.
Para ser mais específico sobre o que queremos dizer com “examinar ações futuras”, temos que ser mais
específicos sobre as propriedades do ambiente, conforme definido na Seção 2.3. Por enquanto, assumiremos
que o ambiente é observável, de forma que o agente sempre conheça o estado atual. Para o agente que dirige
na Romênia, é razoável supor que cada cidade do mapa tenha uma placa indicando sua presença aos motoristas
que chegam. Também assumiremos que o ambiente é discreto, de modo que, em qualquer estado, haja apenas
um número finito de ações para escolher.
Isso é verdade para navegar na Romênia porque cada cidade está conectada a um pequeno número de outras
cidades. Vamos assumir que o ambiente é conhecido, para que o agente saiba quais estados são atingidos por
cada ação. (Ter um mapa preciso é suficiente para atender a essa condição para problemas de navegação.)
Finalmente, assumimos que o ambiente é determinístico, de modo que cada ação tenha exatamente um
resultado. Em condições ideais, isso é verdade para o agente na Romênia - significa que, se ele escolher dirigir
de Arad para Sibiu, acabará em Sibiu. É claro que as condições nem sempre são ideais, como veremos no
Capítulo 4.
Sob essas suposições, a solução para qualquer problema é uma sequência fixa de ações.
"Claro!" pode-se dizer: "O que mais poderia ser?" Bem, em geral pode ser uma estratégia de ramificação que
recomenda diferentes ações no futuro, dependendo de quais percepções chegam.
Por exemplo, em condições menos do que ideais, o agente pode planejar dirigir de Arad para Sibiu e depois para
Rimnicu Vilcea, mas também pode precisar de um plano de contingência caso chegue acidentalmente a Zerind
em vez de Sibiu. Felizmente, se o agente conhece o estado inicial e o ambiente é conhecido e determinístico,
ele sabe exatamente onde estará após a primeira ação e o que irá perceber. Como há apenas uma percepção
possível após a primeira ação, a solução pode especificar apenas uma segunda ação possível e assim por diante.
PROCURAR
O processo de buscar uma sequência de ações que alcance o objetivo é chamado de busca.
SOLUÇÃO
Um algoritmo de busca toma um problema como entrada e retorna uma solução na forma de uma sequência de
ações. Uma vez encontrada uma solução, as ações que ela recomenda podem ser realizadas. Isso é chamado
EXECUÇÃO
de fase de execução . Assim, temos um design simples de “formular, pesquisar, executar” para o agente,
conforme mostrado na Figura 3.1. Após formular um objetivo e um problema a resolver, o agente chama um
procedimento de busca para resolvê-lo. Em seguida, ele usa a solução para guiar suas ações, fazendo tudo o
que a solução recomenda como a próxima coisa a fazer – normalmente, a primeira ação da sequência – e, em
seguida, remove essa etapa da sequência. Uma vez executada a solução, o agente formulará uma nova meta.
Observe que enquanto o agente está executando a sequência de soluções, ele ignora suas percepções
ao escolher uma ação, pois sabe antecipadamente quais serão. Um agente que executa seus planos de olhos
fechados, por assim dizer, deve estar bastante seguro do que está acontecendo. Os teóricos do controle chamam
CIRCUITO ABERTO
isso de sistema de loop aberto , porque ignorar as percepções quebra o loop entre o agente e o ambiente.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
Figura 3.1 Um agente simples de solução de problemas. Ele primeiro formula uma meta e um problema, procura
uma sequência de ações que resolveriam o problema e, em seguida, executa as ações uma de cada vez. Quando
isso é concluído, ele formula outra meta e começa de novo.
ESTADO INICIAL • O estado inicial em que o agente inicia. Por exemplo, o estado inicial de nosso agente na Romênia pode
ser descrito como In(Arad). • Uma descrição das
AÇÕES possíveis ações disponíveis para o agente. Dado um determinado estado s, ACTIONS(s) retorna o conjunto
de ações que podem ser executadas em s. Por exemplo, do estado In(Arad), as ações possíveis são
{Go(Sibiu), Go(Timisoara), Go(Zerind)}. • Uma descrição do que cada ação faz; o nome formal para
isso é o modelo de transição, especificado por uma função RESULT(s, a) que retorna o estado resultante
MODELO DE TRANSIÇÃO da execução da ação a no estado s. Também usaremos o termo sucessor para nos referir a qualquer
SUCESSOR estado alcançável a partir de um determinado estado por uma única ação.2 Por exemplo, temos
RESULT(In(Arad),Go(Zerind)) = In(Zerind) .
ESPAÇO DE ESTADO Juntos, o estado inicial, as ações e o modelo de transição definem implicitamente o espaço de estado do
problema - o conjunto de todos os estados alcançáveis a partir do estado inicial por qualquer sequência
GRÁFICO de ações. O espaço de estado forma uma rede ou grafo direcionado no qual os nós são estados e os
links entre os nós são ações. (O mapa da Romênia mostrado na Figura 3.2 pode ser interpretado como
um gráfico de espaço de estados se considerarmos cada estrada como representando duas ações de
CAMINHO direção, uma em cada direção.) Um caminho no espaço de estados é uma sequência de estados
conectados por um seqüência de ações.
2 Muitos tratamentos de solução de problemas, incluindo edições anteriores deste livro, falam sobre a função
sucessor, que retorna o conjunto de todos os sucessores, em vez de ações e resultados. Embora conveniente em
alguns aspectos, essa formulação torna difícil descrever um agente que sabe quais ações pode tentar, mas não o que consegue.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
Oradea
71
Neamt
Zerind 87
151
75
Iasi
Arad
140
92
Sibiu Fagaras
99
118
Vaslui
80
Rimnicu Vilcea
Timisoara
142
111 211
Pitesti
Lugoj 97
70 98
85 Hirsova
Mehadia 146 101 Urziceni
75 86
138
Bucareste
Drobeta 120
90
Craiova Eforie
Giurgiu
TESTE DE GOL
• O teste de meta, que determina se um determinado estado é um estado de meta. Às vezes, há um conjunto explícito de
possíveis estados de objetivo e o teste simplesmente verifica se o estado fornecido é um deles. O objetivo do agente na
Romênia é o conjunto único {In(Bucharest)}.
Às vezes, o objetivo é especificado por uma propriedade abstrata em vez de um conjunto de estados explicitamente
enumerados. Por exemplo, no xadrez, o objetivo é atingir um estado chamado “xeque-mate”, onde o rei adversário está
sob ataque e não consegue escapar.
CUSTO DO CAMINHO
• Uma função de custo de caminho que atribui um custo numérico a cada caminho. O agente de solução de problemas
escolhe uma função de custo que reflita sua própria medida de desempenho. Para o agente que tenta chegar a Bucareste,
o tempo é essencial, portanto, o custo de um trajeto pode ser seu comprimento em quilômetros. Neste capítulo, assumimos
que o custo de um caminho pode ser descrito como a soma dos custos das ações individuais ao longo do caminho.3 O
CUSTO DA ETAPA
custo do passo de ação é denotado por c(s, a, sÿ ). Os custos de passos para a Romênia são mostrados na Figura 3.2
a no estado s para alcançar o estado sÿ como distâncias de rota. Assumiremos que os custos das etapas são não
negativos.4
Os elementos anteriores definem um problema e podem ser reunidos em uma única estrutura de dados que é fornecida como
entrada para um algoritmo de solução de problemas. Uma solução para um problema é uma sequência de ações que leva do
estado inicial a um estado objetivo. A qualidade da solução é medida pela OPTIMAL SOLUTION , a função de custo de caminho,
e uma solução ótima tem o menor custo de caminho entre todas as soluções.
3 Essa suposição é algoritmicamente conveniente, mas também tem uma justificativa mais fundamental – veja a página 629
no Capítulo 17.
4 As implicações dos custos negativos são exploradas no Exercício 3.29.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
A abordagem de resolução de problemas foi aplicada a uma vasta gama de ambientes de tarefas. Listamos
alguns dos mais conhecidos aqui, distinguindo entre problemas de brinquedo e problemas do mundo real . Um
PROBLEMA DO BRINQUEDO problema de brinquedo destina-se a ilustrar ou exercitar vários métodos de resolução de problemas. Pode ser
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
dado uma descrição concisa e exata e, portanto, é utilizável por diferentes pesquisadores para comparar o
MUNDO REAL
PROBLEMA
desempenho dos algoritmos. Um problema do mundo real é aquele cujas soluções as pessoas realmente se
importam. Eles tendem a não ter uma única descrição consensual, mas tentaremos dar o sabor geral de suas
formulações.
O primeiro exemplo que examinaremos é o mundo do vácuo introduzido pela primeira vez no Capítulo 2. (Veja a
Figura 2.2.) Isso pode ser formulado como um problema da seguinte forma:
• Estados: O estado é determinado pela localização do agente e pelas localizações sujas. O agente está em um
dos dois locais, cada um dos quais pode ou não conter sujeira. Assim, existem 2 × 2 = 8 possíveis estados do
mundo. Um ambiente 2
maior com n locais tem
n · 2 n estados.
• Estado inicial: Qualquer estado pode ser designado como o estado inicial. •
Ações: Neste ambiente simples, cada estado tem apenas três ações: Esquerda, Direita e
Chupar. Ambientes maiores também podem incluir Up e Down.
• Modelo de transição: as ações têm seus efeitos esperados, exceto que mover para a esquerda no quadrado
mais à esquerda, mover para a direita no quadrado mais à direita e chupar em um quadrado limpo não têm
efeito. O espaço de estado completo é mostrado na Figura 3.3.
caminho: Cada passo custa 1, então o custo do caminho é o número de passos no caminho.
Comparado com o mundo real, este problema de brinquedo tem localizações discretas, sujeira discreta, limpeza
confiável e nunca fica bagunçado depois de limpo. No Capítulo 4, vamos relaxar algumas dessas suposições.
8-PUZZLE O quebra-cabeça de 8 peças, cujo exemplo é mostrado na Figura 3.4, consiste em um tabuleiro 3 × 3 com
oito peças numeradas e um espaço em branco. Uma peça adjacente ao espaço em branco pode deslizar para dentro
do espaço. O objetivo é atingir um estado de meta especificado, como o mostrado à direita da figura. A formulação
padrão é a seguinte:
• Estados: Uma descrição de estado especifica a localização de cada uma das oito peças e o espaço em branco
em um dos nove quadrados. •
Estado inicial: Qualquer estado pode ser designado como o estado inicial. Observe que qualquer meta pode ser
alcançada a partir de exatamente metade dos possíveis estados iniciais (Exercício 3.17). • Ações:
A formulação mais simples define as ações como movimentos do espaço em branco Esquerda, Direita, Cima ou
Baixo. Diferentes subconjuntos destes são possíveis, dependendo de onde está o espaço em branco.
• Modelo de transição: Dado um estado e uma ação, retorna o estado resultante; por exemplo, se aplicarmos
Esquerda ao estado inicial na Figura 3.4, o estado resultante terá o 5 e o espaço em branco trocados.
• Custo do caminho: Cada passo custa 1, então o custo do caminho é o número de passos no caminho.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
R
eu R
eu
S S
R R
eu R eu R
eu eu
S S
S S
R
eu R
eu
S S
Figura 3.3 O espaço de estados para o mundo do vácuo. Links denotam ações: L = Esquerda, R = Direita, S =
Chupar.
Que abstrações incluímos aqui? As ações são abstraídas para seus estados inicial e final, ignorando os locais
intermediários onde o bloco está deslizando. Abstraímos ações como sacudir o tabuleiro quando as peças ficam
presas, ou extrair as peças com uma faca e colocá-las de volta. Ficamos com a descrição das regras do quebra-
cabeça, evitando todos os detalhes das manipulações físicas.
BLOCO DESLIZANTE
PUZZLES
O quebra-cabeça de 8 pertence à família dos quebra-cabeças de blocos deslizantes, que são
frequentemente usados como problemas de teste para novos algoritmos de busca em IA. Essa família é conhecida
por ser NP-completa, portanto não se espera encontrar métodos significativamente melhores no pior caso do que
os algoritmos de busca descritos neste capítulo e no próximo. O quebra-cabeça de 8 tem 9!/2 = 181, 440 estados
alcançáveis e é facilmente resolvido. O quebra-cabeça de 15 (em um tabuleiro 4 × 4 ) tem cerca de 1,3 trilhão de
estados, e instâncias aleatórias podem ser resolvidas de forma otimizada em alguns milissegundos pelos melhores algoritmos de busca.
7 2 4 1 2
5 6 3 4 5
8 3 1 6 7 8
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação final.
©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
O quebra-cabeça de 24 (em um tabuleiro de 5 × 5 ) tem cerca de 1025 estados, e as instâncias aleatórias levam várias horas para
Figura 3.5 Quase uma solução para o problema das 8 rainhas. (A solução é deixada como exercício.)
Embora existam algoritmos eficientes para fins especiais para este problema e para toda a família de n-
rainhas, ele continua sendo um problema de teste útil para algoritmos de busca. Existem dois tipos principais de
INCREMENTAL
FORMULAÇÃO
formulação. Uma formulação incremental envolve operadores que aumentam a descrição do estado, começando
com um estado vazio; para o problema das 8 rainhas, isso significa que cada ação adiciona uma rainha ao estado.
ESTADO COMPLETO
FORMULAÇÃO
Uma formulação de estado completo começa com todas as 8 rainhas no tabuleiro e as move. Em ambos os casos,
o custo do caminho não tem interesse porque apenas o estado final conta. A primeira formulação incremental que se
pode tentar é a seguinte:
de transição: Retorna o tabuleiro com a dama adicionada à casa especificada. • Teste de objetivo: 8 rainhas
Nesta formulação, temos 64 · 63 · · · 57 ÿ 1,8 × 1014 sequências possíveis para investigar. Uma formulação melhor
proibiria a colocação de uma rainha em qualquer casa já atacada:
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
• Ações: Adicione uma rainha a qualquer quadrado na coluna vazia mais à esquerda, de forma que não seja
atacada por nenhuma outra rainha.
Essa formulação reduz o espaço de estado de 8 rainhas de 1,8 × 1014 para apenas 2.057, e as soluções são
fáceis de encontrar. Por outro lado, para 100 rainhas, a redução é de aproximadamente 10.400 estados para
cerca de 1.052 estados (Exercício 3.18) — uma grande melhoria, mas não o suficiente para tornar o problema
tratável. A Seção 4.1 descreve a formulação de estado completo e o Capítulo 6 fornece um algoritmo simples
que resolve até mesmo o problema de um milhão de rainhas com facilidade.
Nosso problema final do brinquedo foi desenvolvido por Donald Knuth (1964) e ilustra como podem surgir
espaços de estados infinitos. Knuth conjecturou que é possível começar com o número 4, aplicar uma sequência
de fatorial, raiz quadrada e operações mínimas e chegar a qualquer número inteiro positivo desejado. Por
exemplo,
(4!)! = 5 .
• Ações: Aplicar operação fatorial, raiz quadrada ou piso. O fatorial só pode ser aplicado
para inteiros.
• Modelo de transição: Conforme dado pelas definições matemáticas das operações. • Teste de
objetivo: Estado é o inteiro positivo desejado.
Até onde sabemos, não há limite de quão grande um número pode ser construído no processo de atingir um
determinado alvo - por exemplo, o número 620.448.401.733.239.439.360.000 é gerado na expressão para 5 -
portanto, o espaço de estados para esse problema é infinito. Esses espaços de estado surgem com muita
frequência em tarefas que envolvem a geração de expressões matemáticas, circuitos, provas, programas e
outros objetos definidos recursivamente.
PROBLEMA
Já vimos como o problema de localização de rotas é definido em termos de locais especificados e transições
ao longo dos links entre eles. Algoritmos de descoberta de rota são usados em uma variedade de aplicações.
Alguns, como sites da Web e sistemas veiculares que fornecem instruções de direção, são extensões
relativamente diretas do exemplo da Romênia. Outros, como roteamento de fluxos de vídeo em redes de
computadores, planejamento de operações militares e sistemas de planejamento de viagens aéreas, envolvem
especificações muito mais complexas. Considere os problemas de viagens aéreas que devem ser resolvidos por
um site de planejamento de viagens:
• Estados: Cada estado obviamente inclui um local (por exemplo, um aeroporto) e a hora atual.
Além disso, como o custo de uma ação (um segmento de voo) pode depender de segmentos anteriores,
suas bases tarifárias e se foram nacionais ou internacionais, o estado deve registrar informações extras
sobre esses aspectos “históricos”.
• Estado inicial: é especificado pela consulta do usuário.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
• Ações: Embarque em qualquer voo do local atual, em qualquer classe de assento, saindo após o horário atual,
deixando tempo suficiente para transferência dentro do aeroporto se houver um segmento de voo anterior.
• Modelo de transição: O estado resultante da realização de um voo terá como local atual o destino do voo e
como horário atual a hora de chegada do voo.
trajeto: depende do custo monetário, tempo de espera, tempo de voo, procedimentos alfandegários e de
imigração, qualidade do assento, hora do dia, tipo de avião, prêmios de milhagem para passageiros frequentes
e assim por diante.
Os sistemas de aconselhamento de viagens comerciais usam uma formulação de problema desse tipo, com muitas
complicações adicionais para lidar com as estruturas tarifárias bizantinas impostas pelas companhias aéreas.
Qualquer viajante experiente sabe, no entanto, que nem todas as viagens aéreas acontecem de acordo com o
planejado. Um sistema realmente bom deve incluir planos de contingência - como reservas de backup em voos
alternativos - na medida em que sejam justificados pelo custo e pela probabilidade de falha do plano original.
PROBLEMAS DE TOUR Os problemas de turismo estão intimamente relacionados aos problemas de localização de rotas, mas com
uma diferença importante. Considere, por exemplo, o problema “Visite todas as cidades da Figura 3.2 pelo menos
uma vez, começando e terminando em Bucareste”. Assim como na localização de rotas, as ações correspondem a
viagens entre cidades adjacentes. O espaço de estado, no entanto, é bem diferente. Cada estado deve incluir não
apenas a localização atual, mas também o conjunto de cidades que o agente visitou.
Assim, o estado inicial seria In(Bucharest), Visited({Bucharest}), um estado intermediário típico seria In(Vaslui),
Visited({Bucharest, Urziceni, Vaslui}), e o teste de objetivo verificaria se o agente está em Bucareste e todas as 20
cidades foram visitadas.
VIAJANDO
VENDEDOR O problema do caixeiro viajante (TSP) é um problema de turismo no qual cada cidade deve ser visitada
PROBLEMA
exatamente uma vez. O objetivo é encontrar o caminho mais curto . O problema é conhecido por ser NP-difícil, mas
um enorme esforço foi gasto para melhorar as capacidades dos algoritmos TSP. Além de planejar viagens para
vendedores ambulantes, esses algoritmos têm sido usados para tarefas como o planejamento de movimentos de
furadeiras automáticas de placas de circuito e de máquinas de estocagem no chão de fábrica.
LAYOUT VLSI Um problema de layout VLSI requer o posicionamento de milhões de componentes e conexões em um chip
para minimizar a área, minimizar os atrasos do circuito, minimizar as capacitâncias parasitas e maximizar o
rendimento da fabricação. O problema de layout surge após a fase de projeto lógico e geralmente é dividido em duas
partes: layout de célula e roteamento de canal. No layout celular, os componentes primitivos do circuito são
agrupados em células, cada uma das quais desempenha alguma função reconhecida. Cada célula tem uma pegada
fixa (tamanho e forma) e requer um certo número de conexões para cada uma das outras células. O objetivo é colocar
as células no chip de forma que não se sobreponham e que haja espaço para os fios de conexão serem colocados
entre as células.
O roteamento de canal encontra uma rota específica para cada fio através dos espaços entre as células. Esses
problemas de pesquisa são extremamente complexos, mas definitivamente vale a pena resolvê-los. Mais adiante
neste capítulo, veremos alguns algoritmos capazes de resolvê-los.
NAVEGAÇÃO DO ROBÔ A navegação do robô é uma generalização do problema de localização de rotas descrito anteriormente.
Em vez de um conjunto discreto de rotas, um robô pode se mover em um espaço contínuo com (em princípio) um
conjunto infinito de ações e estados possíveis. Para um robô circular movendo-se sobre uma superfície plana,
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
o espaço é essencialmente bidimensional. Quando o robô possui braços e pernas ou rodas que também devem
ser controlados, o espaço de busca torna-se multidimensional. Técnicas avançadas são necessárias apenas
para tornar o espaço de busca finito. Examinamos alguns desses métodos no Capítulo 25. Além da complexidade
do problema, os robôs reais também devem lidar com erros nas leituras dos sensores e nos controles do motor.
AUTOMÁTICO
CONJUNTO O sequenciamento automático de montagem de objetos complexos por um robô foi demonstrado pela
SEQUÊNCIA
primeira vez por FREDDY (Michie, 1972). O progresso desde então tem sido lento, mas seguro, a ponto de a
montagem de objetos intrincados, como motores elétricos, ser economicamente viável. Em problemas de
montagem, o objetivo é encontrar uma ordem para montar as partes de algum objeto. Se a ordem errada for
escolhida, não haverá como adicionar alguma parte posteriormente na sequência sem desfazer parte do trabalho
já feito. Verificar a viabilidade de uma etapa na sequência é um problema difícil de pesquisa geométrica
intimamente relacionado à navegação do robô. Assim, a geração de ações legais é a parte cara do
sequenciamento da montagem. Qualquer algoritmo prático deve evitar explorar tudo, exceto uma pequena fração
do espaço de estado. Outro importante problema de montagem é o design de proteínas, em que o objetivo é
PROJETO DE PROTEÍNA encontrar uma sequência de aminoácidos que se enobreça em uma proteína tridimensional com as propriedades
certas para curar alguma doença.
Tendo formulado alguns problemas, precisamos agora resolvê-los. Uma solução é uma sequência de ações,
portanto, os algoritmos de busca funcionam considerando várias sequências de ações possíveis. As possíveis
ÁRVORE DE PESQUISA sequências de ação começando no estado inicial formam uma árvore de busca com o estado inicial na raiz; os
NÓ ramos são ações e os nós correspondem a estados no espaço de estados do problema. A Figura 3.6 mostra os
primeiros passos no crescimento da árvore de busca para encontrar uma rota de Arad para Bucareste. O nó raiz
da árvore corresponde ao estado inicial, In(Arad).
O primeiro passo é testar se este é um estado objetivo. (Claramente não é, mas é importante verificar para que
possamos resolver problemas complicados como “começar em Arad, chegar a Arad.”) Então, precisamos
EXPANDINDO considerar a realização de várias ações. Isso é feito expandindo o estado atual; ou seja, aplicar cada ação legal
GERANDO ao estado atual, gerando assim um novo conjunto de estados. Neste caso, adicionamos três ramificações do nó
NÓ PAI pai In(Arad) levando a três novos nós filhos: In(Sibiu), In(Timisoara) e In(Zerind). Agora devemos escolher qual
NÓ FILHO dessas três possibilidades considerar mais adiante.
Essa é a essência da busca – seguir uma opção agora e deixar as outras de lado para depois, caso a
primeira escolha não leve a uma solução. Suponha que escolhemos Sibiu primeiro.
Verificamos se é um estado objetivo (não é) e então expandimos para obter In(Arad), In(Fagaras), In(Oradea) e
In(RimnicuVilcea). Podemos então escolher qualquer um desses quatro, ou voltar e escolher Timisoara ou
NÓ DA FOLHA Zerind. Cada um desses seis nós é um nó folha, ou seja, um nó sem filhos na árvore. O conjunto de todos os
nós folha disponíveis para expansão em qualquer ponto é chamado de fronteira. (Muitos autores a chamam de
FRONTEIRA lista aberta, que é geograficamente menos evocativa e imprecisa, pois não precisa ser armazenada como uma
LISTA ABERTA lista.) Na Figura 3.6, a fronteira de cada árvore consiste nos nós com contornos em negrito.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
O processo de escolha e expansão dos nós na fronteira continua até que uma solução seja encontrada
ou não haja mais estados a serem expandidos. O algoritmo geral TREE-SEARCH é mostrado informalmente na
Figura 3.7. Todos os algoritmos de busca compartilham essa estrutura básica; eles variam principalmente de
acordo com a forma como escolhem qual estado expandir a seguir - a chamada estratégia de busca ESTRATÉGIA
DE PESQUISA .
O leitor atento notará uma coisa peculiar sobre a árvore de busca mostrada na Figura 3.6: ela inclui o
caminho de Arad a Sibiu e de volta a Arad novamente! Dizemos que In(Arad) é um estado repetido na árvore
ESTADO REPETIDO
de busca, gerado neste caso por um loopy path. Considerar esses caminhos circulares significa que a árvore
CAMINHO EM LOOPY
de busca completa para a Romênia é infinita, porque não há limite para a frequência com que se pode percorrer
um circuito. Por outro lado, o espaço de estados – o mapa mostrado na Figura 3.2 – tem apenas 20 estados.
Como veremos na Seção 3.4, os loops podem fazer com que certos algoritmos falhem, tornando insolúveis
problemas que, de outra forma, poderiam ser resolvidos. Felizmente, não há necessidade de considerar caminhos
em loop. Podemos confiar em mais do que intuição para isso: como os custos de caminho são aditivos e os
custos de passo não são negativos, um caminho em loop para qualquer estado dado nunca é melhor do que o
mesmo caminho com o loop removido.
CAMINHO REDUNDANTE
Caminhos em loop são um caso especial do conceito mais geral de caminhos redundantes, que
Figura 3.6 Árvores de busca parcial para encontrar uma rota de Arad a Bucareste. Os nós que foram expandidos
são sombreados; os nós que foram gerados, mas ainda não expandidos, são destacados em negrito; nós que
ainda não foram gerados são mostrados em linhas tracejadas fracas.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
Figura 3.7 Uma descrição informal dos algoritmos gerais de busca em árvore e busca em grafos. As partes do
GRAPH-SEARCH marcadas em negrito e itálico são as adições necessárias para lidar com estados repetidos.
existem sempre que há mais de uma maneira de ir de um estado para outro. Considere os caminhos Arad–Sibiu
(140 km de extensão) e Arad–Zerind–Oradea–Sibiu (297 km de extensão). Obviamente, o segundo caminho é
redundante - é apenas uma maneira pior de chegar ao mesmo estado. Se você está preocupado em atingir a
meta, nunca há razão para manter mais de um caminho para um determinado estado, porque qualquer estado
de meta que seja alcançável estendendo um caminho também é alcançável estendendo o outro.
Em alguns casos, é possível definir o próprio problema de forma a eliminar caminhos redundantes. Por
exemplo, se formularmos o problema das 8 rainhas (página 73) de modo que uma rainha possa ser colocada em
qualquer coluna, então cada estado com n rainhas pode ser alcançado por n! diferentes caminhos; mas se
reformularmos o problema de modo que cada nova rainha seja colocada na coluna vazia mais à esquerda, então
cada estado pode ser alcançado apenas por um caminho.
Em outros casos, caminhos redundantes são inevitáveis. Isso inclui todos os problemas em que as ações
são reversíveis, como problemas de localização de rotas e quebra-cabeças de blocos deslizantes. Rota
RECTANGULAR GRID encontrada em uma grade retangular, conforme ilustrado na Figura 3.9, é um exemplo particularmente
importante em jogos de computador. Em tal grade, cada estado tem quatro sucessores, então uma árvore de
d folhas;
busca de profundidade d que inclui estados repetidos
mastem
há 4apenas
estados distintos
cerca 2
de 2ddentro de d passos de qualquer
estado dado. Para d = 20, isso significa cerca de um trilhão de nós, mas apenas cerca de 800 estados distintos.
Assim, seguir caminhos redundantes pode fazer com que um problema tratável se torne intratável. Isso é
verdade mesmo para algoritmos que sabem como evitar loops infinitos.
Como diz o ditado, algoritmos que esquecem sua história estão fadados a repeti-la. O
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
Figura 3.8 Uma sequência de árvores de busca geradas por uma busca em grafos no problema da Romênia da
Figura 3.2. Em cada estágio, estendemos cada caminho em um passo. Observe que no terceiro estágio, a cidade
mais ao norte (Oradea) tornou-se um beco sem saída: ambas as sucessoras já foram exploradas por outros
caminhos.
Uma maneira de evitar explorar caminhos redundantes é lembrar onde se esteve. Para fazer isso,
CONJUNTO EXPLORADO aumentamos o algoritmo TREE-SEARCH com uma estrutura de dados chamada conjunto explorado,
LISTA FECHADA que lembra cada nó expandido. (Muitos autores chamam isso de lista fechada — veja o comentário
anterior sobre listas abertas.) Nodos recém-gerados que correspondam aos nodos gerados anteriormente
— aqueles no conjunto explorado ou na fronteira — podem ser descartados em vez de adicionados à fronteira.
O novo algoritmo, chamado GRAPH-SEARCH, é mostrado informalmente na Figura 3.7. Os algoritmos
específicos neste capítulo são, em sua maioria, casos especiais ou variantes desse projeto geral.
Dados os componentes de um nó pai, é fácil ver como calcular os componentes necessários para um
nó filho. A função CHILD-NODE pega um nó pai e uma ação e retorna o nó filho resultante:
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
A estrutura de dados do nó é representada na Figura 3.10. Observe como os ponteiros PARENT agrupam
os nós em uma estrutura de árvore. Esses ponteiros também permitem que o caminho da solução seja extraído
quando um nó objetivo é encontrado; usaremos a função SOLUÇÃO para retornar a sequência de ações obtidas
seguindo os ponteiros pais de volta à raiz.
Até agora, não tivemos muito cuidado em distinguir entre nós e estados, mas ao escrever algoritmos
detalhados é importante fazer isso. Um nó é uma estrutura de dados contábeis usada para representar a árvore
de pesquisa. Um estado corresponde a uma configuração do mundo. Assim, os nós estão em caminhos
específicos, conforme definido pelos ponteiros PARENT , enquanto os estados não estão. Além disso, dois nós
diferentes podem conter o mesmo estado mundial, se esse estado for gerado por meio de dois caminhos de
pesquisa diferentes.
Agora que temos nós, precisamos de um lugar para colocá-los. A fronteira precisa ser armazenada de
forma que o algoritmo de busca possa facilmente escolher o próximo nó a ser expandido de acordo com sua
FILA estratégia preferida. A estrutura de dados apropriada para isso é uma fila. As operações em uma fila são as
seguintes:
• VAZIO?(fila) retorna verdadeiro apenas se não houver mais elementos na fila. • POP(queue)
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
PAI
45 45
Nó
AÇÃO = Certo
PATH-COST = 6
66 11 88
ESTADO
77 23 23
Figura 3.10 Os nós são as estruturas de dados a partir das quais a árvore de busca é construída. Cada um tem
um pai, um estado e vários campos de contabilidade. As setas apontam do filho para o pai.
As filas são caracterizadas pela ordem em que armazenam os nós inseridos. Três variantes comuns são
FILA FIFO o primeiro a entrar, o primeiro a sair ou a fila FIFO, que abre o elemento mais antigo da fila; a fila de último
LIFO QUEUE a entrar, primeiro a sair ou LIFO (também conhecida como pilha), que abre o elemento mais novo da fila;
FILA DE PRIORIDADE e a fila de prioridade, que retira o elemento da fila com a maior prioridade de acordo com alguma função
de ordenação.
O conjunto explorado pode ser implementado com uma tabela hash para permitir a verificação
eficiente de estados repetidos. Com uma boa implementação, a inserção e a pesquisa podem ser feitas
em tempo aproximadamente constante, independentemente do número de estados armazenados. Deve-
se ter o cuidado de implementar a tabela hash com a noção correta de igualdade entre os estados. Por
exemplo, no problema do caixeiro viajante (página 75), a tabela hash precisa saber que o conjunto de
cidades visitadas {Bucharest,Urziceni,Vaslui} é o mesmo que {Urziceni,Vaslui,Bucharest}. Às vezes, isso
pode ser alcançado mais facilmente insistindo que as estruturas de dados para os estados estejam em
alguma forma CANÔNICA CANÔNICA ; ou seja, estados logicamente equivalentes devem ser mapeados para a mesma
estrutura de dados. No caso de estados descritos por conjuntos, por exemplo, uma representação vetorial
de bits ou uma lista ordenada sem repetição seria canônica, enquanto uma lista não ordenada não.
Antes de entrarmos no projeto de algoritmos de busca específicos, precisamos considerar os critérios que
podem ser usados para escolher entre eles. Avaliaremos o desempenho de um algoritmo de quatro
maneiras:
INTEGRALIDADE • Completude: o algoritmo garante que encontrará uma solução quando houver uma? •
OPTIMALIDADE Otimalidade: A estratégia encontra a solução ótima, conforme definido na página 69? •
COMPLEXIDADE DE TEMPO Complexidade de tempo: Quanto tempo leva para encontrar uma
COMPLEXIDADE ESPACIAL solução? • Complexidade do espaço: Quanta memória é necessária para realizar a busca?
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
de arestas (links). Isso é apropriado quando o gráfico é uma estrutura de dados explícita que é inserida no
programa de pesquisa. (O mapa da Romênia é um exemplo disso.) Na IA, o gráfico é muitas vezes representado
implicitamente pelo estado inicial, ações e modelo de transição e é frequentemente infinito. Por estas razões, a
complexidade é expressa em termos de três quantidades: b, o fator BRANCHING FACTOR ou número máximo
de sucessores de qualquer nó; d, a profundidade do nó objetivo mais raso (ou seja, o número de passos ao longo do caminho
PROFUNDIDADE
desde a raiz); e m, o comprimento máximo de qualquer caminho no espaço de estado. O tempo geralmente é
medido em termos do número de nós gerados durante a pesquisa e o espaço em termos do número máximo de
nós armazenados na memória.
Na maior parte, descreveremos a complexidade de tempo e espaço para busca em uma árvore; para um grafo,
a resposta dependerá de quão “redundantes” são os caminhos no espaço de estado.
CUSTO DE PESQUISA Para avaliar a eficácia de um algoritmo de busca, podemos considerar apenas o custo de busca – que
normalmente depende da complexidade do tempo, mas também pode incluir um termo para uso de memória –
CUSTO TOTAL ou podemos usar o custo total, que combina o custo de busca e o caminho custo da solução encontrada. Para
o problema de encontrar uma rota de Arad a Bucareste, o custo de busca é o tempo gasto na busca e o custo
de solução é o comprimento total do caminho em quilômetros. Assim, para calcular o custo total, temos que
somar milissegundos e quilômetros.
Não existe uma “taxa de câmbio oficial” entre os dois, mas pode ser razoável, neste caso, converter quilômetros
em milissegundos usando uma estimativa da velocidade média do carro (porque o tempo é o que importa ao
agente). Isso permite que o agente encontre um ponto de compensação ideal no qual a computação adicional
para encontrar um caminho mais curto se torna contraproducente. O problema mais geral das trocas entre bens
diferentes será abordado no Capítulo 16.
Esta seção cobre várias estratégias de busca que vêm sob o título de busca desinformada (também chamada
DESINFORMADO
PROCURAR de busca cega). O termo significa que eles não têm informações adicionais sobre os estados além dos
BUSCA CEGA fornecidos na definição do problema. Tudo o que podem fazer é gerar sucessores e distinguir um estado objetivo
de um estado sem objetivo. Todas as estratégias de busca são diferenciadas pela ordem em que os nós são
expandidos. As estratégias que sabem se um estado sem objetivo da BUSCA INFORMADA é “mais promissor”
do que outro são chamadas de busca informada ou estratégias de busca heurísticas da BUSCA HEURÍSTICA ; eles serão
abordados na Seção 3.5.
EM PRIMEIRO LUGAR
PROCURAR A busca em largura é uma estratégia simples na qual o nó raiz é expandido primeiro, depois todos os sucessores
do nó raiz são expandidos em seguida, depois seus sucessores e assim por diante. Em geral, todos os nós são
expandidos em uma determinada profundidade na árvore de busca antes que quaisquer nós no próximo nível
sejam expandidos.
A busca em largura é uma instância do algoritmo geral de busca em grafos (Figura 3.7) em que o nó não
expandido mais raso é escolhido para expansão. Isso é obtido de maneira muito simples usando uma fila FIFO
para a fronteira. Assim, novos nós (que são sempre mais profundos que seus pais) vão para o final da fila e nós
antigos, que são mais rasos que os novos nós,
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
seja expandido primeiro. Há um pequeno ajuste no algoritmo geral de pesquisa de gráfico, que é que o teste de meta é
aplicado a cada nó quando ele é gerado, e não quando é selecionado para expansão. Essa decisão é explicada a seguir,
onde discutimos a complexidade do tempo. Observe também que o algoritmo, seguindo o modelo geral para busca de
grafos, descarta qualquer novo caminho para um estado já na fronteira ou conjunto explorado; é fácil ver que tal caminho
deve ser pelo menos tão profundo quanto o já encontrado. Assim, a busca em largura sempre tem o caminho mais raso
para cada nó na fronteira.
O pseudocódigo é dado na Figura 3.11. A Figura 3.12 mostra o progresso da busca em uma árvore binária
simples.
Qual é a classificação da pesquisa em largura de acordo com os quatro critérios da seção anterior? Podemos
ver facilmente que ele está completo - se o nó objetivo mais raso estiver em alguma profundidade finita d, a busca em
largura acabará por encontrá-lo depois de gerar todos os nós mais rasos (desde que o fator de ramificação b seja finito).
Observe que assim que um nó objetivo é gerado, sabemos que é o nó objetivo mais raso porque todos os nós mais rasos
já devem ter sido gerados e falharam no teste de objetivo. Agora, o nó objetivo mais raso não é necessariamente o
ótimo ; tecnicamente, a busca em largura é ótima se o custo do caminho for uma função não decrescente da profundidade
do nó. O cenário mais comum é quando todas as ações têm o mesmo custo.
A A A A
B C B C B C B C
D E FG D E FG D E FG D E FG
Figura 3.12 Pesquisa em largura em uma árvore binária simples. Em cada etapa, o próximo nó a ser expandido é
indicado por um marcador.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
Até agora, as notícias sobre a busca em largura têm sido boas. As notícias sobre tempo e espaço não
são tão boas. Imagine pesquisar uma árvore uniforme onde cada estado tem b sucessores.
A raiz da árvore de busca gera b nós no primeiro nível, cada um dos quais gera mais b nós, para um total de b
2 3
nós no terceiro nível, e no segundo nível. Cada um deles gera b mais nós, produzindo b
assim por diante. Agora suponha que a solução esteja na profundidade d. No pior caso, é o último nó gerado
naquele nível. Então o número total de nós gerados é
23db+b+b+··· d
+b = O(b ).
(Se o algoritmo aplicasse o teste de objetivo aos nós quando selecionados para expansão, em vez de quando
gerados, toda a camada de nós na profundidade d seria expandida antes de detectar o objetivo, e a complexidade
de tempo seria O(b d+1 ).)
Quanto à complexidade espacial: para qualquer tipo de busca em grafos, que armazena cada nó
expandido no conjunto explorado , a complexidade espacial está sempre dentro de um fator b da complexidade
temporal. Para busca em grafos em largura em particular, cada nó gerado permanece na memória. Haverá O(b
dÿ1 d
a complexidade do espaço é O(b ) nós no conjunto explorado e O(b ) nós na fronteira, então ), ou
d
uma busca em árvore não seja, é dominado pelo tamanho da fronteira. Mudando para
economizaria muito espaço, e em um espaço de estado com muitos caminhos redundantes poderia custar muito
tempo.
d
Um limite de complexidade exponencial como O(b ) é assustador. A Figura 3.13 mostra o porquê.
Ele lista o tempo e a memória necessários para uma pesquisa em largura com fator de ramificação b = 10, para
vários valores da profundidade da solução d. A tabela assume que 100.000 nós podem ser gerados por segundo
e que um nó requer 1.000 bytes de armazenamento. Muitos problemas de pesquisa se encaixam aproximadamente
nessas suposições (mais ou menos um fator de 100) quando executados em um computador pessoal moderno.
Figura 3.13 Requisitos de tempo e memória para busca em largura. Os números mostrados assumem fator de
ramificação b = 10; 100.000 nós/segundo; 1000 bytes/nó.
Há duas lições a serem aprendidas da Figura 3.13. Primeiro, os requisitos de memória são um problema
maior para a busca em largura do que o tempo de execução. 31 horas não seria muito tempo para esperar a
solução de um problema importante de profundidade 10, mas poucos computadores têm os 10 terabytes de
memória principal necessários. Felizmente, existem outras estratégias de pesquisa que requerem menos
memória.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
Figura 3.14 Pesquisa de custo uniforme em um grafo. O algoritmo é idêntico ao algoritmo geral de busca em grafos
da Figura 3.7, exceto pelo uso de uma fila de prioridade e pela adição de uma verificação extra caso um caminho
mais curto seja descoberto para um estado de fronteira. A estrutura de dados explorada precisa suportar testes
de associação eficientes, portanto, deve combinar os recursos de uma fila de prioridade e uma tabela de hash.
A segunda lição é que os requisitos de tempo ainda são um fator importante. Se o seu problema tiver uma solução
na profundidade 16, então (dadas as nossas suposições) levará cerca de 3.500 anos para uma pesquisa em largura (ou
mesmo qualquer pesquisa desinformada) para encontrá-lo. Em geral, os problemas de busca de complexidade
exponencial não podem ser resolvidos por métodos desinformados, exceto para instâncias menores.
A busca em largura é ótima quando todos os custos de passo são iguais, porque sempre expande o nó não expandido
mais raso . Por uma extensão simples, podemos encontrar um algoritmo ótimo com qualquer função de custo de passo.
CUSTO UNIFORME
PROCURAR
Em vez de expandir o nó mais raso, a busca de custo uniforme expande o nó n com o menor custo de caminho g(n).
Isso é feito armazenando a fronteira como uma fila de prioridade ordenada por g. O algoritmo é mostrado na Figura 3.14.
Além da ordenação da fila pelo custo do caminho, há duas outras diferenças significativas em relação à busca
em largura. A primeira é que o teste de objetivo é aplicado a um nó quando ele é selecionado para expansão (como no
algoritmo de busca de grafo genérico mostrado na Figura 3.7) e não quando é gerado pela primeira vez. A razão é que o
primeiro nó objetivo gerado pode estar em um caminho abaixo do ideal. A segunda diferença é que um teste é adicionado
caso um caminho melhor seja encontrado para um nó atualmente na fronteira.
Ambas as modificações entram em jogo no exemplo mostrado na Figura 3.15, onde o problema é ir de Sibiu a
Bucareste. Os sucessores de Sibiu são Rimnicu Vilcea e Fagaras, com custos de 80 e 99 respectivamente. O nó de
menor custo, Rimnicu Vilcea, é expandido
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
Sibiu Fagaras
99
80
Rimnicu Vilcea
211
Pitesti
97
101
Bucareste
Figura 3.15 Uma parte do espaço de estados da Romênia, selecionada para ilustrar a busca de custo uniforme.
em seguida, adicionando Pitesti com custo 80+97 = 177. O nó de menor custo agora é Fagaras, então ele é
expandido, adicionando Bucareste com custo 99+211 = 310. Agora um nó objetivo foi gerado, mas a busca de
custo uniforme continua indo, escolhendo Pitesti para expansão e adicionando um segundo caminho para Bucareste
com custo 80+97+101 = 278. Agora o algoritmo verifica se esse novo caminho é melhor que o antigo; é, então o
antigo é descartado. Bucareste, agora com g-cost 278, é selecionada para expansão e a solução é devolvida.
É fácil ver que a busca de custo uniforme é ótima em geral. Primeiro, observamos que sempre que a busca
de custo uniforme seleciona um nó n para expansão, o caminho ótimo para esse nó foi encontrado. (Se não fosse
ÿ
esse o caso, teria que haver outro nó de fronteira no caminho ótimo do nó inicial até n, pela propriedade de sobre
separação do grafo da Figura 3.9; por definição, n teria custo-g menor que n e teria foi selecionado primeiro.) Então,
ÿ
como os custos das etapas não são negativos, os caminhos nunca ficam mais curtos à medida que os nós são
adicionados. Esses dois fatos juntos implicam que a busca de custo uniforme expande os nós na ordem de seu
custo de caminho ótimo. Portanto, o primeiro nó objetivo selecionado para expansão deve ser a solução ótima.
A busca de custo uniforme não se preocupa com o número de passos que um caminho tem, mas apenas
com seu custo total. Portanto, ele ficará preso em um loop infinito se houver um caminho com uma sequência
infinita de ações de custo zero, por exemplo, uma sequência de ações NoOp.6 A completude é garantida desde
que o custo de cada etapa seja maior ou igual a alguma pequena constante positiva ÿ.
A busca de custo uniforme é guiada por custos de caminho ao invés de profundidades, então sua
complexidade não pode ser facilmente caracterizada em termos de b e d. Em vez disso, seja C ÿ o custo da solução
ótima e assuma que cada ação custa pelo menos ÿ. Então, a complexidade de tempo e espaço de pior caso do
d
algoritmo é O(b 1+ÿCÿ/ÿÿ ), que pode ser muito maior do que a busca b . Isso ocorre porque o custo uniforme
pode, e frequentemente o faz, explorar grandes árvores de pequenos passos antes de explorar caminhos
envolvendo grandes e passos talvez úteis. Quando todos os custos das etapas são iguais, b 1+ÿCÿ/ÿÿ é apenas b
d
d+1. Observe que isso é um pouco pior do que a complexidade b para busca em largura, porque a última aplica o
teste de objetivo a cada nó à medida que é gerado e, portanto, não expande os nós na profundidade d.
6
NoOp, ou “sem operação”, é o nome de uma instrução em linguagem assembly que não faz nada.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
A A A
B C B C B C
D E F G D E F G D E F G
A A A
B C B C C
D E F G D E F G E F G
OI JKLMNO EU
JKLMNO JKLMNO
A A
C B C C
E F G E F G F G
A A A
C C C
F G F G F G
Figura 3.16 Pesquisa em profundidade em uma árvore binária. A região inexplorada é mostrada em cinza claro.
Os nós explorados sem descendentes na fronteira são removidos da memória. Os nós na profundidade 3 não têm
sucessores e M é o único nó objetivo.
PROCURAR A busca em profundidade sempre expande o nó mais profundo na fronteira atual da árvore de busca.
O progresso da busca é ilustrado na Figura 3.16. A busca prossegue imediatamente para o nível mais profundo da árvore
de busca, onde os nós não possuem sucessores. À medida que esses nós são expandidos, eles são descartados da
fronteira, então a busca “volta” para o próximo nó mais profundo que ainda possui sucessores inexplorados.
O algoritmo de busca em profundidade é uma instância do algoritmo de busca em grafo da Figura 3.7; enquanto
a busca em largura usa uma fila FIFO, a busca em profundidade usa uma fila LIFO.
Uma fila LIFO significa que o nó gerado mais recentemente é escolhido para expansão. Este deve ser o nó não expandido
mais profundo, porque é um nó mais profundo que seu pai - que, por sua vez, era o nó não expandido mais profundo
quando foi selecionado.
Como alternativa à implementação do estilo GRAPH-SEARCH , é comum implementar a busca em profundidade
com uma função recursiva que chama a si mesma em cada um de seus filhos. (Um algoritmo recursivo de profundidade
incorporando um limite de profundidade é mostrado na Figura 3.17.)
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
Por motivos semelhantes, ambas as versões não são ideais. Por exemplo, na Figura 3.16, a primeira
busca em profundidade explorará toda a subárvore esquerda, mesmo que o nó C seja um nó objetivo. Se o nó J
também fosse um nó objetivo, a pesquisa em profundidade o retornaria como uma solução em vez de C, que
seria uma solução melhor; portanto, a busca em profundidade não é ideal.
A complexidade de tempo da busca em profundidade em grafos é limitada pelo tamanho do espaço de
estado (que pode ser infinito, é claro). Uma busca em árvore em profundidade, por outro lado, pode gerar todos
os nós O(b m) na árvore de busca, onde m é a profundidade máxima de qualquer nó; isso pode ser muito maior
do que o tamanho do espaço de estado. Observe que m em si pode ser muito maior que d (a profundidade da
solução mais rasa) e é infinito se a árvore for ilimitada.
Até agora, a busca em profundidade parece não ter nenhuma vantagem clara sobre a busca em largura,
então por que incluí-la? A razão é a complexidade do espaço. Para uma busca em grafo, não há vantagem, mas
uma busca em profundidade na árvore precisa armazenar apenas um único caminho da raiz até um nó folha,
junto com os nós irmãos não expandidos restantes para cada nó no caminho. Depois que um nó é expandido,
ele pode ser removido da memória assim que todos os seus descendentes forem totalmente explorados. (Veja a
Figura 3.16.) Para um espaço de estado com fator de ramificação b e profundidade máxima m, a busca em
profundidade requer o armazenamento de apenas O(bm) nós.
Usando as mesmas suposições da Figura 3.13 e supondo que os nós na mesma profundidade do nó objetivo
não tenham sucessores, descobrimos que a busca em profundidade exigiria 156 kilobytes em vez de 10 exabytes
na profundidade d = 16, um fator de 7 trilhões vezes menos espaço. Isso levou à adoção da busca em árvore
em profundidade como o burro de carga básico de muitas áreas da IA, incluindo satisfação de restrições (Capítulo
6), satisfatibilidade proposicional (Capítulo 7) e programação lógica (Capítulo 9). No restante deste capítulo,
vamos nos concentrar principalmente na versão de pesquisa em árvore da pesquisa em profundidade.
VOLTAR
PROCURAR
Uma variante da busca em profundidade chamada busca retroativa usa ainda menos memória. (Consulte
o Capítulo 6 para obter mais detalhes.) No retrocesso, apenas um sucessor é gerado por vez, em vez de todos
os sucessores; cada nó parcialmente expandido lembra qual sucessor gerar em seguida. Dessa forma, apenas
a memória O(m) é necessária em vez de O(bm). A pesquisa retroativa facilita ainda outro truque para economizar
memória (e economizar tempo): a ideia de gerar um sucessor modificando a descrição do estado atual
diretamente, em vez de copiá-lo primeiro. Isso reduz os requisitos de memória para apenas uma descrição de
estado e ações O(m) . Para que isso funcione, devemos ser capazes de desfazer cada modificação quando
voltarmos para gerar o próximo sucessor. Para problemas com grandes descrições de estado, como montagem
robótica, essas técnicas são críticas para o sucesso.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
Figura 3.17 Uma implementação recursiva de busca em árvore com profundidade limitada.
A falha embaraçosa da busca em profundidade em espaços de estado infinitos pode ser aliviada ao fornecer a busca em
profundidade com um limite de profundidade predeterminado ÿ. Ou seja, nós em profundidade ÿ são tratados como se não
PROFUNDIDADE LIMITADA
PROCURAR
tivessem sucessores. Essa abordagem é chamada de busca limitada em profundidade. O limite de profundidade resolve
o problema do caminho infinito. Infelizmente, também introduz uma fonte adicional de incompletude se escolhermos ÿ < d,
ou seja, o objetivo mais raso está além do limite de profundidade. (Isso não é improvável quando d é desconhecido.) A busca
limitada por profundidade também não será ótima se escolhermos ÿ > d. Sua complexidade de tempo é O(b primeira busca
ÿ
pode ser vista como um caso especial de busca limitada em ) e sua complexidade espacial é O(bÿ). Profundidade
profundidade com ÿ = ÿ.
Às vezes, os limites de profundidade podem ser baseados no conhecimento do problema. Por exemplo, no mapa da
Romênia existem 20 cidades. Portanto, sabemos que se houver uma solução, ela deve ter no máximo 19 comprimento,
então ÿ = 19 é uma escolha possível. Mas, na verdade, se estudássemos o mapa com cuidado, descobriríamos que qualquer
cidade pode ser alcançada a partir de qualquer outra cidade em no máximo 9 passos. Esse número, conhecido como o
DIÂMETRO diâmetro do espaço de estado, nos dá um melhor limite de profundidade, o que leva a uma busca limitada por profundidade
mais eficiente. Para a maioria dos problemas, no entanto, não saberemos um bom limite de profundidade até que tenhamos
resolvido o problema.
A busca limitada por profundidade pode ser implementada como uma modificação simples na árvore geral ou
algoritmo de busca em grafos. Alternativamente, pode ser implementado como um algoritmo recursivo simples, conforme
mostrado na Figura 3.17. Observe que a pesquisa limitada em profundidade pode terminar com dois tipos de falha: o valor
de falha padrão indica nenhuma solução; o valor de corte indica nenhuma solução dentro do limite de profundidade.
ITERATIVO
PESQUISA APROFUNDADA
A busca iterativa de aprofundamento (ou busca iterativa de aprofundamento em profundidade) é uma estratégia geral,
frequentemente usada em combinação com a busca em árvore de profundidade, que encontra o melhor limite de profundidade. faz
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
isso aumentando gradualmente o limite - primeiro 0, depois 1, depois 2 e assim por diante - até que um objetivo seja encontrado.
Isso ocorrerá quando o limite de profundidade atingir d, a profundidade do nó objetivo mais raso. O algoritmo é
mostrado na Figura 3.18. O aprofundamento iterativo combina os benefícios da pesquisa em profundidade e em
largura. Como a pesquisa em profundidade, seus requisitos de memória são muito modestos: O(bd) para ser
mais preciso. Assim como a busca em largura, ela é completa quando o fator de ramificação é finito e ótima
quando o custo do caminho é uma função não decrescente da profundidade do nó.
A Figura 3.19 mostra quatro iterações de ITERATIVE-DEEPENING-SEARCH em uma árvore de busca binária,
onde a solução é encontrada na quarta iteração.
A pesquisa de aprofundamento iterativo pode parecer um desperdício, porque os estados são gerados
várias vezes. Acontece que isso não é muito caro. A razão é que em uma árvore de busca com o mesmo (ou
quase o mesmo) fator de ramificação em cada nível, a maioria dos nós está no nível inferior, então não importa
muito que os níveis superiores sejam gerados múltiplas vezes. Em uma busca iterativa de aprofundamento, os
nós do nível inferior (profundidade d) são gerados uma vez, os do próximo ao nível inferior são gerados duas
vezes, e assim por diante, até os filhos da raiz, que são gerados d vezes. Portanto, o número total de nós
gerados no pior caso é
2 d
N(IDS) = (d)b + (d ÿ 1)b + · · · + (1)b ,
o que dá uma complexidade de tempo de O(b d )—assintoticamente o mesmo que a busca em largura.
Há algum custo extra para gerar os níveis superiores várias vezes, mas não é grande. Por exemplo, se b = 10 e
d = 5, os números são
N(IDS) = 50 + 400 + 3, 000 + 20, 000 + 100, 000 = 123, 450 N(BFS) = 10 + 100
Em geral, o aprofundamento iterativo é o método de busca desinformado preferido quando há um grande espaço
de busca e a profundidade da solução não é conhecida.
A busca de aprofundamento iterativo é análoga à busca em largura, pois explora uma camada completa
de novos nós em cada iteração antes de passar para a próxima camada. Parece valer a pena desenvolver um
analógico iterativo para a busca de custo uniforme, herdando as garantias de otimalidade do último algoritmo
enquanto evita seus requisitos de memória. A ideia é usar limites de custo de caminho crescentes em vez de
limites de profundidade crescentes. O algoritmo resultante, chamado de busca de alongamento iterativo, é
ITERATIVO
ALONGAMENTO explorado no Exercício 3.24. Acontece, infelizmente, que o alongamento iterativo incorre em sobrecarga
PROCURAR
Figura 3.18 O algoritmo de busca de aprofundamento iterativo, que aplica repetidamente a busca de profundidade
limitada com limites crescentes. Ele termina quando uma solução é encontrada ou se a busca limitada por
profundidade retornar uma falha, significando que não existe solução.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
A A
Limite = 0
A A A
Limite = 1 A
B C B C B C B C
A A A A
Limite = 2
B C B C B C B C
D E F G D E F G D E F G D E F G
A A A A
B C B C B C B C
D E F G D E F G D E F G D E F G
A A A A
Limite = 3
B C B C B C B C
D E F G D E F G D E F G D E F G
A A A A
B C B C B C B C
D E F G D E F G D E F G D E F G
A A A A
B C B C B C B C
D E F G D E F G D E F G D E F G
Figura 3.19 Quatro iterações de busca de aprofundamento iterativo em uma árvore binária.
A ideia por trás da pesquisa bidirecional é executar duas pesquisas simultâneas - uma para frente de
o estado inicial e o outro para trás do objetivo - parando quando as duas buscas se encontram no
meio (Figura 3.20). A motivação é que b d/2 + b d/2 é muito menor que a figura b , a d ou no
,
área dos dois pequenos círculos é menor que a área de um grande círculo centrado no início e
alcançando o objetivo.
A busca bidirecional é implementada substituindo o teste de objetivo por uma verificação para
ver se as fronteiras das duas buscas se cruzam; se o fizerem, uma solução foi encontrada. A
verificação pode ser feita quando cada nó é gerado ou selecionado para expansão e, com uma
tabela de hash, a verificação levará um tempo constante. Por exemplo, se um problema tem
profundidade de solução d = 6, e cada direção executa a busca em largura um nó por vez, então, no pior caso, os d
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
Começar Meta
Figura 3.20 Uma visão esquemática de uma busca bidirecional que está prestes a ser bem-sucedida,
quando uma ramificação do nó inicial encontra uma ramificação do nó objetivo.
as buscas se encontram quando geraram todos os nós na profundidade 3. Para b = 10, isso significa um total de
2.220 gerações de nós, em comparação com 1.111.110 para uma busca padrão em largura.
Assim, a complexidade de tempo da busca bidirecional usando buscas em largura em ambas as direções é O(b
d/2 ). A complexidade do espaço também é O(b d/2 ). Podemos reduzir isso pela metade se uma das duas buscas
for feita usando aprofundamento iterativo, mas pelo menos uma das fronteiras deve ser mantida na memória para
que a verificação da interseção possa ser feita. Esse requisito de espaço é a fraqueza mais significativa da pesquisa
bidirecional. O algoritmo é completo e ótimo (para custos de passos uniformes) se ambas as buscas forem em
largura; outras combinações podem sacrificar a completude, a otimização ou ambas.
A redução na complexidade do tempo torna a busca bidirecional atrativa, mas como buscamos de trás para
PREDECESSORES frente? Isso não é tão fácil quanto parece. Sejam os predecessores de um estado x todos os estados que têm x
como sucessor. A pesquisa bidirecional requer um método para calcular os predecessores. O caso mais fácil é
quando todas as ações no espaço de estado são reversíveis, de modo que os predecessores de x são os mesmos
que seus sucessores. Outros casos podem exigir engenhosidade substancial.
Considere a questão do que queremos dizer com “o objetivo” ao pesquisar “para trás do objetivo”. Para o
quebra-cabeça de 8 e para encontrar uma rota na Romênia, há apenas um estado objetivo, então a busca
regressiva é muito parecida com a busca direta. Se houver vários estados de objetivo explicitamente listados - por
exemplo, os dois estados de objetivo sem sujeira na Figura 3.3 - então podemos construir um novo estado de
objetivo fictício cujos predecessores imediatos são todos os estados de objetivo reais. Como alternativa, algumas
gerações de nós redundantes podem ser evitadas visualizando o conjunto de estados de objetivo como um único
estado, cada um dos quais predecessores também é um conjunto de estados—especificamente, o conjunto de
estados tendo um sucessor correspondente no conjunto de estados de objetivo. (Consulte também a Seção 4.3.)
O caso mais difícil para busca bidirecional é quando o teste de objetivo fornece apenas uma descrição
implícita de algum conjunto possivelmente grande de estados de objetivo – por exemplo, todos os estados que são
soluções para o problema das n-rainhas . Uma busca regressiva precisaria construir descrições compactas de
“todos os estados que estão a uma rainha de serem soluções” e assim por diante; e essas descrições teriam que
ser testadas contra os estados gerados pela busca direta. Não há uma maneira geral de fazer isso com eficiência.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
A Figura 3.21 compara as estratégias de busca em termos dos quatro critérios de avaliação estabelecidos na Seção
3.4. Esta comparação é para versões de pesquisa em árvore. Para buscas em grafos, as principais diferenças são
que a busca em profundidade é completa para espaços de estado finitos e que as complexidades de espaço e
tempo são limitadas pelo tamanho do espaço de estado.
Figura 3.21 Avaliação das estratégias de busca em árvore. b é o fator de ramificação; d é a profundidade da solução
mais rasa; m é a profundidade máxima da árvore de busca; l é o limite de profundidade.
b
As advertências sobrescritas são as seguintes: a completo se b for finito; complete se o passo custar ÿ ÿ para ÿ positivo;
d
c ótimo se os custos das etapas forem todos idênticos; se ambas as direções usarem a busca em largura.
PESQUISA INFORMADA Esta seção mostra como uma estratégia de pesquisa informada – que usa o conhecimento específico do
problema além da definição do problema em si – pode encontrar soluções com mais eficiência do que uma estratégia
desinformada.
MELHOR-PRIMEIRA PESQUISA A abordagem geral que consideraremos é chamada de pesquisa do melhor primeiro. A busca do melhor
primeiro é uma instância do algoritmo geral TREE-SEARCH ou GRAPH-SEARCH em que um nó é selecionado para
AVALIAÇÃO
FUNÇÃO
expansão com base em uma função de avaliação, f(n). A função de avaliação é interpretada como uma estimativa
de custo, então o nó com a avaliação mais baixa é expandido primeiro. A implementação da busca do melhor
primeiro é idêntica à da busca de custo uniforme (Figura 3.14), exceto pelo uso de f em vez de g para ordenar a fila
de prioridade.
A escolha de f determina a estratégia de busca. (Na verdade, como mostra o Exercício 3.33, a melhor
primeira busca inclui largura primeiro, profundidade primeiro e busca de custo uniforme como casos especiais.) A
HEURÍSTICA
FUNÇÃO
maioria dos algoritmos de melhor primeiro inclui como um componente de f uma função heurística , denotada h ( n ):
h(n) = custo estimado do caminho mais barato do estado no nó n para um estado objetivo.
(Observe que h(n) toma um nó como entrada, mas, ao contrário de g(n), depende apenas do estado naquele nó.)
Por exemplo, na Romênia, pode-se estimar o custo do caminho mais barato de Arad para Bucareste em linha reta
distância de Arad a Bucareste.
As funções heurísticas são a forma mais comum na qual o conhecimento adicional do problema é transmitido
ao algoritmo de busca. Estudaremos as heurísticas com mais profundidade na Seção 3.6. Por enquanto, vamos
considerá-los arbitrários, não negativos, específicos do problema.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
funções, com uma restrição: se n é um nó objetivo, então h(n) = 0. O restante desta seção abrange duas
maneiras de usar informações heurísticas para guiar a pesquisa.
GREEDY MELHOR-PRIMEIRO
PROCURAR
Greedy best-first search7 tenta expandir o nó que está mais próximo do objetivo, alegando que isso
provavelmente levará a uma solução rapidamente. Assim, avalia os nós usando apenas a função heurística: f(n)
= h(n).
Vamos ver como isso funciona para problemas de localização de rotas na Romênia, usando a heurística
LINHA RETA
DISTÂNCIA
de distância em linha reta , que chamaremos de hSLD . Se o objetivo for Bucareste, precisaremos saber
as distâncias em linha reta até Bucareste, que são mostradas na Figura 3.22. Por exemplo, hSLD (In(Arad)) =
366. Observe que os valores de hSLD não podem ser calculados a partir da própria descrição do problema.
Além disso, é necessário um certo nível de experiência para saber que hSLD está correlacionado com distâncias
rodoviárias reais e é, portanto, uma heurística útil.
A Figura 3.23 mostra o progresso de uma busca gulosa do melhor primeiro usando hSLD para encontrar
um caminho de Arad a Bucareste. O primeiro nó a ser expandido de Arad será Sibiu, porque está mais perto de
Bucareste do que Zerind ou Timisoara. O próximo nó a ser expandido será Fagaras, por ser o mais próximo.
Fagaras, por sua vez, gera Bucareste, que é o objetivo.
Para este problema específico, a busca gulosa do melhor primeiro usando hSLD encontra uma solução sem
nunca expandir um nó que não esteja no caminho da solução; portanto, seu custo de pesquisa é mínimo. Não é
ideal, no entanto: o caminho via Sibiu e Fagaras para Bucareste é 32 quilômetros mais longo do que o caminho
através de Rimnicu Vilcea e Pitesti. Isso mostra por que o algoritmo é chamado de “ganancioso” – a cada passo
ele tenta chegar o mais próximo possível do objetivo.
A busca gananciosa do melhor primeiro em árvore também é incompleta mesmo em um espaço de estado
finito, muito parecido com a busca em profundidade. Considere o problema de ir de Iasi a Fagaras. A heurística
sugere que Neamt seja expandido primeiro, por ser o mais próximo de Fagaras, mas é um beco sem saída. A
solução é ir primeiro para Vaslui - um passo que está realmente mais longe do objetivo de acordo com a
heurística - e depois continuar para Urziceni, Bucareste e Fagaras. O algoritmo nunca encontrará essa solução,
no entanto, porque a expansão de Neamt coloca Iasi de volta na fronteira,
7 Nossa primeira edição chamou essa busca gananciosa; outros autores chamaram isso de pesquisa do melhor primeiro.
Nosso uso mais geral do último termo segue Pearl (1984).
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
Sibiu Bucareste
253 0
Figura 3.23 Estágios em uma busca gulosa da melhor primeira árvore para Bucareste usando a heurística
de distância em linha reta hSLD . Os nós são rotulados com seus valores h.
Iasi está mais perto de Fagaras do que Vaslui, e assim Iasi será expandido novamente, levando a um loop
infinito. (A versão de busca do grafo é completa em espaços finitos, mas não em espaços infinitos.) A
complexidade de tempo e espaço de pior caso para a versão em árvore é O(b m), onde m é a profundidade
máxima do espaço de busca. Com uma boa função heurística, no entanto, a complexidade pode ser reduzida
substancialmente. O valor da redução depende do problema particular e da qualidade da heurística.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
para ir do nó ao objetivo:
Como g(n) fornece o custo do caminho do nó inicial ao nó n, e h(n) é o custo estimado do caminho mais barato
de n até o objetivo, temos f(n) = custo estimado da solução
Assim, se estivermos tentando encontrar a solução mais barata, é razoável tentar primeiro o nó com o menor
valor de g(n) + h(n). Acontece que essa estratégia é mais do que razoável: desde que a função heurística h(n)
satisfaça certas condições, a busca Aÿ é completa e ótima. O algoritmo é idêntico ao UNIFORM-COST-SEARCH
exceto que Aÿ usa g + h ao invés de g.
ÿ
).
TRIÂNGULO
DESIGUALDADE
Esta é uma forma da desigualdade triangular geral, que estipula que cada lado de um triângulo não pode ser
ÿ
maior que a soma dos outros dois lados. Aqui, o triângulo é formado por n, n e a meta Gn mais próxima de n. ,
Para uma heurística admissível, a desigualdade faz todo o sentido: isso era mais barato que h(n), isso violaria a
ÿ
que h(n) é um limite inferior no custo para chegar propriedade se houvesse uma rota de n para Gn via n em
Gn.
É bastante fácil mostrar (Exercício 3.37) que toda heurística consistente também é admissível.
A consistência é, portanto, um requisito mais rigoroso do que a admissibilidade, mas é preciso trabalhar muito
para inventar heurísticas que sejam admissíveis, mas não consistentes. Todas as heurísticas admissíveis que
discutimos neste capítulo também são consistentes. Considere, por exemplo, hSLD . Nós sabemos isso
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
646=280+366 671=291+380
646=280+366 671=291+380
Figura 3.24 Etapas de uma pesquisa Aÿ para Bucareste. Os nós são rotulados com f = g + h. Os valores de h são
as distâncias em linha reta para Bucareste tiradas da Figura 3.22.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
a desigualdade triangular geral é satisfeita quando cada lado medido pela linha reta não é maior que c(n, a, n' ).
ÿ
linha reta entre n e n Portanto, hSLD é uma heurística consistente. distância, e que a distância em
Otimalidade de A*
O próximo passo é provar que sempre que Aÿ seleciona um nó n para expansão, o caminho ótimo para esse nó
foi encontrado. Se não fosse esse o caso, teria que haver outro nó de fronteira n no caminho ideal do nó inicial
para n, pela
ÿ
propriedade de separação do gráfico de teria menor custo f do que n
ÿ
Figura 3.9; porque f é não decrescente ao longo de qualquer caminho,
n e teria sido selecionado primeiro.
Das duas observações anteriores, segue-se que a sequência de nós expandidos por Aÿ usando GRAPH-
SEARCH está em ordem não decrescente de f(n). Portanto, o primeiro nó de objetivo selecionado para expansão
deve ser uma solução ótima, porque f é o custo real para os nós de objetivo (que têm h = 0) e todos os nós de
objetivo posteriores serão pelo menos tão caros.
O fato de os f-custos não serem decrescentes ao longo de qualquer caminho também significa que
CONTORNOS podemos desenhar contornos no espaço de estados, exatamente como os contornos em um mapa topográfico.
A Figura 3.25 mostra um exemplo. Dentro do contorno rotulado como 400, todos os nós têm f(n) menor ou igual
a 400 e assim por diante. Então, como Aÿ expande o nó de fronteira de custo f mais baixo, podemos ver que
A ÿ uma busca se espalha a partir do nó inicial, adicionando nós em bandas concêntricas de custo f crescente.
Com busca de custo uniforme ( busca Aÿ usando h(n) = 0), as bandas serão “circulares” em torno do estado
inicial. Com heurísticas mais precisas, as bandas se estenderão em direção ao estado objetivo e se tornarão
mais estreitamente focadas em torno do caminho ideal. Se C * é o custo do caminho da solução ótima, podemos
dizer o seguinte:
•A ÿ
expande todos os nós com f(n) < Cÿ . pode
•A ÿ
então expandir alguns dos nós diretamente no “contorno do objetivo” (onde f(n) = C ÿ )
antes de selecionar um nó objetivo.
A completude requer que haja apenas um número finito de nós com custo menor ou igual a
C * , uma condição que é verdadeira se todos os custos da etapa excederem algum ÿ finito e se b for finito.
Observe que Aÿ não expande nenhum nó com f(n) > Cÿ — por exemplo, Timisoara não é expandido na
Figura 3.24, embora seja filho da raiz. Dizemos que a subárvore abaixo de Timisoara é podada; porque hSLD é
PODA admissível, o algoritmo pode ignorar com segurança esta subárvore
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
N
Z
A EU
380 S
F
V
400
T R
eu
P
H
M você
B
420
D
E
C
G
Figura 3.25 Mapa da Romênia mostrando contornos em f = 380, f = 400 ef = 420, com Arad como estado inicial.
Os nós dentro de um determinado contorno têm custos-f menores ou iguais ao valor do contorno.
enquanto ainda garante a otimização. O conceito de poda – eliminar possibilidades de consideração sem ter que
examiná-las – é importante para muitas áreas da IA.
Uma observação final é que entre os algoritmos ótimos desse tipo – algoritmos que estendem os caminhos
de busca da raiz e usam a mesma informação heurística – Aÿ é otimamente eficiente para qualquer função
OTIMAMENTE
EFICIENTE heurística dada. Ou seja, nenhum outro algoritmo ótimo é garantido para expandir menos nós do que Aÿ (exceto
possivelmente por desempate entre nós com f(n) = C ÿ ). Isso ocorre porque qualquer algoritmo que não expanda
todos os nós com f(n) < Cÿ corre o risco de perder a solução ótima.
Que a busca Aÿ seja completa, ótima e otimamente eficiente entre todos esses algoritmos é bastante
satisfatório. Infelizmente, isso não significa que A* seja a resposta para todas as nossas necessidades de busca.
O problema é que, para a maioria dos problemas, o número de estados dentro do espaço de busca do contorno
objetivo ainda é exponencial no comprimento da solução. Os detalhes da análise estão além do escopo deste
livro, mas os resultados básicos são os seguintes. Para problemas com custos de passos constantes, o
ERRO ABSOLUTO
crescimento do tempo de execução é analisado em termos do erro absoluto ou do erro relativo da heurística.
ÿ
ERRO RELATIVO
O erro absoluto é definido como ÿ ÿ h ÿÿh, onde h é o custo real de ir da raiz ao objetivo, e o erro relativo é
definido como ÿ ÿ (h ÿ ÿ h)/hÿ . Para um espaço de estados que é uma árvore, a complexidade temporal de Aÿ é
exponencial no erro absoluto, ou seja, O(b ÿ). Para custos de etapa constantes, podemos escrever isso como
O(b ÿd), onde d é a profundidade da solução.
Para quase todas as heurísticas em uso prático, o erro absoluto é pelo menos proporcional ao custo do caminho
h
ÿ
, então ÿ é constante ou crescente e a complexidade de tempo é exponencial em d. nós podemos ),
d
veja também o efeito de uma heurística mais precisa: O(b ÿd) = fator O((b então a ramificação efetiva
ÿ ) (definido mais formalmente na próxima seção) é b ÿ .
No caso geral de um gráfico, a situação é ainda pior: pode haver exponencialmente
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
muitos estados com f(n) < Cÿ mesmo se o erro absoluto for limitado por uma constante. Por exemplo, considere
uma versão simplificada do mundo do aspirador onde o agente pode limpar qualquer quadrado por custo unitário
sem precisar visitá-lo: nesse caso, os quadrados podem ser limpos em qualquer ordem.
N
Com N quadrados inicialmente sujos, existem 2 estados em que algum subconjunto foi limpo e todos eles estão
em um caminho de solução ótima - e, portanto, satisfazem f(n) < Cÿ mesmo que a heurística tenha um erro de 1.
A complexidade de Aÿ muitas vezes torna impraticável insistir em encontrar uma solução ótima.
Pode-se usar variantes de Aÿ que encontram soluções abaixo do ideal rapidamente, ou pode-se, às vezes,
projetar heurísticas mais precisas, mas não estritamente admissíveis. De qualquer forma, o uso de uma boa
heurística ainda proporciona uma enorme economia em relação ao uso de uma busca desinformada.
Na Seção 3.6, veremos a questão de projetar boas heurísticas.
O tempo de computação não é, no entanto, a principal desvantagem de Aÿ . Como ele mantém todos os
nós gerados na memória (como fazem todos os algoritmos GRAPH-SEARCH ), A* geralmente fica sem espaço
muito antes de ficar sem tempo. Por esta razão, Aÿ não é prático para muitos problemas de larga escala.
Algoritmos desenvolvidos recentemente superaram o problema de espaço sem sacrificar a otimalidade ou
completude, com um pequeno custo no tempo de execução. Discutiremos isso a seguir.
A maneira mais simples de reduzir os requisitos de memória para Aÿ é adaptar a ideia de aprofundamento
ITERATIVO
APROFUNDAMENTO
ÿ
iterativo ao contexto de busca heurística, resultando no algoritmo Aÿ (IDAÿ ) de aprofundamento iterativo . A
A
principal diferença entre o IDAÿ e o aprofundamento iterativo padrão é que o corte usado é o custo-f (g +h) em
vez da profundidade; a cada iteração, o valor de corte é o menor f-custo de qualquer nó que excedeu o corte na
iteração anterior. IDA* é prático para muitos problemas com custos unitários de etapa e evita a sobrecarga
substancial associada à manutenção de uma fila ordenada de nós. Infelizmente, ela sofre das mesmas
dificuldades com custos reais avaliados como a versão iterativa da busca de custo uniforme descrita no
Exercício 3.24.
Esta seção examina brevemente dois algoritmos limitados por memória mais recentes, chamados RBFS e MAÿ
.
RECURSIVO
MELHOR-PRIMEIRA PESQUISA A busca recursiva do melhor primeiro (RBFS) é um algoritmo recursivo simples que tenta imitar a
operação da busca padrão do melhor primeiro lugar, mas usando apenas o espaço linear. O algoritmo é mostrado
na Figura 3.26. Sua estrutura é semelhante à de uma pesquisa recursiva em profundidade, mas em vez de
continuar indefinidamente no caminho atual, ele usa a variável f limite para acompanhar o valor f do melhor
caminho alternativo disponível de qualquer ancestral do atual nó. Se o nó atual exceder esse limite, a recursão
desenrola de volta para o caminho alternativo. À medida que a recursão se desenrola, RBFS substitui o valor f
de cada nó ao longo do caminho BACKED-UP VALUE pelo valor de backup - o melhor valor f de seus filhos.
Dessa forma, o RBFS lembra o valor f da melhor folha na subárvore esquecida e pode, portanto, decidir se vale a pena reexpandir
a subárvore em algum momento posterior. A Figura 3.27 mostra como o RBFS chega a Bucareste. mas ainda
sofre de excesso de nó re
RBFS é um pouco mais eficiente que IDA* ,
geração. No exemplo da Figura 3.27, RBFS primeiro segue o caminho via Rimnicu Vilcea, então “muda de ideia”
e tenta Fagaras, e então muda de ideia novamente. Essas mudanças mentais ocorrem porque toda vez que o
melhor caminho atual é estendido, há uma boa chance
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
a função RBFS(problem, node,f limit) retorna uma solução ou falha e um novo limite de custo f
se problem.GOAL-TEST(node.STATE) então retorne SOLUTION(node)
sucessores ÿ[ ]
para cada ação em problem.ACTIONS(node.STATE) faça
adicione CHILD-NODE(problema, nó, ação) em sucessores se
os sucessores estiverem vazios então retorne a
falha, ÿ para cada s nos sucessores faça /* atualize f com o valor da pesquisa anterior,
se houver */ sf ÿ max(sg + sh,
node.f ))
loop faz o melhor ÿ o nó de menor valor f nos
sucessores se melhor.f > f limite então retorna
falha, melhor.f alternativa ÿo segundo menor valor f entre os
sucessores resulta, melhor.f ÿ RBFS( problema, melhor, min(f
limite, alternativa)) se resultado = falha, então retorne o resultado
que seu valor f aumentará - h geralmente é menos otimista para nós mais próximos do objetivo. Quando isso
acontece, particularmente em grandes espaços de busca, o segundo melhor caminho pode se tornar o melhor
caminho, então a busca tem que retroceder para segui-lo. Cada mudança de mentalidade corresponde a uma
iteração do
, IDAÿ e pode exigir muitas reexpansões de nós esquecidos para recriar o melhor caminho e estendê-
lo em mais um nó.
Como a busca em árvore Aÿ , RBFS é um algoritmo ótimo se a função heurística h(n) for admissível. Sua
complexidade espacial é linear na profundidade da solução ótima mais profunda, mas sua complexidade temporal
é bastante difícil de caracterizar: depende tanto da precisão da função heurística quanto da frequência com que
o melhor caminho muda à medida que os nós são expandidos.
IDA* e RBFS sofrem por usar pouca memória. Entre iterações, IDAÿ retém apenas um único número: o
limite de custo-f atual. O RBFS retém mais informações na memória, mas usa apenas espaço linear: mesmo que
houvesse mais memória disponível, o RBFS não tem como fazer uso dela. Como eles esquecem a maior parte
do que fizeram, ambos os algoritmos podem acabar reexpandindo os mesmos estados várias vezes. Além disso,
eles sofrem o aumento potencialmente exponencial da complexidade associada a caminhos redundantes em
grafos (consulte a Seção 3.3).
Parece sensato, portanto, usar toda a memória disponível. Dois algoritmos que fazem isso que
AM* são MAÿ ( Aÿ limitado pela memória ) e SMAÿ (MAÿ simplificado ). Descreveremos que o SMAÿ é - bem ,
SMA* - mais simples. SMAÿ procede exatamente como Aÿ , expandindo a melhor folha até que a memória fique cheia.
Nesse ponto, ele não pode adicionar um novo nó à árvore de pesquisa sem descartar o antigo. SMAÿ sempre
descarta o pior nó folha—aquele com o valor f mais alto. Como o RBFS, o SMAÿ faz o backup do valor do nó
esquecido para seu pai. Desta forma, o ancestral de uma subárvore esquecida conhece a qualidade do melhor
caminho naquela subárvore. Com esta informação, o SMAÿ regenera a subárvore apenas quando todos os
outros caminhos tiverem mostrado uma aparência pior do que
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
447
Sibiu Timisoara Zerind
393
447 449
415
Arad Fagaras Oradea Rimnicu Vilcea
413
646 415 671
Arad
e expandir Fagaras 366
447
Sibiu Timisoara Zerind
393 449
447
417
Arad Fagaras Oradea Rimnicu Vilcea
646 415 671 413 417
Sibiu Bucareste
591 450
447
Sibiu Timisoara Zerind
393 447 449
447
Arad Fagaras Oradea Rimnicu Vilcea
417
646 415 450 671
447
Craiova Pitesti Sibiu
526 417 553
Figura 3.27 Etapas em uma busca RBFS para a rota mais curta para Bucareste. O valor do limite f para cada
chamada recursiva é mostrado no topo de cada nó atual e cada nó é rotulado com seu custo f. (a) O caminho via
Rimnicu Vilcea é percorrido até que a melhor folha atual (Pitesti) tenha um valor pior que o melhor caminho
alternativo (Fagaras). (b) A recursão desenrola e o melhor valor de folha da subárvore esquecida (417) é copiado
para Rimnicu Vilcea; então Fagaras é expandido, revelando um melhor valor de folha de 450. (c) A recursão
desenrola e o melhor valor de folha da subárvore esquecida (450) é copiado para Fagaras; então Rimnicu Vilcea é
expandido. Desta vez, porque o melhor caminho alternativo (através de Timisoara) custa pelo menos 447, a
expansão continua até Bucareste.
o caminho que esqueceu. Outra maneira de dizer isso é que, se todos os descendentes de um nó n forem
esquecidos, não saberemos para onde ir a partir de n, mas ainda teremos uma ideia de como vale a pena ir a
qualquer lugar de n.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
O algoritmo completo é muito complicado de reproduzir aqui,8 mas há uma sutileza que vale a pena
mencionar. Dissemos que o SMAÿ expande a melhor folha e exclui a pior folha. E se todos os nós folha tiverem
o mesmo valor f? Para evitar selecionar o mesmo nó para exclusão e expansão, o SMAÿ expande a melhor folha
mais recente e exclui a pior folha mais antiga . Estes coincidem quando há apenas uma folha, mas, nesse caso,
a árvore de busca atual deve ser um único caminho da raiz à folha que preenche toda a memória. Se a folha não
for um nó objetivo, mesmo que esteja em um caminho de solução ideal, essa solução não será alcançável com a
memória disponível. Portanto, o nó pode ser descartado exatamente como se não tivesse sucessores.
Apresentamos várias estratégias fixas — primeiro em largura, melhor primeiro, ganancioso e assim por diante —
que foram projetadas por cientistas da computação. Um agente poderia aprender a pesquisar melhor? A resposta
ESTADO DE NÍVEL METÁLICO
ESPAÇO
é sim, e o método se baseia em um conceito importante chamado espaço de estado de metanível.
Cada estado em um espaço de estado de nível de meta captura o estado interno (computacional) de um programa
ESTADO DE NÍVEL DE OBJETO
ESPAÇO
que está procurando em um espaço de estado de nível de objeto, como a Romênia. Por exemplo, o estado
interno do algoritmo Aÿ consiste na árvore de busca atual. Cada ação no espaço de estado metalevel é uma
etapa de computação que altera o estado interno; por exemplo, cada passo computacional em Aÿ expande um
nó folha e adiciona seus sucessores à árvore. Assim, a Figura 3.24, que mostra uma sequência de árvores de
busca cada vez maiores, pode ser vista como uma representação de um caminho no espaço de estados de
metanível, onde cada estado no caminho é uma árvore de busca em nível de objeto.
Agora, o caminho na Figura 3.24 tem cinco etapas, incluindo uma etapa, a expansão de Fagaras, que não
é especialmente útil. Para problemas mais difíceis, haverá muitos desses erros, e um algoritmo de aprendizado
NÍVEL METÁLICO
APRENDIZADO
de metanível pode aprender com essas experiências para evitar a exploração de subárvores pouco promissoras.
As técnicas usadas para esse tipo de aprendizado são descritas no Capítulo 21. O objetivo do aprendizado é
minimizar o custo total da solução de problemas, compensando o gasto computacional e o custo do caminho.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Nesta seção, veremos as heurísticas para o quebra-cabeça de 8 peças, a fim de esclarecer a natureza das heurísticas em
geral.
O quebra-cabeça de 8 foi um dos primeiros problemas de busca heurística. Conforme mencionado na Seção 3.2,
o objetivo do quebra-cabeça é deslizar as peças horizontal ou verticalmente no espaço vazio até que a configuração
corresponda à configuração do objetivo (Figura 3.28).
7 2 4 1 2
5 6 3 4 5
8 3 1 6 7 8
Figura 3.28 Uma instância típica do quebra-cabeça de 8 peças. A solução tem 26 passos.
O custo médio da solução para uma instância de 8 quebra-cabeças gerada aleatoriamente é de cerca de 22 etapas.
O fator de ramificação é de cerca de 3. (Quando o ladrilho vazio está no meio, há quatro movimentos possíveis; quando
está em um canto, há dois; e quando está ao longo de uma borda, há três.) Isso ÿ 3,1 × 1010 estados. significa que uma
árvore até a profundidade 22 olharia para cerca de 3. Uma pesquisa em gráfico reduziria isso 22 pesquisa exaustiva em
em um fator de cerca de 170.000, porque há apenas 9!/2 = 181.440 estados distintos que são alcançáveis. (Veja o Exercício
3.17.) Esse é um número administrável, mas o número correspondente para o quebra-cabeça de 15 é aproximadamente
1013, então a próxima tarefa é encontrar uma boa função heurística. Se quisermos encontrar as soluções mais curtas
usando Aÿ, precisamos de uma função heurística que nunca superestime o número de passos até o objetivo. Há uma longa
, heurísticas para o quebra-cabeça de 15 peças; aqui estão dois candidatos comumente usados:
história de tais
• h1 = o número de peças mal colocadas. Para a Figura 3.28, todas as oito peças estão fora de posição, então o estado
inicial teria h1 = 8. h1 é uma heurística admissível, porque é claro que qualquer peça que esteja fora do lugar deve
ser movida pelo menos uma vez.
• h2 = a soma das distâncias das telhas de suas posições de meta. Como os ladrilhos não podem se mover ao longo
das diagonais, a distância que contaremos é a soma das distâncias horizontal e vertical. Isso às vezes é chamado
de distância do quarteirão da cidade ou distância de Manhattan. h2 também é admissível, porque tudo o que
MANHATTAN
DISTÂNCIA
qualquer movimento pode fazer é mover um ladrilho um passo mais perto do objetivo. Os ladrilhos de 1 a 8 no
estado inicial fornecem uma distância de Manhattan de
h2 = 3 + 1 + 2 + 2 + 2 + 3 + 3 + 2 = 18 .
Como esperado, nenhum deles superestima o verdadeiro custo da solução, que é 26.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação final.
©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
FATOR DE RAMIFICAÇÃO Uma maneira de caracterizar a qualidade de uma heurística é o fator de ramificação efetivo b . Se o
número total de nós gerados por Aÿ para um determinado problema é N e a profundidade da solução é d,
ÿ
então b é o fator de ramificação que uma árvore uniforme de profundidade d teria que ter para conter N +
1 nós. Por isso,
ÿ 2 d
N+1=1+b + (b * ) + · · · + (b ÿ ) .
Por exemplo, se Aÿ encontrar uma solução na profundidade 5 usando 52 nós, então o fator de ramificação
efetivo é 1,92. O fator de ramificação efetivo pode variar entre as instâncias do problema, mas geralmente
é bastante constante para problemas suficientemente difíceis. (A existência de um fator de ramificação
efetivo decorre do resultado, mencionado anteriormente, de que o número de nós expandidos por Aÿ
ÿ
cresce exponencialmente com a profundidade da solução.) Portanto, medições experimentais de com um
um pequeno conjunto de problemas podem fornecer um bom guia para a heurística. utilidade geral. Uma
ÿ
heurística bem projetada teria um valor de b próximo de 1, permitindo a resolução de problemas
relativamente grandes.
Para testar as funções heurísticas h1 e h2, geramos 1200 problemas aleatórios com comprimentos
de solução de 2 a 24 (100 para cada número par) e os resolvemos com busca de aprofundamento iterativo
e com busca em árvore Aÿ usando h1 e h2. A Figura 3.29 fornece o número médio de nós gerados por
cada estratégia e o fator de ramificação efetivo. Os resultados sugerem que h2 é melhor que h1 e é muito
melhor do que usar a pesquisa de aprofundamento iterativo. Mesmo para pequenos problemas com d =
12, Aÿ com h2 é 50.000 vezes mais eficiente do que a busca de aprofundamento iterativo desinformada.
Figura 3.29 Comparação dos custos de busca e fatores de ramificação efetivos para os algoritmos ITERATIVE-
DEEPENING-SEARCH e Aÿ com h1, h2. Os dados são calculados em média sobre 100 instâncias do quebra-
cabeça de 8 para cada um dos vários comprimentos de solução d.
Pode-se perguntar se h2 é sempre melhor que h1. A resposta é: “Essencialmente, sim”. É fácil ver
pelas definições das duas heurísticas que, para qualquer nó n, h2(n) ÿ h1(n).
DOMINAÇÃO
Dizemos então que h2 domina h1. A dominação se traduz diretamente em eficiência: Aÿ usando
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
h2 nunca expandirá mais nós do que Aÿ usando h1 (exceto possivelmente para alguns nós com f(n) = C ÿ ). O argumento é
simples. Lembre-se da observação na página 98 de que todo nó com f(n) < Cÿ certamente será expandido. Isso é o mesmo que
dizer que todo nó com h(n) < Cÿ ÿ g(n) certamente será expandido. Mas como h2 é pelo menos tão grande quanto h1 para
todos os nós, todo nó que certamente é expandido pela pesquisa Aÿ com h2 também será certamente expandido com h1, e h1
pode fazer com que outros nós também sejam expandidos. Portanto, geralmente é melhor usar uma função heurística com
valores mais altos, desde que não superestime e que o tempo de computação da heurística não seja muito grande.
Vimos que h1 (ladrilhos mal colocados) e h2 (distância de Manhattan) são heurísticas bastante boas para o quebra-cabeça de
8 e que h2 é melhor. Como alguém pode ter inventado h2? É possível para um computador inventar tal heurística
mecanicamente? h1 e h2 são estimativas do comprimento restante do caminho para o
quebra-cabeça de 8, mas também são comprimentos de caminho perfeitamente precisos para versões simplificadas do
quebra-cabeça. Se as regras do quebra-cabeça fossem alteradas para que uma peça pudesse se mover para qualquer lugar,
em vez de apenas para o quadrado vazio adjacente, h1 forneceria o número exato de etapas na solução mais curta. Da mesma
forma, se um ladrilho pudesse se mover um quadrado em qualquer direção, mesmo em um quadrado ocupado, então h2
forneceria o número exato de etapas na solução mais curta. Um problema com menos restrições nas ações é um PROBLEMA
RELAXADO chamado de problema relaxado. O grafo de espaço de estado do problema relaxado é um supergrafo do espaço
de estado original, porque a remoção de restrições cria arestas adicionais no grafo.
Como o problema relaxado adiciona arestas ao espaço de estados, qualquer solução ótima no problema original é, por
definição, também uma solução no problema relaxado; mas o problema relaxado pode ter soluções melhores se as arestas
adicionadas fornecerem atalhos. Portanto, o custo de uma solução ótima para um problema relaxado é uma heurística admissível
para o problema original.
Além disso, como a heurística derivada é um custo exato para o problema relaxado, ela deve obedecer à desigualdade triangular
e, portanto, é consistente (consulte a página 96).
Se a definição de um problema for escrita em uma linguagem formal, é possível construir
problemas relaxados automaticamente.9 Por exemplo, se as ações do quebra-cabeça de 8 forem descritas como
(a) Uma peça pode se mover do quadrado A para o quadrado B se A for adjacente a B. (b)
Uma peça pode se mover do quadrado A para o quadrado B se B estiver em
branco. (c) Uma peça pode se mover do quadrado A para o quadrado B.
De (a), podemos derivar h2 (distância de Manhattan). O raciocínio é que h2 seria a pontuação adequada se movêssemos cada
ladrilho sucessivamente para seu destino. A heurística derivada de (b) é discutida no Exercício 3.39. De (c), podemos derivar
h1 (ladrilhos mal colocados), porque seria a pontuação adequada se os ladrilhos pudessem se mover para o destino pretendido
em uma etapa. Observe que é
9 Nos capítulos 8 e 11, descreveremos as linguagens formais adequadas para essa tarefa; com descrições formais que
podem ser manipuladas, a construção de problemas relaxados pode ser automatizada. Por enquanto, usaremos o inglês.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
2 4 1 2
5 6 3 54 6
8 3 1 7 8
Figura 3.30 Um subproblema da instância de 8 quebra-cabeças dada na Figura 3.28. A tarefa é colocar as peças
1, 2, 3 e 4 em suas posições corretas, sem se preocupar com o que acontecerá com as outras peças.
crucial que os problemas relaxados gerados por esta técnica possam ser resolvidos essencialmente sem busca,
pois as regras relaxadas permitem que o problema seja decomposto em oito subproblemas independentes. Se o
problema relaxado for difícil de resolver, então os valores da heurística correspondente serão caros de se
obter.10 Um programa chamado ABSOLVER
pode gerar heurísticas automaticamente a partir de definições de problemas, usando o método do
“problema relaxado” e várias outras técnicas (Prieditis, 1993).
ABSOLVER gerou uma nova heurística para o quebra-cabeça de 8 que era melhor do que qualquer heurística
preexistente e encontrou a primeira heurística útil para o famoso quebra-cabeça do cubo de Rubik.
Um problema com a geração de novas funções heurísticas é que muitas vezes não se consegue obter
uma heurística “claramente melhor”. Se uma coleção de heurísticas admissíveis h1 . . . hm está disponível para
um problema e nenhum deles domina nenhum dos outros, qual devemos escolher? Acontece que não precisamos
fazer uma escolha. Podemos ter o melhor dos mundos, definindo
Essa heurística composta usa qualquer função que seja mais precisa no nó em questão.
Como as heurísticas do componente são admissíveis, h é admissível; também é fácil provar que h é consistente.
Além disso, h domina todas as suas heurísticas componentes.
SUBPROBLEMA As heurísticas admissíveis também podem ser derivadas do custo da solução de um subproblema de um
determinado problema. Por exemplo, a Figura 3.30 mostra um subproblema da instância de 8 quebra-cabeças
da Figura 3.28. O subproblema envolve colocar as peças 1, 2, 3, 4 em suas posições corretas. Claramente, o
custo da solução ótima desse subproblema é um limite inferior do custo do problema completo. Acontece que é
substancialmente mais preciso do que a distância de Manhattan em alguns
casos.
BANCOS DE DADOS DE PADRÕES A ideia por trás dos bancos de dados de padrões é armazenar esses custos exatos de solução para
todas as possíveis instâncias de subproblemas – em nosso exemplo, todas as configurações possíveis dos quatro
ladrilhos e do espaço em branco. (Observe que as localizações das outras quatro peças são irrelevantes para fins de
10 Observe que uma heurística perfeita pode ser obtida simplesmente permitindo que h execute uma busca em largura
completa “às escondidas”. Assim, há uma troca entre precisão e tempo de computação para funções heurísticas.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação final.
©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
resolvendo o subproblema, mas os movimentos dessas peças contam para o custo.) Em seguida, calculamos um
hDB heurístico admissível para cada estado completo encontrado durante uma pesquisa simplesmente procurando
a configuração do subproblema correspondente no banco de dados. O próprio banco de dados é construído
pesquisando para trás11 a partir do estado objetivo e registrando o custo de cada novo padrão encontrado; a
despesa dessa busca é amortizada em muitas instâncias de problemas subseqüentes.
A escolha de 1-2-3-4 é bastante arbitrária; também poderíamos construir bancos de dados para 5-6-7-8,
para 2-4-6-8 e assim por diante. Cada banco de dados produz uma heurística admissível e essas heurísticas
podem ser combinadas, conforme explicado anteriormente, tomando o valor máximo. Uma heurística combinada
desse tipo é muito mais precisa do que a distância de Manhattan; o número de nós gerados ao resolver quebra-
cabeças aleatórios de 15 pode ser reduzido por um fator de 1000.
Alguém pode se perguntar se as heurísticas obtidas do banco de dados 1-2-3-4 e do 5-6-7-8 poderiam ser
adicionadas, uma vez que os dois subproblemas parecem não se sobrepor. Isso ainda daria uma heurística
admissível? A resposta é não, porque as soluções do subproblema 1-2-3-4 e do subproblema 5-6-7-8 para um
determinado estado quase certamente compartilharão alguns movimentos - é improvável que 1-2-3-4 pode ser
movido para o lugar sem tocar em 5-6-7-8 e vice-versa. Mas e se não contarmos esses movimentos? Ou seja,
registramos não o custo total da resolução do subproblema 1-2-3-4, mas apenas o número de movimentos
envolvendo 1-2-3-4. Então é fácil ver que a soma dos dois custos ainda é um limite inferior no custo de resolver
todo o problema.
PADRÃO DESJUNTO
BANCOS DE DADOS
Essa é a ideia por trás dos bancos de dados de padrões disjuntos. Usando esses bancos de dados, é possível
resolver quebra-cabeças aleatórios de 15 em alguns milissegundos - o número de nós gerados é reduzido por um
fator de 10.000 em comparação com o uso da distância de Manhattan. Para 24 quebra-cabeças, uma aceleração
de aproximadamente um milhão pode ser obtida.
Bancos de dados de padrões disjuntos funcionam para quebra-cabeças de ladrilhos deslizantes porque o
problema pode ser dividido de forma que cada movimento afete apenas um subproblema - porque apenas um
ladrilho é movido por vez. Para um problema como o cubo de Rubik, esse tipo de subdivisão não pode ser feito
porque cada movimento afeta 8 ou 9 dos 26 cubos. Atualmente, não está claro como definir bancos de dados
disjuntos para tais problemas.
Uma função heurística h(n) deve estimar o custo de uma solução a partir do estado no nó n. Como um agente
poderia construir tal função? Uma solução foi dada nas seções anteriores - ou seja, criar problemas relaxados para
os quais uma solução ótima pode ser encontrada facilmente. Outra solução é aprender com a experiência.
“Experiência” aqui significa resolver muitos quebra-cabeças de 8, por exemplo. Cada solução ótima para um
problema de 8 quebra-cabeças fornece exemplos dos quais h(n) pode ser aprendido. Cada exemplo consiste em
um estado do caminho da solução e o custo real da solução a partir desse ponto. A partir desses exemplos, um
algoritmo de aprendizado pode ser usado para construir uma função h(n) que pode (com sorte) prever os custos
da solução para outros estados que surgem durante a pesquisa. Técnicas para fazer exatamente isso usando
redes neurais, de
11 Ao trabalhar para trás a partir do objetivo, o custo exato da solução de cada instância encontrada fica imediatamente
disponível sem nenhum cálculo adicional. Este é um exemplo de programação dinâmica, que discutiremos mais adiante
no Capítulo 17.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
árvores de decisão e outros métodos são demonstrados no Capítulo 18. (Os métodos de aprendizado por
reforço descritos no Capítulo 21 também são aplicáveis.)
CARACTERÍSTICAS Os métodos de aprendizado indutivo funcionam melhor quando fornecidos com recursos de um estado
que são relevantes para prever o valor do estado, em vez de apenas com a descrição bruta do estado. Por
exemplo, o recurso “número de ladrilhos mal colocados” pode ser útil para prever a distância real de um estado
até o objetivo. Vamos chamar esse recurso de x1(n). Poderíamos pegar 100 configurações de 8 quebra-
cabeças geradas aleatoriamente e coletar estatísticas sobre seus custos reais de solução. Podemos descobrir
que quando x1(n) é 5, o custo médio da solução é de cerca de 14, e assim por diante. Dados esses dados, o
valor de x1 pode ser usado para prever h(n). Claro, podemos usar vários recursos.
Um segundo recurso x2(n) pode ser “número de pares de ladrilhos adjacentes que não são adjacentes no
estado de objetivo”. Como x1(n) e x2(n) devem ser combinados para prever h(n)? Uma abordagem comum é
usar uma combinação linear:
As constantes c1 e c2 são ajustadas para dar o melhor ajuste aos dados reais sobre os custos da solução.
Espera-se que c1 e c2 sejam positivos, porque peças mal colocadas e pares adjacentes incorretos tornam o
problema mais difícil de resolver. Observe que esta heurística satisfaz a condição de que h(n) = 0 para estados
de objetivo, mas não é necessariamente admissível ou consistente.
3.7 RESUMO
Este capítulo apresentou métodos que um agente pode usar para selecionar ações em ambientes que são
determinísticos, observáveis, estáticos e completamente conhecidos. Nesses casos, o agente pode construir
sequências de ações que atinjam seus objetivos; esse processo é chamado de pesquisa.
• Antes que um agente possa começar a buscar soluções, um objetivo deve ser identificado e um
problema bem definido deve ser formulado.
• Um problema consiste em cinco partes: o estado inicial, um conjunto de ações, um modelo de
transição que descreve os resultados dessas ações, uma função de teste de objetivo e uma função de custo de cam
O ambiente do problema é representado por um espaço de estados. Um caminho através do espaço
de estados desde o estado inicial até um estado objetivo é uma solução.
• Algoritmos de busca tratam estados e ações como atômicos: eles não consideram nenhuma estrutura
interna que possam possuir.
• Um algoritmo geral TREE-SEARCH considera todos os caminhos possíveis para encontrar uma solução,
enquanto um algoritmo GRAPH-SEARCH evita a consideração de caminhos redundantes.
• Os algoritmos de busca são julgados com base em integridade, otimização, complexidade de tempo
e complexidade de espaço. A complexidade depende de b, o fator de ramificação no espaço de
estado, e d, a profundidade da solução mais rasa.
• Os métodos de pesquisa não informados têm acesso apenas à definição do problema. Os algoritmos
básicos são os seguintes:
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
– A busca de custo uniforme expande o nó com menor custo de caminho, g(n), e é ótimo
para custos gerais de etapas.
– A pesquisa em profundidade expande primeiro o nó não expandido mais profundo. Não é nem completo nem
ótimo, mas tem complexidade de espaço linear. A pesquisa limitada por profundidade adiciona um limite de
profundidade.
– A pesquisa bidirecional pode reduzir enormemente a complexidade do tempo, mas nem sempre é
aplicável e pode exigir muito espaço.
• Métodos de busca informados podem ter acesso a uma função heurística h(n) que estima
o custo de uma solução de n.
– O algoritmo genérico de busca do melhor primeiro seleciona um nó para expansão de acordo com uma função
de avaliação.
– A busca gulosa pelo melhor primeiro expande os nós com h(n) mínimo. Não é o ideal, mas
muitas vezes é eficiente.
– Aÿ busca expande nós com mínimo f(n) = g(n) + h(n). Aÿ é completo e ótimo, desde que h(n) seja admissível
(para TREE-SEARCH) ou consistente (para GRAPH-SEARCH). A complexidade espacial de Aÿ ainda é
proibitiva.
– RBFS (recursive best-first search) e SMAÿ (simplified memory-bounded Aÿ ) são algoritmos de busca otimizados
e robustos que usam quantidades limitadas de memória; dado tempo suficiente, eles podem resolver problemas
que A* não consegue resolver porque fica sem memória.
• O desempenho dos algoritmos de busca heurística depende da qualidade da função heurística. Às vezes, boas
heurísticas podem ser construídas relaxando a definição do problema, armazenando custos de solução pré-
computados para subproblemas em um banco de dados de padrões ou aprendendo com a experiência com a classe
do problema.
O tópico da busca no espaço de estados originou-se mais ou menos em sua forma atual nos primeiros anos da IA. O trabalho
de Newell e Simon no Logic Theorist (1957) e no GPS (1961) levou ao estabelecimento de algoritmos de busca como as
principais armas no arsenal dos pesquisadores de IA dos anos 1960 e ao estabelecimento da resolução de problemas como
a tarefa canônica da IA. O trabalho em pesquisa operacional de Richard Bellman (1957) mostrou a importância dos custos de
caminho aditivos na simplificação de algoritmos de otimização. O texto sobre Resolução Automatizada de Problemas de Nils
Nilsson (1971) estabeleceu a área em uma base teórica sólida.
A maioria dos problemas de busca em espaço de estados analisados neste capítulo tem uma longa história na
literatura e são menos triviais do que parecem. O problema dos missionários e canibais usado no Exercício 3.22 foi analisado
em detalhes por Amarel (1968). tinha sido considerado
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
anteriormente em IA por Simon e Newell (1961) e em pesquisa operacional por Bellman e Dreyfus
(1962).
O quebra-cabeça de 8 é um primo menor do quebra-cabeça de 15, cuja história é contada em
detalhes por Slocum e Sonneveld (2006). Durante a maior parte do século 20, acreditou-se amplamente
que foi inventado pelo famoso designer de jogos americano Sam Loyd, com base em suas alegações
nesse sentido de 1891 em diante (Loyd, 1959). Acontece que foi inventado por Noyes Chapman, um
postmaster em Canastota, Nova York, em meados da década de 1870, e alcançou imensa popularidade
nos Estados Unidos e na Europa. (Chapman não conseguiu patentear sua invenção, pois uma patente
genérica cobrindo blocos deslizantes com letras, números ou imagens foi concedida a Ernest Kinsey
em 1878.) Também atraiu rapidamente a atenção de matemáticos (Johnson e Story, 1879; Tait, 1880). ).
Os editores do American Journal of Mathematics declararam: “O quebra-cabeça '15' nas últimas
semanas tem sido proeminente perante o público americano, e pode-se dizer com segurança que atraiu
a atenção de nove em cada dez pessoas de ambos os sexos e todos idades e condições da comunidade.
Mas isso não teria pesado para os editores induzi-los a inserir artigos sobre tal assunto no American
Journal of Mathematics, senão pelo fato de que . . .” (segue um resumo do interesse matemático do
quebra-cabeça de 15). Uma análise exaustiva do quebra-cabeça de 8 foi realizada com auxílio de
computador por Schofield (1967). Ratner e Warmuth (1986) mostraram que a versão geral n × n do
quebra-cabeça de 15 peças pertence à classe de problemas NP-completos.
O problema das 8 rainhas foi publicado pela primeira vez anonimamente na revista alemã de
xadrez Schach em 1848; mais tarde foi atribuído a um certo Max Bezzel. Foi republicado em 1850 e
nessa época chamou a atenção do eminente matemático Carl Friedrich Gauss, que tentou enumerar
todas as soluções possíveis, mas encontrou apenas 72. Nauck publicou todas as 92 soluções mais
tarde, em 1850. Netto (1901) generalizou o problema para n rainhas, e Abramson e Yung (1989)
encontraram um algoritmo O(n) .
Cada um dos problemas de busca do mundo real listados no capítulo foi objeto de bastante
esforço de pesquisa. Os métodos para selecionar voos de companhias aéreas ideais permanecem na
maior parte proprietários, mas Carl de Marcken (comunicação pessoal) mostrou que os preços e as
restrições de passagens aéreas tornaram-se tão complicados que o problema de selecionar um voo
ideal é formalmente indecidível . O problema do caixeiro-viajante é um problema combinatório padrão
em ciência da computação teórica (Lawler, 1985; Lawler et al., 1992). Karp (1972) provou que o TSP é
NP-difícil, mas métodos de aproximação heurística eficazes foram desenvolvidos (Lin e Kernighan,
1973). Arora (1998) desenvolveu um esquema de aproximação totalmente polinomial para TSPs
euclidianos. Os métodos de layout VLSI são pesquisados por Shahookar e Mazumder (1991), e muitos
artigos sobre otimização de layout aparecem em periódicos VLSI. A navegação robótica e os problemas
de montagem são discutidos no Capítulo 25.
Algoritmos de busca não informados para resolução de problemas são um tópico central da
ciência da computação clássica (Horowitz e Sahni, 1978) e da pesquisa operacional (Dreyfus, 1969).
A primeira busca em amplitude foi formulada para resolver labirintos por Moore (1959). O método de
programação dinâmica (Bellman, 1957; Bellman e Dreyfus, 1962), que sistematicamente registra
soluções para todos os subproblemas de comprimentos crescentes, pode ser visto como uma forma de
busca em largura em grafos. O algoritmo de caminho mais curto de dois pontos de Dijkstra (1959) é a
origem da busca de custo uniforme. Esses trabalhos também introduziram a ideia de conjuntos explorados e de fronteir
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
Pohl (1970, 1977) foi pioneiro no estudo da relação entre o erro em funções heurísticas e a complexidade
temporal de Aÿ . Resultados básicos foram obtidospara busca em árvore com custos unitários de passo e um
único nó objetivo (Pohl, 1977; Gaschnig, 1979; Huyn et al., 1980; Pearl, 1984) e com múltiplos nós objetivos
(Dinh et al., 2007). O “fator de ramificação efetivo” foi proposto por Nilsson (1971) como uma medida empírica
da eficiência; é equivalente a assumir um custo de tempo de O((b ÿ ) argumentam que o custo de tempo é melhor
d
modelado como precisão de O(b ; no ). Para busca em árvore aplicada a um grafo, Korf et al. (2001)
d-k
entanto, essa análise gerou alguma controvérsia. Para pesquisa ) onde k depende da heurística
de gráficos, Helmert e R¨oger (2008) observaram que vários problemas conhecidos continham muitos nós
exponencialmente em caminhos de solução ótima, implicando complexidade de tempo exponencial para Aÿ
mesmo com erro absoluto constante em h.
Existem muitas variações no algoritmo Aÿ . Pohl (1973) propôs o uso de ponderação dinâmica, que usa
uma soma ponderada fw(n) = wgg(n) + whh(n) do comprimento do caminho atual e a função heurística como
uma função de avaliação, em vez da simples soma f (n) = g(n)+ h(n) usado em Aÿ . Os pesos wg e wh são
ajustados dinamicamente à medida que a pesquisa avança.
O algoritmo de Pohl pode ser mostrado como ÿ-admissível - isto é, garantido para encontrar soluções dentro de
um fator 1 + ÿ da solução ótima - onde ÿ é um parâmetro fornecido ao algoritmo. A mesma propriedade é exibida
pelo algoritmo Aÿ (Pearl, 1984), que pode selecionar
ÿ qualquer nó da fronteira desde que seu custo f esteja dentro
de um fator 1 + ÿ do nó da fronteira de menor custo f. A seleção pode ser feita de forma a minimizar o custo de
busca.
Versões bidirecionais de Aÿ foram investigadas (de Champeaux e Sint, 1977; de
Champeaux, 1983), mas sua complexidade algorítmica não foi compensada por melhorias significativas de
desempenho em relação a Aÿ . Uma abordagem mais promissora parece ser executar uma
busca em largura para trás a partir do objetivo até uma profundidade fixa, seguida por uma IDA para frente*
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
Como os computadores no final dos anos 1950 e início dos anos 1960 tinham no máximo alguns
milhares de palavras na memória principal, a pesquisa heurística limitada à memória foi um dos primeiros
tópicos de pesquisa. O Graph Traverser (Doran e Michie, 1966), um dos primeiros programas de pesquisa,
se compromete com um operador depois de pesquisar melhor primeiro até o limite da memória. IDA* (Korf,
1985a, 1985b) foi o primeiro algoritmo de busca heurística ótimo, limitado pela memória e amplamente
utilizado, e um grande número de variantes foi desenvolvido. Uma análise da eficiência do IDAÿ e de suas
dificuldades com heurísticas de valores reais aparece em Patrick et al. (1992).
RBFS (Korf, 1991, 1993) é na verdade um pouco mais complicado do que o algoritmo mostrado na
Figura 3.26, que está mais próximo de um algoritmo desenvolvido independentemente chamado expansão
ITERATIVO
EXPANSÃO
iterativa, ou IE (Russell, 1992). RBFS usa um limite inferior, bem como o limite superior; os dois algoritmos
se comportam de forma idêntica com heurísticas admissíveis, mas o RBFS expande os nós na melhor
primeira ordem mesmo com uma heurística inadmissível. A ideia de rastrear o melhor caminho alternativo
apareceu anteriormente na elegante implementação Prolog de Aÿ de Bratko (1986) e no algoritmo DTAÿ
(Russell e Wefald, 1991). O último trabalho também discute espaços de estado de metanível e aprendizado
de metanível.
O algoritmo MAÿ apareceu em Chakrabarti et al. (1989). O SMAÿ surgiu de , ou MA Simplificadoÿ ,
uma tentativa de implementar o MAÿ como um algoritmo de comparação para o IE (Russell, 1992).
Kaindl e Khorsand (1994) aplicaram o SMAÿ para produzir um algoritmo de busca bidirecional que é
substancialmente mais rápido que os algoritmos anteriores. Korf e Zhang (2000) descrevem uma
abordagem de dividir e conquistar, e Zhou e Hansen (2002) introduzem a busca de grafos Aÿ limitada à
memória . Korf (1995) examina as técnicas de busca limitadas pela memória.
A ideia de que heurísticas admissíveis podem ser derivadas pelo relaxamento do problema aparece
no artigo seminal de Held e Karp (1970), que usaram a heurística da árvore geradora mínima para resolver
o TSP. (Veja o Exercício 3.38.)
A automação do processo de relaxamento foi implementada com sucesso por Priedi tis (1993), com
base no trabalho anterior com Mostow (Mostow e Prieditis, 1989). O uso de bancos de dados de padrões
para derivar heurísticas admissíveis deve-se a Gasser (1995) e Culberson e Schaeffer (1998); bancos de
dados de padrões disjuntos são descritos por Korf e Felner (2002).
A interpretação probabilística das heurísticas foi investigada em profundidade por Pearl (1984) e Hansson
e Mayer (1989).
De longe, a fonte mais abrangente sobre heurística e algoritmos de busca heurística é o texto
Heuristics de Pearl (1984) . Este livro oferece uma cobertura especialmente boa da ampla variedade de
ramificações e variações de Aÿ , incluindo provas rigorosas de suas propriedades formais.
Os livros didáticos de Nilsson (1971, 1980) são boas fontes gerais de informação sobre aulas.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
algoritmos de busca sical. Kanal e Kumar (1988) apresentam uma antologia de artigos importantes sobre busca
heurística. Artigos sobre novos algoritmos de busca – que, notavelmente, continuam a ser descobertos – aparecem
em periódicos como Artificial Intelligence e Journal of the ACM.
PESQUISA PARALELA
O tópico de algoritmos de busca paralela não foi abordado no capítulo, em parte porque requer uma longa
discussão sobre arquiteturas de computadores paralelos. A busca paralela tornou-se um tópico popular na década de
1990, tanto na IA quanto na ciência da computação teórica (Mahanti e Daniels, 1993; Grama e Kumar, 1995; Crauser
et al., 1998) e está voltando na era das novas arquiteturas multicore e cluster (Ralphs e outros, 2004; Korf e Schultze,
2005).
Também são de importância crescente os algoritmos de busca para grafos muito grandes que requerem
armazenamento em disco (Korf, 2008).
EXERCÍCIOS
3.1 Defina com suas próprias palavras os seguintes termos: estado, espaço de estado, árvore de busca, nó de busca,
objetivo, ação, modelo de transição e fator de ramificação.
3.2 Explique por que a formulação do problema deve seguir a formulação do objetivo.
3.3 Quais das alternativas a seguir são verdadeiras e quais são falsas? Dê uma breve explicação para cada
responder.
a. A pesquisa em profundidade sempre expande pelo menos tantos nós quanto a pesquisa Aÿ com um admissi
ble heurística.
3.4 Forneça uma formulação de problema completa para cada um dos seguintes problemas. Escolha uma formulação
que seja precisa o suficiente para ser implementada.
a. Há seis caixas de vidro enfileiradas, cada uma com um cadeado. Cada uma das cinco primeiras caixas contém
uma chave que abre a próxima caixa da fila, a última contém uma banana. Você tem a chave da primeira caixa
e quer a banana.
b. Você começa com a sequência ABABAECCEC ou, em geral, qualquer sequência feita de A, B, C e E. Você
pode transformar essa sequência usando as seguintes igualdades: AC = E, AB = BC, BB = E e Ex = x para
qualquer x. Por exemplo, ABBC pode ser transformado em AEC, depois AC e depois E. Seu objetivo é produzir
a sequência E.
c. Há uma grade n por n de quadrados, cada quadrado inicialmente sendo um piso sem pintura ou um poço sem
fundo. Você começa de pé em um quadrado sem pintura e pode pintar
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
o quadrado abaixo de você ou mova-se para um quadrado adjacente sem pintura. Você quer todo o
chão pintado. d. Um
navio porta-contêineres está no porto, carregado de contêineres. Existem 13 fileiras de contêineres, cada
uma com 13 contêineres de largura e 5 contêineres de altura. Você controla um guindaste que pode se
mover para qualquer local acima do navio, pegar o contêiner embaixo dele e movê-lo para o cais. Você
quer o navio descarregado.
3.5 Seu objetivo é conduzir um robô para fora de um labirinto. O robô começa no centro do labirinto voltado
para o norte. Você pode virar o robô para o norte, leste, sul ou oeste. Você pode direcionar o robô para avançar
uma certa distância, embora ele pare antes de bater em uma parede.
c. A partir de cada ponto do labirinto, podemos nos mover em qualquer uma das quatro direções até
chegarmos a um ponto de virada, e esta é a única ação que precisamos fazer. Reformule o problema
usando essas ações. Precisamos acompanhar a orientação do robô agora?
d. Em nossa descrição inicial do problema já abstraímos do mundo real, restringindo ações e removendo
detalhes irrelevantes. Liste três dessas simplificações que fizemos.
3.6 Qual é a diferença entre um estado mundial, uma descrição de estado e um nó de busca?
Por que essa distinção é útil?
3.7 Você tem uma grade de 9 × 9 quadrados, cada um dos quais pode ser colorido de vermelho ou azul. A
grade é inicialmente toda colorida de azul, mas você pode alterar a cor de qualquer quadrado quantas vezes quiser.
Imaginando a grade dividida em nove sub-quadrados 3 × 3 , você deseja que cada sub-quadrado seja todo de
uma cor, mas os sub-quadrados vizinhos sejam de cores diferentes.
a. Formule esse problema de maneira direta. Calcule o tamanho do espaço de estados. b. Você precisa
colorir um quadrado apenas uma vez. Reformule e calcule o tamanho do espaço de estado. A busca em
grafo em largura teria um desempenho mais rápido nesse problema do que no de (a)? Que tal uma
pesquisa em árvore de aprofundamento iterativo?
c. Dado o objetivo, precisamos considerar apenas colorações onde cada sub-quadrado é uniformemente
colorido. Reformule o problema e calcule o tamanho do espaço de estado.
d. Quantas soluções esse problema tem? e. As partes (b)
e (c) abstraíram sucessivamente o problema original (a). Você pode dar uma tradução das soluções do
problema (c) para as soluções do problema (b) e das soluções do problema (b) para as soluções do
problema (a)?
3.8 Uma ação como Go(Sibiu) realmente consiste em uma longa sequência de ações mais refinadas: ligar o
carro, soltar o freio, acelerar para frente etc. Ter ações compostas desse tipo reduz o número de etapas em
uma sequência de solução , reduzindo assim o tempo de busca.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
Suponha que levemos isso ao extremo lógico, criando ações supercompostas de todas as sequências possíveis de
ações Go . Em seguida, cada instância do problema é resolvida por uma única ação supercomposta, como
Go(Sibiu)Go(Rimnicu Vilcea)Go(Pitesti)Go(Bucharest). Explique como a pesquisa funcionaria nessa formulação. Esta
é uma abordagem prática para acelerar a resolução de problemas?
3.9 Considere um espaço de estados onde o estado inicial é o número 1 e cada estado k tem dois sucessores,
números 2k e 2k + 1.
Suponha que o estado objetivo seja 11. Liste a ordem em que os nós serão visitados para a primeira busca em
largura, busca limitada em profundidade com limite 3 e busca iterativa em aprofundamento. c.
d. A resposta para (c) sugere uma reformulação do problema que permitiria que você resolvesse o problema de ir
do estado 1 para um determinado estado objetivo quase sem busca? e. Chame a ação indo de k para 2k
Esquerda, e a ação indo para 2k + 1 Direita. Você pode encontrar um algoritmo para produzir a solução para este
problema sem nenhuma pesquisa?
3.10 Heurísticas precisas não reduzem necessariamente o tempo de busca, no pior caso. Dada qualquer profundidade
d, defina um problema de busca com um nó objetivo na profundidade d, e uma função heurística tal que |h(n) ÿ h ÿ (n)|
ÿ O(log h ÿ (n)) mas Aÿ expande todos os nós de profundidade menor que d.
CAMINHO HEURÍSTICO
ALGORITMO
3.11 O algoritmo de caminho heurístico (Pohl, 1977) é uma busca do melhor primeiro em que a função de avaliação
é f(n) = (2 ÿ w)g(n) + wh(n). Para quais valores de w isso é completo?
Para quais valores ele é ótimo, assumindo que h é admissível? Que tipo de pesquisa isso realiza para w = 0, w = 1 e
w = 2?
3.12 Considere a versão ilimitada da grade 2D regular mostrada na Figura 3.9. O estado inicial está na origem, (0,0), e
o estado final está em (x, y). a. Qual é o fator de ramificação b neste
pela busca em árvore de busca em largura? d. Qual é o número máximo de nós expandidos pela busca em grafo
de busca em largura? e. É h = |u ÿ x| + |v ÿ y| uma heurística admissível para um estado em (u, v)? Explicar. f.
Quantos nós são expandidos pela busca do grafo Aÿ usando h? g. h permanece admissível se alguns
links forem removidos? h. h permanece admissível se alguns links forem
3.13 n veículos ocupam quadrados (1, 1) até (n, 1) (ou seja, a linha inferior) de uma grade n × n .
Os veículos devem ser movidos para a linha superior, mas na ordem inversa; então o veículo i que começa em (i, 1)
deve terminar em (n ÿ i + 1, n). Em cada intervalo de tempo, cada um dos n veículos pode se mover um quadrado
para cima, para baixo, para a esquerda ou para a direita, ou permanecer parado; mas se um veículo permanecer
parado, outro veículo adjacente (mas não mais de um) pode pular sobre ele. Dois veículos não podem ocupar o mesmo quadrado.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
x 12
x2 x2
x 16
Figura 3.31 As peças dos trilhos em um conjunto ferroviário de madeira; cada um é rotulado com o número
de cópias no conjunto. Observe que as peças curvas e as peças de “garfo” (“interruptores” ou “pontos”)
podem ser viradas, para que possam se curvar em qualquer direção. Cada curva subtende 45 graus.
(e) oi . ni
(ii)= 1
max{h1, . . . , hn}. (iii)
min{h1, . . . , hn}.
3.14 Um conjunto ferroviário básico de madeira contém as peças mostradas na Figura 3.31. A tarefa é
conectar essas peças em uma ferrovia que não tenha pontas soltas onde um trem possa correr para o chão
e sem trilhos sobrepostos.
a. Suponha que as peças se encaixem exatamente sem folga. Forneça uma formulação precisa de
a tarefa como um problema de pesquisa.
b. Identifique um algoritmo de busca desinformada adequado para esta tarefa e explique sua escolha. c.
Explique brevemente por que remover qualquer uma das peças do “garfo” torna o problema sem solução
capaz.
d. Forneça um limite superior para o tamanho total do espaço de estados definido por sua formulação.
(Dica: pense no fator de ramificação máximo para o processo de construção e na profundidade
máxima, ignorando o problema de peças sobrepostas e pontas soltas. Comece fingindo que cada peça
é única.)
3.15 Considere o problema de mover k cavalos de k casas iniciais s1, . . . , sk a k quadrados de objetivo
g1, . . . , gk, em um tabuleiro de xadrez ilimitado, sujeito à regra de que dois cavalos não podem pousar na
mesma casa ao mesmo tempo. Cada ação consiste em mover até k cavaleiros simultaneamente. Gostaríamos
de completar a manobra no menor número de ações.
a. Qual é o fator de ramificação máximo neste espaço de estados, expresso como uma função de k?
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
b. Suponha que hi seja uma heurística admissível para o problema de mover o cavalo i para o objetivo gi por si
só. Quais das seguintes heurísticas são admissíveis para o problema k-cavaleiro? Desses, qual é o melhor?
(i) min{h1, . . . , hk}. (ii)
qui = 1
3.16 Suponha que haja dois amigos morando em cidades diferentes em um mapa, como o mapa da Romênia
mostrado na Figura 3.2. A cada turno, podemos mover cada amigo simultaneamente para uma cidade vizinha no
mapa. O tempo necessário para se deslocar da cidade i até a vizinha j é igual à distância rodoviária d(i, j) entre as
cidades, mas a cada curva o amigo que chegar primeiro deve esperar até que o outro chegue (e chame o primeiro
em seu telefone celular) antes que o próximo turno possa começar. Queremos que os dois amigos se encontrem o
mais rápido possível.
a. Escreva uma formulação detalhada para este problema de busca. (Você achará útil definir alguma notação
formal aqui.) b. Seja D(i, j) a
distância em linha reta entre quaisquer duas cidades i e j. Quais, se houver, das seguintes funções heurísticas
são admissíveis? (i) D(i, j); (ii) 2 · D(i, j); (iii)
D(i, j)/2.
c. Existem mapas completamente conectados para os quais não existe solução? d.
Existem mapas em que todas as soluções exigem que um amigo visite a mesma cidade duas vezes?
3.17 Mostre que os estados do quebra-cabeça de 8 são divididos em dois conjuntos disjuntos, de modo que
qualquer estado é alcançável a partir de qualquer outro estado no mesmo conjunto, enquanto nenhum estado é
alcançável a partir de qualquer estado do outro conjunto. (Dica: consulte Berlekamp et al. (1982).) Desenvolva um
procedimento que lhe diga em qual conjunto um determinado estado está e explique por que isso é bom para gerar
estados aleatórios.
3.18 Considere o problema de n-rainhas usando a formulação incremental “eficiente” fornecida na página 74.
Explique por que o tamanho do espaço de estado é de pelo menos ÿ3 n! e estimar o maior n para o qual a
exploração exaustiva é viável. (Dica: obtenha um limite inferior para o fator de ramificação considerando o número
máximo de casas que uma rainha pode atacar em qualquer coluna.)
3.19 Um espaço de estados finito sempre leva a uma árvore de busca finita? Que tal um espaço de estado finito
que é uma árvore? Você pode ser mais preciso sobre quais tipos de espaços de estado sempre levam a árvores de
busca finitas? (Adaptado de Bender, 1996.)
3.20 Prove que GRAPH-SEARCH satisfaz a propriedade de separação de grafos ilustrada na Figura 3.9. (Dica:
comece mostrando que a propriedade é válida no início e, em seguida, mostre que, se for válida antes de uma
iteração do algoritmo, será válida posteriormente.) Descreva um algoritmo de busca que viole a propriedade.
3.21 Forneça uma formulação de problema completa para cada um dos itens a seguir. Escolha uma formulação
que seja precisa o suficiente para ser implementada.
a. Você deve colorir um mapa planar usando apenas quatro cores, de forma que duas regiões adjacentes não
tenham a mesma cor.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
b. Um macaco de 3 pés de altura está em uma sala onde algumas bananas estão suspensas no teto de 8 pés.
Ele gostaria de pegar as bananas. A sala contém duas caixas empilháveis, móveis e escaláveis de 3 pés de
altura.
c. Você tem um programa que gera a mensagem “registro de entrada ilegal” quando alimentado com um
determinado arquivo de registros de entrada. Você sabe que o processamento de cada registro é independente
dos outros registros. Você quer descobrir qual registro é ilegal. d. Você
tem três jarros, medindo 12 galões, 8 galões e 3 galões, e uma torneira de água.
Você pode encher os jarros ou esvaziá-los de um para o outro ou no chão. Você precisa medir exatamente
um galão.
3.22 O problema dos missionários e canibais costuma ser formulado da seguinte forma. Três missionários e três
canibais estão de um lado de um rio, junto com um barco que pode levar uma ou duas pessoas. Encontre uma
maneira de levar todos para o outro lado, sem nunca deixar um grupo de missionários em um lugar em menor
número que os canibais daquele lugar. Este problema é famoso em IA porque foi o tema do primeiro artigo que
abordou a formulação de problemas do ponto de vista analítico (Amarel, 1968).
a. Formule o problema com precisão, fazendo apenas as distinções necessárias para garantir uma
solução válida. Desenhe um diagrama do espaço de estados completo.
b. Implemente e resolva o problema de forma otimizada usando um algoritmo de busca apropriado. É uma boa
ideia verificar se há estados repetidos? c. Por que
você acha que as pessoas têm dificuldade em resolver esse quebra-cabeça, dado que o espaço de estado
é tão simples?
3.23 Implemente duas versões da função RESULT(s, a) para o quebra-cabeça de 8: uma que copia e edita a
estrutura de dados para os nós pais e outra que modifica o estado pai diretamente (desfazendo as modificações
conforme necessário). Escreva versões de pesquisa em profundidade de aprofundamento iterativo que use essas
funções e compare seu desempenho.
3.24 Na página 90, mencionamos a busca de alongamento iterativo, um análogo iterativo da busca de custo
uniforme. A ideia é usar limites crescentes no custo do caminho. Se for gerado um nó cujo custo de caminho exceda
o limite atual, ele é imediatamente descartado. Para cada nova iteração, o limite é definido como o menor custo de
caminho de qualquer nó descartado na iteração anterior.
os custos das etapas extraídos do intervalo contínuo [ÿ, 1] onde 0 < ÿ < 1. Como
muitas iterações são necessárias no pior caso?
d. Implemente o algoritmo e aplique-o a instâncias dos problemas do quebra-cabeça de 8 e do vendedor
ambulante. Compare o desempenho do algoritmo com o da pesquisa de custo uniforme e comente seus
resultados.
3.25 Descreva um espaço de estado no qual a busca de aprofundamento iterativo tem desempenho muito pior do
2
que a busca em profundidade (por exemplo, O(n
) vs. O(n)).
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
3.26 Escreva um programa que receba como entrada dois URLs de páginas da Web e encontre um caminho de
links de um para o outro. O que é uma estratégia de busca apropriada? A pesquisa bidirecional é uma boa ideia?
Um mecanismo de busca poderia ser usado para implementar uma função predecessora?
3.27 Considere o problema de encontrar o caminho mais curto entre dois pontos em um plano que possui
obstáculos poligonais convexos conforme mostrado na Figura 3.32. Esta é uma idealização do problema que um
robô tem que resolver para navegar em um ambiente lotado.
a. Suponha que o espaço de estado consiste em todas as posições (x, y) no plano. quantos estados
existem? Quantos caminhos existem para a meta?
b. Explique brevemente por que o caminho mais curto de um vértice do polígono para qualquer outro na cena
deve consistir em segmentos de linha reta que unem alguns dos vértices dos polígonos.
Defina um bom espaço de estados agora. Qual é o tamanho desse espaço de estado?
c. Defina as funções necessárias para implementar o problema de busca, incluindo uma função ACTIONS
que recebe um vértice como entrada e retorna um conjunto de vetores, cada um dos quais mapeia o
vértice atual para um dos vértices que podem ser alcançados em uma linha reta. (Não se esqueça dos
vizinhos no mesmo polígono.) Use a distância em linha reta para a função heurística.
d. Aplique um ou mais dos algoritmos deste capítulo para resolver uma variedade de problemas no
domínio e comente sobre seu desempenho.
Figura 3.32 Uma cena com obstáculos poligonais. S e G são os estados inicial e final.
3.28 Compare o desempenho de Aÿ e RBFS em um conjunto de problemas gerados aleatoriamente nos domínios
de 8 quebra-cabeças (com distância de Manhattan) e TSP (com MST — consulte o Exercício 3.38).
Discuta seus resultados. O que acontece com o desempenho de RBFS quando um pequeno número aleatório
é adicionado aos valores heurísticos no domínio de 8 quebra-cabeças?
3.29 Na página 69, dissemos que não consideraríamos problemas com custos de caminho negativos. Neste
exercício, exploramos isso com mais profundidade.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
a. Suponha que as ações possam ter custos negativos arbitrariamente grandes; explique por que essa possibilidade
forçaria qualquer algoritmo ótimo a explorar todo o espaço de estados. b. Ajuda se insistirmos
que os custos das etapas devem ser maiores ou iguais a alguma constante negativa c? Considere árvores e
gráficos. c. Suponha que haja um conjunto de ações
que formam um loop no espaço de estado, de modo que a execução do conjunto em alguma ordem resulta em
nenhuma mudança líquida no estado. Se todas essas ações têm custo negativo, o que isso implica sobre o
comportamento ótimo de um agente em tal ambiente?
d. Pode-se facilmente imaginar ações com alto custo negativo, mesmo em domínios como localização de rotas. Por
exemplo, alguns trechos de estrada podem ter paisagens tão bonitas que superam em muito os custos normais
em termos de tempo e combustível. Explique, em termos precisos, no contexto da busca de espaço de estado,
por que os humanos não dirigem loops cênicos indefinidamente e explique como definir o espaço de estado e
as ações para encontrar rotas de modo que agentes artificiais também possam evitar loops.
e. Você consegue pensar em um domínio real no qual os custos das etapas sejam tais que causem loops?
a. Qual dos algoritmos definidos neste capítulo seria apropriado para este problema?
O algoritmo deve usar pesquisa em árvore ou pesquisa em gráfico?
b. Aplique o algoritmo escolhido para calcular uma sequência ideal de ações para um mundo 3 × 3 cujo estado
inicial tenha sujeira nos três quadrados superiores e o agente no centro. c. Construa um agente de busca
para o mundo do vácuo e avalie seu desempenho em um conjunto de 3 × 3 mundos com probabilidade de 0,2 de
sujeira em cada quadrado. Inclua o custo de pesquisa e o custo do caminho na medida de desempenho,
usando uma taxa de câmbio razoável. d. Compare seu melhor agente de busca com um simples
agente de reflexo aleatório que suga se houver sujeira e se move aleatoriamente.
e. Considere o que aconteceria se o mundo fosse ampliado para n × n. Como varia o desempenho do agente de
busca e do agente de reflexo com n?
3.31 Trace a operação de busca Aÿ aplicada ao problema de ir de Lugoj a Bucareste usando a heurística de distância
em linha reta. Ou seja, mostre a sequência de nós que o algoritmo irá considerar e a pontuação f, g e h para cada nó.
3.32 Algumas vezes não existe uma boa função de avaliação para um problema, mas existe um bom método de
comparação: uma maneira de dizer se um nó é melhor que outro, sem atribuir valores numéricos a nenhum deles.
Mostre que isso é suficiente para fazer uma pesquisa do melhor primeiro. Existe um analógico de Aÿ para esta
configuração?
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
3.34 Crie um espaço de estado no qual Aÿ usando GRAPH-SEARCH retorna uma solução subótima com uma
função h(n) que é admissível, mas inconsistente.
3.35 Vimos na página 94 que a heurística da distância em linha reta desvia a busca gananciosa do melhor
primeiro para o problema de ir de Iasi para Fagaras. No entanto, a heurística é perfeita no problema oposto: ir
de Fagaras para Iasi. Existem problemas para os quais a heurística é enganosa em ambas as direções?
3.36 Invente uma função heurística para o quebra-cabeça de 8 que às vezes superestima e mostre como ela
pode levar a uma solução abaixo do ideal para um problema específico. (Você pode usar um computador para
ajudar, se quiser.) Prove que, se h nunca superestima em mais de c, Aÿ usando h retorna uma solução cujo
custo excede o da solução ótima em não mais que c.
3.37 Prove que se uma heurística for consistente, ela deve ser admissível. Construa uma heurística admissível
que não seja consistente.
3.38 O problema do caixeiro viajante (TSP) pode ser resolvido por meio da heurística da árvore geradora
mínima (MST), que é usada para estimar o custo de completar um passeio, dado que um passeio parcial já foi
construído. O custo MST de um conjunto de cidades é a menor soma dos custos de enlace de qualquer árvore
que conecte todas as cidades.
a. Mostre como essa heurística pode ser derivada de uma versão relaxada do TSP.
3.39 Na página 106, definimos a relaxação do quebra-cabeça de 8 em que uma peça pode se mover do quadrado
A para o quadrado B se B estiver em branco. A solução exata deste problema define a heurística de Gaschnig
(Gaschnig, 1979). Explique por que a heurística de Gaschnig é pelo menos tão precisa quanto h1 (ladrilhos mal
posicionados) e mostre casos em que ela é mais precisa que h1 e h2 (distância de Manhattan). Você pode
sugerir uma maneira de calcular a heurística de Gaschnig com eficiência?
3.40 Demos duas heurísticas simples para o quebra-cabeça de 8: distância de Manhattan e peças mal colocadas.
Várias heurísticas na literatura pretendem melhorar isso - veja, por exemplo, Nils son (1971), Mostow e Prieditis
(1989) e Hansson et al. (1992). Teste essas afirmações implementando a heurística e comparando o desempenho
dos algoritmos resultantes.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
4 ALÉM DO CLÁSSICO
PROCURAR
Então, nas Seções 4.3–4.4, examinamos o que acontece quando relaxamos as suposições de
determinismo e observabilidade. A ideia-chave é que, se um agente não puder prever exatamente qual
percepção receberá, precisará considerar o que fazer em cada contingência que suas percepções
possam revelar. Com a observabilidade parcial, o agente também precisará acompanhar os estados em
que pode estar.
Por fim, a Seção 4.5 investiga a busca online, na qual o agente se depara com um espaço de
estados inicialmente desconhecido e que deve ser explorado.
Os algoritmos de busca que vimos até agora são projetados para explorar os espaços de busca
sistematicamente. Essa sistematicidade é alcançada mantendo um ou mais caminhos na memória e
registrando quais alternativas foram exploradas em cada ponto ao longo do caminho e quais não foram.
Quando um objetivo é encontrado, o caminho para esse objetivo também constitui uma solução para o problema.
Em muitos problemas, no entanto, o caminho para a meta é irrelevante. Por exemplo, no problema
das 8 rainhas (ver página 73), o que importa é a configuração final das rainhas, não a ordem em que são
adicionadas. A mesma propriedade geral é válida para muitas aplicações importantes, como projeto de
circuito integrado, layout de chão de fábrica, programação de oficina, automação automática
123
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
função objetiva
máximo global
ombro
máximo local
espaço de estado
Estado
atual
Figura 4.1 Uma paisagem de espaço de estado unidimensional na qual a elevação corresponde à função objetivo.
O objetivo é encontrar o máximo global. A busca de escalada modifica o estado atual para tentar melhorá-lo, como
mostra a seta. As várias características topográficas são definidas no texto.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
Figura 4.2 O algoritmo de busca por subida de encosta, que é a técnica de busca local mais básica. A cada passo
o nó atual é substituído pelo melhor vizinho; nesta versão, isso significa o vizinho com o maior VALUE, mas se uma
estimativa de custo heurística h for usada, encontraríamos o vizinho com o menor h.
ESCALADA O algoritmo de busca de subida de encosta ( versão de subida mais íngreme) é mostrado na Figura 4.2. É
STEEPEST ASCENT simplesmente um loop que se move continuamente na direção do valor crescente - ou seja, para cima. Ele
termina quando atinge um “pico” onde nenhum vizinho tem um valor maior. O algoritmo não mantém uma árvore
de busca, então a estrutura de dados para o nó atual precisa apenas registrar o estado e o valor da função
objetivo. A escalada de encostas não olha além dos vizinhos imediatos do estado atual. Isso se assemelha a
tentar encontrar o topo do Monte Everest em uma névoa espessa enquanto sofre de amnésia.
Para ilustrar a subida de colina, usaremos o problema das 8 rainhas apresentado na página 73. Os
algoritmos de busca local geralmente usam uma formulação de estado completo, em que cada estado tem 8
rainhas no tabuleiro, uma por coluna. Os sucessores de um estado são todos os estados possíveis gerados ao
mover uma única rainha para outro quadrado na mesma coluna (portanto, cada estado tem 8 × 7 = 56
sucessores). A função de custo heurística h é o número de pares de rainhas que estão se atacando, direta ou
indiretamente. O mínimo global desta função é zero, o que ocorre apenas em soluções perfeitas. A Figura 4.3(a)
mostra um estado com h = 17. A figura também mostra os valores de todos os seus sucessores, com os melhores
sucessores tendo h = 12. Algoritmos de escalada normalmente escolhem aleatoriamente entre o conjunto de
melhores sucessores, se houver mais do que um.
GREEDY LOCAL
PROCURAR
Às vezes, a escalada de colina é chamada de busca local gananciosa porque captura um bom estado
vizinho sem pensar com antecedência sobre para onde ir em seguida. Embora a ganância seja considerada um
dos sete pecados capitais, verifica-se que os algoritmos gananciosos geralmente funcionam muito bem. A
escalada de encosta geralmente faz um progresso muito rápido em direção a uma solução, porque geralmente é
muito fácil melhorar um estado ruim. Por exemplo, do estado da Figura 4.3(a), são necessários apenas cinco
passos para chegar ao estado da Figura 4.3(b), que tem h = 1 e é quase uma solução. Infelizmente, a escalada
de colinas costuma travar pelos seguintes motivos:
MÁXIMO LOCAL • Máximos locais: um máximo local é um pico maior que cada um de seus estados vizinhos, mas menor
que o máximo global. Os algoritmos de subida de encosta que atingem a vizinhança de um máximo local
serão atraídos para cima em direção ao pico, mas ficarão presos sem ter para onde ir. A Figura 4.1 ilustra
esquematicamente o problema. Mais
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
18 12 14 13 13 12 14 14
14 16 13 15 12 14 12 16
14 12 18 13 15 12 14 14
15 14 14 13 16 13 16
14 17 15 14 16 16
17 16 18 15 15
18 14 15 15 14 16
14 14 13 17 12 14 12 18
(a) (b)
Figura 4.3 (a) Um estado de 8 rainhas com estimativa de custo heurística h = 17, mostrando o valor de h para cada
possível sucessor obtido movendo uma rainha dentro de sua coluna. As melhores jogadas são marcadas. (b) Um
mínimo local no espaço de estados de 8 rainhas; o estado tem h = 1 , mas todo sucessor tem um custo maior.
concretamente, o estado na Figura 4.3(b) é um máximo local (isto é, um mínimo local para o custo h); cada
movimento de uma única rainha piora a situação. • Cumes: um cume é mostrado
CUME na Figura 4.4. As cristas resultam em uma sequência de máximos locais
isso é muito difícil para algoritmos gananciosos navegarem.
PLATÔ • Planaltos: um planalto é uma área da paisagem do espaço de estado onde a função objetivo é plana. Pode ser
OMBRO um máximo local plano, a partir do qual não existe saída ascendente, ou um acostamento, a partir do qual é
possível progredir. (Veja a Figura 4.1.) Uma busca por subida de encosta pode ser incapaz de encontrar o
caminho para fora do platô.
Em cada caso, o algoritmo atinge um ponto em que nenhum progresso está sendo feito. Partindo de um estado de 8
rainhas gerado aleatoriamente, a subida mais íngreme fica travada 86% do tempo, resolvendo apenas 14% das
instâncias do problema. Funciona rapidamente, dando apenas 4 passos em média quando
8 ÿ 17 milhões de estados.
é bem-sucedido e 3 quando fica preso - nada mal para um espaço de estado com 8
O algoritmo da Figura 4.2 para se atingir um platô onde o melhor sucessor tem o mesmo valor do estado atual.
Não seria uma boa ideia continuar - permitir um movimento lateral na esperança de que o platô seja realmente um
MOVIMENTO PARA O LADO ombro, como mostrado na Figura 4.1? A resposta geralmente é sim, mas devemos tomar cuidado. Se sempre
permitirmos movimentos laterais quando não houver movimentos ascendentes, um loop infinito ocorrerá sempre que
o algoritmo atingir um máximo local plano que não seja um ombro. Uma solução comum é colocar um limite no
número de movimentos laterais consecutivos permitidos. Por exemplo, poderíamos permitir até, digamos, 100
movimentos laterais consecutivos no problema das 8 rainhas. Isso aumenta a porcentagem de instâncias do problema
resolvidas por escalada de 14% para 94%. O sucesso tem um custo: as médias do algoritmo
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
Figura 4.4 Ilustração de por que os cumes causam dificuldades para escalar colinas. A grade de estados
(círculos escuros) é sobreposta em uma crista ascendente da esquerda para a direita, criando uma
sequência de máximos locais que não estão diretamente conectados entre si. A partir de cada máximo local,
todas as ações disponíveis apontam para baixo.
ESCALANDO Muitas variantes de escalada foram inventadas. A escalada estocástica escolhe aleatoriamente entre os
movimentos ascendentes; a probabilidade de seleção pode variar com a inclinação do movimento ascendente.
Isso geralmente converge mais lentamente do que a subida mais íngreme, mas em algumas paisagens do estado
MONTE DE PRIMEIRA ESCOLHA
ESCALANDO encontra soluções melhores. A escalada de primeira escolha implementa a escalada estocástica, gerando
sucessores aleatoriamente até que seja gerado um que seja melhor do que o estado atual. Esta é uma boa
estratégia quando um estado tem muitos (por exemplo, milhares) de sucessores.
O Exercício 4.12 pede que você investigue.
Os algoritmos de subida descritos até agora são incompletos – eles muitas vezes falham em encontrar um
objetivo quando existe porque podem ficar presos em máximos locais. A subida de rampa com reinício aleatório
RANDOM-RESTART
ESCALADA DE MONTANHA adota o conhecido ditado: “Se você não conseguir de primeira, tente, tente novamente”. Ele conduz uma série de
buscas de escalada a partir de estados iniciais gerados aleatoriamente,1 parando quando um objetivo é encontrado.
É completo com probabilidade próxima de 1, pela razão trivial de que eventualmente gerará um estado objetivo
como o estado inicial. Se cada busca de subida tem uma probabilidade p de sucesso, então o número esperado
de reinicializações necessárias é 1/p. Para instâncias de 8 rainhas sem movimentos laterais permitidos, p ÿ 0,14,
então precisamos de aproximadamente 7 iterações para encontrar uma meta (6 falhas e 1 sucesso). O número
esperado de etapas é o custo de uma iteração bem-sucedida mais (1 ÿ p)/p vezes o custo da falha, ou
aproximadamente 22 etapas no total. Quando permitimos movimentos laterais, 1/0,94 ÿ 1,06 iterações são
necessárias em média e (1 × 21) + (0,06/0,94) × 64 ÿ 25 passos. Para 8-rainhas, então, a subida de colina com
reinício aleatório é realmente muito eficaz. Mesmo para três milhões de rainhas, a abordagem pode encontrar
soluções em menos de
1 Gerar um estado aleatório a partir de um espaço de estado especificado implicitamente pode ser um problema difícil por si só.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
um minuto.2
O sucesso da subida de encosta depende muito da forma da paisagem do espaço de estados: se houver
poucos máximos e platôs locais, a subida de encosta com reinício aleatório encontrará uma boa solução muito
rapidamente. Por outro lado, muitos problemas reais têm uma paisagem que mais parece uma família amplamente
dispersa de porcos-espinhos carecas em um piso plano, com porcos-espinhos em miniatura vivendo na ponta de
cada agulha de porco-espinho, ad infinitum . Problemas NP-difíceis normalmente têm um número exponencial de
máximos locais para se fixar. Apesar disso, um máximo local razoavelmente bom geralmente pode ser encontrado
após um pequeno número de reinicializações.
Um algoritmo de subida de colina que nunca faz movimentos “descendo” em direção a estados com menor valor
(ou maior custo) é garantido como incompleto, porque pode ficar preso em um máximo local.
Em contraste, um passeio puramente aleatório – isto é, movendo-se para um sucessor escolhido uniformemente
ao acaso do conjunto de sucessores – é completo, mas extremamente ineficiente. Portanto, parece razoável
tentar combinar a subida de encosta com uma caminhada aleatória de alguma forma que produza eficiência e
SIMULADO
ANELAMENTO
completude. O recozimento simulado é um algoritmo desse tipo. Na metalurgia, o recozimento é o processo
usado para temperar ou endurecer metais e vidro, aquecendo-os a uma temperatura elevada e depois resfriando-
os gradualmente, permitindo assim que o material atinja um estado cristalino de baixa energia. Para entender o
recozimento simulado, vamos mudar nosso ponto de vista da subida do GRADIENT DESCENT para a descida
do gradiente (ou seja, minimizando o custo) e imagine a tarefa de colocar uma bola de pingue-pongue na fenda mais profunda de
uma superfície irregular. Se apenas deixarmos a bola rolar, ela irá parar em um mínimo local. Se sacudirmos a
superfície, podemos quicar a bola para fora do mínimo local. O truque é sacudir com força suficiente para quicar
a bola para fora dos mínimos locais, mas não com força suficiente para desalojá-la do mínimo global. A solução
de recozimento simulado é começar agitando forte (ou seja, em alta temperatura) e depois reduzir gradualmente
a intensidade da agitação (ou seja, diminuir a temperatura).
O loop mais interno do algoritmo de recozimento simulado (Figura 4.5) é bastante semelhante à subida de
colina. Em vez de escolher o melhor movimento, no entanto, ele escolhe um movimento aleatório . Se a mudança
melhorar a situação, ela é sempre aceita. Caso contrário, o algoritmo aceita o movimento com alguma probabilidade
menor que 1. A probabilidade diminui exponencialmente com a “ruimidade” do movimento – a quantidade ÿE pela
qual a avaliação piora. A probabilidade também diminui à medida que a “temperatura” T diminui: movimentos
“ruins” são mais prováveis de serem permitidos no início quando a temperatura está alta, e tornam-se mais
improváveis à medida que T diminui. Pode-se provar que, se o cronograma diminuir T devagar o suficiente, o
algoritmo encontrará um ótimo global com probabilidade próxima de 1.
O recozimento simulado foi usado extensivamente pela primeira vez para resolver problemas de layout
VLSI no início de 1980. Tem sido amplamente aplicado ao agendamento de fábrica e outras tarefas de otimização
em larga escala. No Exercício 4.12, você é solicitado a comparar seu desempenho com o de uma subida de
colina com reinício aleatório no quebra-cabeça de 8 rainhas.
2 Luby et ai. (1993) provam que é melhor, em alguns casos, reiniciar um algoritmo de busca aleatória após um
determinado período de tempo fixo e que isso pode ser muito mais eficiente do que deixar cada busca continuar indefinidamente.
Proibir ou limitar o número de movimentos laterais é um exemplo disso.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
Figura 4.5 O algoritmo de busca de recozimento simulado, uma versão estocástica de subida de encosta onde
alguns movimentos de descida são permitidos. Os movimentos descendentes são aceitos prontamente no início do
cronograma de recozimento e, em seguida, com menos frequência com o passar do tempo. A entrada do
cronograma determina o valor de T em função do tempo.
Manter apenas um nó na memória pode parecer uma reação extrema ao problema de limitações de memória. O
FEIXE LOCAL
PROCURAR algoritmo de busca de feixe local3 rastreia k estados em vez de apenas um. Começa com k estados gerados
aleatoriamente. A cada passo, todos os sucessores de todos os k estados são gerados. Se qualquer um for uma
meta, o algoritmo para. Caso contrário, ele seleciona os k melhores sucessores da lista completa e repete.
À primeira vista, uma busca de feixe local com k estados pode parecer nada mais do que executar k
reinicializações aleatórias em paralelo, em vez de em sequência. Na verdade, os dois algoritmos são bastante
diferentes. Em uma pesquisa de reinício aleatório, cada processo de pesquisa é executado independentemente
dos outros. Em uma busca de feixe local, informações úteis são passadas entre os k threads de busca paralelos.
Por exemplo, se um estado gera vários sucessores bons e todos os outros kÿ1 estados geram sucessores ruins,
então o efeito é que o primeiro estado diz aos outros: “Venha aqui, a grama é mais verde!” O algoritmo abandona
rapidamente as buscas infrutíferas e move seus recursos para onde o maior progresso está sendo feito.
Em sua forma mais simples, a busca de feixe local pode sofrer com a falta de diversidade entre os k
estados - eles podem se concentrar rapidamente em uma pequena região do espaço de estados, tornando a
busca pouco mais do que uma versão cara de subida de colina. Uma variante chamada busca de feixe
FEIXE ESTOCÁSTICO
PROCURAR estocástico, análoga à subida de encosta estocástica, ajuda a aliviar esse problema. Em vez de escolher o
melhor k do pool de candidatos a sucessores, a busca estocástica de feixes escolhe k sucessores aleatoriamente,
com a probabilidade de escolher um dado sucessor sendo uma função crescente de seu valor. A busca de feixe
estocástico tem alguma semelhança com o processo de seleção natural, pelo qual os “sucessores” (filhos) de
um “estado” (organismo)
3 A busca de feixe local é uma adaptação da busca de feixe, que é um algoritmo baseado em caminho.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
Figura 4.6 O algoritmo genético, ilustrado para strings de dígitos representando estados de 8 rainhas.
A população inicial em (a) é ranqueada pela função fitness em (b), resultando em pares para acasalamento em (c).
Eles produzem descendentes em (d), que estão sujeitos à mutação em (e).
4 Existem muitas variantes dessa regra de seleção. O método de abate, no qual todos os indivíduos abaixo de um determinado
limite são descartados, pode mostrar uma convergência mais rápida do que a versão aleatória (Baum et al., 1995).
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
+ =
Figura 4.7 Os estados de 8 rainhas correspondentes aos dois primeiros pais na Figura 4.6(c) e ao primeiro filho na
Figura 4.6(d). As colunas sombreadas são perdidas na etapa de cruzamento e as colunas não sombreadas são
mantidas.
no segundo par.5 Em
(d), os próprios descendentes são criados cruzando as sequências-mãe no ponto de cruzamento.
Por exemplo, o primeiro filho do primeiro par recebe os três primeiros dígitos do primeiro pai e os dígitos
restantes do segundo pai, enquanto o segundo filho recebe os três primeiros dígitos do segundo pai e o
restante do primeiro pai. Os estados de 8 rainhas envolvidos nessa etapa de reprodução são mostrados
na Figura 4.7. O exemplo ilustra o fato de que, quando dois estados pais são bastante diferentes, a
operação de cruzamento pode produzir um estado muito distante de qualquer um dos estados pais.
Muitas vezes, a população é bastante diversa no início do processo, de modo que o cruzamento (como
o recozimento simulado) frequentemente dá grandes passos no espaço de estado no início do processo
de busca e passos menores mais tarde, quando a maioria dos indivíduos é bastante semelhante.
MUTAÇÃO Finalmente, em (e), cada localização está sujeita a mutação aleatória com uma pequena
probabilidade independente. Um dígito foi mutado no primeiro, terceiro e quarto descendentes. No
problema das 8 rainhas, isso corresponde a escolher uma rainha ao acaso e movê-la para um quadrado
aleatório em sua coluna. A Figura 4.8 descreve um algoritmo que implementa todas essas etapas.
Como a busca de feixe estocástico, os algoritmos genéticos combinam uma tendência ascendente
com exploração aleatória e troca de informações entre segmentos de busca paralelos. A principal
vantagem, se houver, dos algoritmos genéticos vem da operação de cruzamento. No entanto, pode-se
mostrar matematicamente que, se as posições do código genético forem permutadas inicialmente em
uma ordem aleatória, o cruzamento não traz nenhuma vantagem. Intuitivamente, a vantagem vem da
capacidade do crossover de combinar grandes blocos de letras que evoluíram independentemente para
desempenhar funções úteis, elevando assim o nível de granularidade em que a busca opera. Por
exemplo, pode ser que colocar as três primeiras rainhas nas posições 2, 4 e 6 (onde elas não se atacam)
constitua um bloco útil que pode ser combinado com outros blocos para construir uma solução.
ESQUEMA A teoria dos algoritmos genéticos explica como isso funciona usando a ideia de um esquema,
que é uma substring na qual algumas das posições podem ser deixadas sem especificação. Por
exemplo, o esquema 246***** descreve todos os estados de 8 rainhas nos quais as três primeiras rainhas estão em
5 É aqui que a codificação importa. Se uma codificação de 24 bits for usada em vez de 8 dígitos, o ponto de cruzamento
terá 2/3 de chance de estar no meio de um dígito, o que resulta em uma mutação essencialmente arbitrária desse dígito.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
repetir
nova população ÿ conjunto vazio
para i = 1 para TAMANHO(população)
do x ÿ SELEÇÃO ALEATÓRIA(população, FITNESS-FN) y ÿ
SELEÇÃO ALEATÓRIA(população, FITNESS-FN) filho ÿ
REPRODUZIR(x , y) if ( pequena
probabilidade aleatória) então filho ÿ MUTATE(filho) adiciona filho à nova
população
população ÿ nova população
até que algum indivíduo esteja apto o suficiente, ou tenha decorrido tempo
suficiente, retorne o melhor indivíduo da população, de acordo com o FITNESS-FN
Figura 4.8 Um algoritmo genético. O algoritmo é o mesmo diagramado na Figura 4.6, com uma variação: nessa
versão mais popular, cada acasalamento de dois pais produz apenas um descendente, não dois.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
EVOLUÇÃO E PESQUISA
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
No Capítulo 2, explicamos a distinção entre ambientes discretos e contínuos, apontando que a maioria
dos ambientes do mundo real é contínua. No entanto, nenhum dos algoritmos que descrevemos
(exceto para escalada de primeira escolha e recozimento simulado) pode lidar com estados contínuos
e espaços de ação, porque eles têm fatores de ramificação infinitos. Esta seção fornece uma breve
introdução a algumas técnicas de busca local para encontrar soluções ótimas em espaços contínuos.
A literatura sobre esse tópico é vasta; muitas das técnicas básicas se originaram no século XVII, após
o desenvolvimento do cálculo por Newton e Leibniz.6 Encontraremos usos para essas técnicas em
várias partes do livro, incluindo os capítulos sobre aprendizagem, visão e robótica.
Comecemos com um exemplo. Suponha que queremos colocar três novos aeroportos em
qualquer lugar da Romênia, de modo que a soma das distâncias quadradas de cada cidade no mapa
(Figura 3.2) ao aeroporto mais próximo seja minimizada. Então o espaço de estados é definido pelas
coordenadas dos aeroportos: (x1, y1), (x2, y2) e (x3, y3). Este é um espaço de seis dimensões ;
VARIÁVEL também dizemos que os estados são definidos por seis variáveis. (Em geral, os estados são definidos
por um vetor n-dimensional de variáveis, x.) Mover-se neste espaço corresponde a mover um ou mais
aeroportos no mapa. A função objetivo f(x1, y1, x2, y2, x3, y3) é relativamente fácil de calcular para
qualquer estado particular, uma vez que calculamos as cidades mais próximas. Seja Ci o conjunto de
cidades mais próximas da posição atual do aeroporto i. Então, na vizinhança do estado atual, onde os
Cis permanecem constantes, temos
3
2 2
f(x1, y1, x2, y2, x3, y3) = (xi ÿ xc) + (yi ÿ yc) . (4.1)
i = 1 cÿCi
Esta expressão está correta localmente , mas não globalmente, porque os conjuntos Ci são funções
(descontínuas) do estado.
DISCRETIZAÇÃO Uma forma de evitar problemas contínuos é simplesmente discretizar a vizinhança de cada
estado. Por exemplo, podemos mover apenas um aeroporto por vez na direção x ou y por um valor
fixo ±ÿ. Com 6 variáveis, isso dá 12 sucessores possíveis para cada estado. Podemos então aplicar
qualquer um dos algoritmos de busca local descritos anteriormente. Também poderíamos aplicar
escalada estocástica e recozimento simulado diretamente, sem discretizar o espaço.
Esses algoritmos escolhem os sucessores aleatoriamente, o que pode ser feito gerando vetores aleatórios
de comprimento ÿ.
GRADIENTE Existem muitos métodos que tentam usar o gradiente da paisagem para encontrar um máximo.
O gradiente da função objetivo é um vetor ÿf que fornece a magnitude e a direção da inclinação mais
íngreme. Para o nosso problema, temos ÿf ÿx2
ÿf ÿf ÿf ÿf ÿf
ÿf = , , , , , .
ÿx1 ÿy1 ÿy2 ÿx3 ÿy3
Em alguns casos, podemos encontrar um máximo resolvendo a equação ÿf = 0. (Isso poderia ser feito,
por exemplo, se estivéssemos colocando apenas um aeroporto; a solução é a média aritmética de todos os
6 Um conhecimento básico de cálculo multivariado e aritmética vetorial é útil para a leitura desta seção.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
coordenadas das cidades.) Em muitos casos, porém, essa equação não pode ser resolvida de forma fechada.
Por exemplo, com três aeroportos, a expressão do gradiente depende de quais cidades estão mais próximas
de cada aeroporto no estado atual. Isso significa que podemos calcular o gradiente localmente (mas não
globalmente); por exemplo, ÿf ÿx1
Dada uma expressão localmente correta para o gradiente, podemos executar a subida mais íngreme
atualizando o estado atual por meio da fórmula
x ÿ x + ÿÿf(x) ,
onde ÿ é uma pequena constante. Em outros casos, a função objetivo pode não estar disponível em uma
forma diferenciável – por exemplo, o valor de um determinado conjunto de localizações de aeroportos pode
ser determinado pela execução de algum pacote de simulação econômica em larga escala. Nesses casos,
EMPÍRICO
GRADIENTE
um chamado gradiente empírico pode ser determinado avaliando a resposta a pequenos incrementos e
decréscimos em cada coordenada. A busca em gradiente empírica é a mesma que a subida mais íngreme
em uma versão discretizada do espaço de estado.
Escondida sob a frase “ÿ é uma pequena constante” encontra-se uma enorme variedade de métodos
para ajustar ÿ. O problema básico é que, se ÿ for muito pequeno, serão necessários muitos passos; se ÿ for
PESQUISA DE LINHA muito grande, a busca pode ultrapassar o máximo. A técnica de busca linear tenta superar esse dilema
estendendo a direção do gradiente atual – geralmente dobrando repetidamente ÿ – até que f comece a
diminuir novamente. O ponto em que isso ocorre torna-se o novo estado atual. Existem várias escolas de
pensamento sobre como a nova direção deve ser escolhida neste momento.
NEWTON-RAPHSON Para muitos problemas, o algoritmo mais eficaz é o venerável método Newton-Raphson (Newton,
1671; Raphson, 1690). Esta é uma técnica geral para encontrar raízes de funções - isto é, resolver equações
da forma g(x) = 0. Funciona calculando uma nova estimativa para a raiz x de acordo com a fórmula de Newton
x ÿ x ÿ g(x)/gÿ (x) .
Para encontrar um máximo ou mínimo de f, precisamos encontrar x tal que o gradiente seja zero (isto é, ÿf(x)
= 0). Assim, g(x) na fórmula de Newton torna-se ÿf(x), e a equação de atualização pode ser escrita na forma
de matriz-vetor como
ÿ1
xÿxÿHf (x)ÿf(x) ,
HESSIANO onde Hf (x) é a matriz Hessiana das segundas derivadas, cujos elementos Hij são dados por ÿ 2f /ÿxiÿxj .
Para nosso exemplo de aeroporto, podemos ver na Equação (4.2) que Hf (x) é particularmente simples: os
elementos fora da diagonal são zero e os elementos da diagonal para o aeroporto i são apenas duas vezes o
número de cidades em Ci . Um cálculo rápido mostra que uma etapa da atualização move o
aeroporto i diretamente para o centróide de Ci , que é,o mínimo da expressão local para f da Equação (4.1).7
Em geral, problemas de alta dimensão, no entanto, calcular o
7 Em geral, a atualização de Newton-Raphson pode ser vista como ajustando uma superfície quadrática a f em x e, em seguida,
movendo-se diretamente para o mínimo dessa superfície — que também é o mínimo de f se f for quadrática.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
No Capítulo 3, assumimos que o ambiente é totalmente observável e determinístico e que o agente sabe
quais são os efeitos de cada ação. Portanto, o agente pode calcular exatamente qual estado resulta de
qualquer sequência de ações e sempre sabe em qual estado está. Suas percepções não fornecem novas
informações após cada ação, embora, é claro, digam ao agente o estado inicial.
8 Um conjunto de pontos S é convexo se a linha que une quaisquer dois pontos em S também está contida em S. Uma função é
convexa se o espaço “acima” dela forma um conjunto convexo; por definição, as funções convexas não têm mínimos locais.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
1 2
3 4
5 6
7 8
Figura 4.9 Os oito estados possíveis do mundo do vácuo; os estados 7 e 8 são estados objetivos.
• Quando aplicado a um quadrado sujo, ele o limpa e, às vezes, limpa a sujeira em um quadrado adjacente
quadrado também.
Para fornecer uma formulação precisa desse problema, precisamos generalizar a noção de modelo de
transição do Capítulo 3. Em vez de definir o modelo de transição por uma função RESULT que retorna um
único estado, usamos uma função RESULTS que retorna um conjunto de possíveis estados de resultado. Por
exemplo, no mundo do vácuo errático, a ação Sugar no estado 1 leva a um estado no conjunto {5, 7} - a sujeira
no quadrado à direita pode ou não ser aspirada.
Também precisamos generalizar a noção de solução para o problema. Por exemplo, se começarmos
no estado 1, não existe uma única sequência de ações que resolva o problema. Em vez disso, precisamos de
um plano contingente como o seguinte:
9 Presumimos que a maioria dos leitores enfrenta problemas semelhantes e pode simpatizar com nosso agente. Pedimos desculpas
aos proprietários de eletrodomésticos modernos e eficientes que não possam usufruir deste dispositivo pedagógico.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação final.
©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
Assim, as soluções para problemas não determinísticos podem conter instruções if-then-else aninhadas ,
de modo que sejam árvores em vez de sequências. Isso permite a seleção de ações com base nas
contingências surgidas durante a execução. Muitos problemas no mundo físico real são problemas de
contingência, porque a previsão exata é impossível. Por esse motivo, muitas pessoas mantêm os olhos
abertos enquanto caminham ou dirigem.
A próxima questão é como encontrar soluções contingentes para problemas não determinísticos. Como
no Capítulo 3, começamos construindo árvores de busca, mas aqui as árvores têm um caráter diferente.
Em um ambiente determinístico, a única ramificação é introduzida pelas próprias escolhas do agente
OU NÓ em cada estado. Chamaremos esses nós de OU nós. No mundo do vácuo, por exemplo, em um nó
OU , o agente escolhe Esquerda, Direita ou Sucção. Em um ambiente não determinístico, a ramificação
também é introduzida pela escolha do resultado do ambiente para cada ação. Chamaremos esses nós
E NÓ de E nós. Por exemplo, a ação Suck no estado 1 leva a um estado no conjunto {5, 7}, então o agente
precisaria encontrar um plano para o estado 5 e para o estado 7. Esses dois tipos de nós se alternam,
E-OU ÁRVORE levando a um AND -OR conforme ilustrado na Figura 4.10.
chupar Certo
7 5 2
META
chupar Certo Esquerda chupar
5 1 6 1 8 4
chupar
LAÇO LAÇO Esquerda
LAÇO META
8 5
META LAÇO
Figura 4.10 Os dois primeiros níveis da árvore de busca para o mundo do vácuo errático. Os nós de estado são
nós OU onde alguma ação deve ser escolhida. Nos nós AND , mostrados como círculos, cada resultado deve ser
tratado, conforme indicado pelo arco que liga os ramos de saída. A solução encontrada é mostrada em linhas em
negrito.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
Figura 4.11 Um algoritmo para pesquisar grafos AND-OR gerados por ambientes não determinísticos.
Ele retorna um plano condicional que atinge um estado de meta em todas as circunstâncias. (A notação
[x | l] refere-se à lista formada pela adição do objeto x à frente da lista l.)
Uma solução para um problema de busca AND-OR é uma subárvore que (1) tem um nó objetivo em cada
folha, (2) especifica uma ação em cada um de seus nós OR e (3) inclui todos os ramos de saída em cada um de
seus nós AND . nós. A solução é mostrada em negrito na figura; corresponde ao plano dado na Equação (4.3).
(O plano usa a notação if-then-else para lidar com as ramificações AND , mas quando há mais de duas
ramificações em um nó, pode ser melhor usar uma construção case .) Modificando o agente básico de solução
de problemas mostrado na Figura 3.1 para executar soluções contingentes desse tipo é simples. Pode-se
também considerar um design de agente um pouco diferente, no qual o agente pode agir antes de encontrar um
plano garantido e lidar com algumas contingências apenas quando elas surgem durante a execução. Esse tipo
INTERCALANDO de intercalação de pesquisa e execução também é útil para problemas de exploração (consulte a Seção 4.5) e
para jogos (consulte o Capítulo 5).
A Figura 4.11 fornece um algoritmo recursivo em profundidade para pesquisa de grafos AND-OR . Um
aspecto fundamental do algoritmo é a maneira como ele lida com os ciclos, que geralmente surgem em problemas
não determinísticos (por exemplo, se uma ação às vezes não tem efeito ou se um efeito não intencional pode ser
corrigido). Se o estado atual for idêntico a um estado no caminho da raiz, ele retornará com falha. Isso não
significa que não haja solução do estado atual; significa simplesmente que, se houver uma solução não cíclica,
ela deve ser alcançável a partir da encarnação anterior do estado atual, para que a nova encarnação possa ser
descartada. Com essa verificação, garantimos que o algoritmo termine em todo espaço de estado finito, porque
todo caminho deve atingir uma meta, um beco sem saída ou um estado repetido. Observe que o algoritmo não
verifica se o estado atual é uma repetição de um estado em algum outro caminho da raiz, o que é importante
para a eficiência. O Exercício 4.3 investiga esta questão.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
chupar Certo
5 2
Certo
Figura 4.12 Parte do grafo de busca para o mundo do vácuo escorregadio, onde mostramos (alguns) ciclos
explicitamente. Todas as soluções para este problema são planos cíclicos porque não há como se mover de forma
confiável
Os gráficos AND-OR também podem ser explorados por métodos de largura primeiro ou melhor
primeiro, e há um análogo direto do algoritmo Aÿ para encontrar soluções ótimas. Indicadores são dados
nas notas bibliográficas no final do capítulo.
Considere o mundo do vácuo escorregadio, que é idêntico ao mundo do vácuo comum (não errático),
exceto que as ações de movimento às vezes falham, deixando o agente no mesmo local.
Por exemplo, mover para a direita no estado 1 leva ao conjunto de estados {1, 2}. A Figura 4.12 mostra
parte do grafo de busca; claramente, não há mais soluções acíclicas do estado 1, e CYCLIC SOLUTION
AND-OR-GRAPH-SEARCH retornaria com falha. Existe, porém, uma solução cíclica, que é continuar tentando o Certo
RÓTULO até dar certo. Podemos expressar essa solução adicionando um rótulo para denotar alguma parte do
plano e usar esse rótulo posteriormente, em vez de repetir o próprio plano.
Assim, nossa solução cíclica é
(Uma sintaxe melhor para a parte de loop deste plano seria “while State = 5 do Right.”)
Em geral, um plano cíclico pode ser considerado uma solução, desde que cada folha seja um estado
objetivo e uma folha seja alcançável de todos os pontos do plano. As modificações necessárias para
AND-OR-GRAPH-SEARCH são abordadas no Exercício 4.4. A principal percepção é que um loop no
espaço de estado de volta para um estado L se traduz em um loop no plano de volta ao ponto onde o
subplano para o estado L é executado.
Dada a definição de uma solução cíclica, um agente executando tal solução eventualmente
alcançará o objetivo desde que cada resultado de uma ação não determinística eventualmente ocorra.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
Essa condição é razoável? Depende da razão para o não determinismo. Se a ação rolar um dado, então é
razoável supor que, eventualmente, sairá um seis. Se a ação for inserir a chave do cartão do hotel na
fechadura da porta e não funcionar da primeira vez, talvez funcione eventualmente ou talvez alguém tenha a
chave errada (ou o quarto errado!). Depois de sete ou oito tentativas, a maioria das pessoas presumirá que o
problema está na chave e retornará à recepção para obter uma nova. Uma forma de entender essa decisão é
dizer que a formulação inicial do problema (observável, não determinístico) é abandonada em favor de uma
formulação diferente (parcialmente observável, determinístico) onde a falha é atribuída a uma propriedade
não observável da chave. Teremos mais a dizer sobre esse assunto no Capítulo 13.
Agora nos voltamos para o problema da observabilidade parcial, onde as percepções do agente não são
suficientes para definir o estado exato. Conforme observado no início da seção anterior, se o agente estiver
em um dos vários estados possíveis, uma ação pode levar a um dos vários resultados possíveis - mesmo que
o ambiente seja determinístico. O conceito-chave necessário para resolver problemas parcialmente observáveis
ESTADO DE CRENÇA é o estado de crença, representando a crença atual do agente sobre os possíveis estados físicos em que ele
pode estar, dada a sequência de ações e percepções até aquele ponto. Começamos com o cenário mais
simples para estudar estados de crença, que é quando o agente não tem nenhum sensor; então adicionamos
detecção parcial, bem como ações não determinísticas.
10 Em um ambiente totalmente observável, cada estado de crença contém um estado físico. Assim, podemos ver os algoritmos no
Capítulo 3 como pesquisando em um espaço de estado de crença de estados de crença singleton.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
• Estados de crença: Todo o espaço de estado de crença contém todos os conjuntos possíveis de estados
N
Se P tiver N estados, então o problema sensorless tem até 2 físicos. estados, embora muitos possam
inalcançáveis a partir do estado inicial.
• Estado inicial: Tipicamente o conjunto de todos os estados em P, embora em alguns casos o agente
ter mais conhecimento do que isso.
• Ações: Isso é um pouco complicado. Suponha que o agente esteja no estado de crença b = {s1, s2},
mas ACTIONSP (s1) = ACTIONSP (s2); então o agente não tem certeza de quais ações são legais.
Se assumirmos que emitir uma ação ilegal não tem efeito sobre o meio ambiente, então é seguro fazer
a união de todas as ações em qualquer um dos estados físicos no estado de crença atual b:
Por outro lado, se uma ação ilegal pode ser o fim do mundo, é mais seguro permitir apenas a
interseção, ou seja, o conjunto de ações legais em todos os estados. Para o mundo do vácuo, todo
estado tem as mesmas ações legais, então união e interseção dão o mesmo resultado. • Modelo
de transição: O agente não sabe qual estado no estado de crença é o correto, pelo que sabe, pode
chegar a qualquer um dos estados resultantes da aplicação da ação a um dos estados físicos da
crença estado. Para ações determinísticas, o conjunto de estados que podem ser alcançados é
ÿ
ÿb
= RESULTADO(b, a) = {s ÿ:s ÿ RESULTSP (s, a) es ÿ b}
=
RESULTADOSSP (s,a) .
sÿb
que pode ser maior que b, como mostra a Figura 4.13. O processo de geração do novo estado de
PREDIÇÃO crença após a ação é chamado de etapa de previsão ; a notação b PREDICTP (b, a) será útil.
ÿ =
• Teste de objetivo: O agente deseja um plano que funcione com certeza, o que significa que um estado
de crença satisfaz o objetivo somente se todos os estados físicos nele satisfizerem GOAL-TESTP . O
agente pode acidentalmente atingir o objetivo antes, mas não saberá que o fez. • Custo do
caminho: Isso também é complicado. Se a mesma ação pode ter custos diferentes em estados diferentes,
então o custo de realizar uma ação em um determinado estado de crença pode ser um dos vários
valores. (Isso dá origem a uma nova classe de problemas, que exploramos no Exercício 4.7.)
Por enquanto, assumimos que o custo de uma ação é o mesmo em todos os estados e, portanto, pode
ser transferido diretamente do problema físico subjacente.
A Figura 4.14 mostra o espaço de estado de crença alcançável para o mundo de vácuo determinístico e sem
sensores. Existem apenas 12 estados de crença alcançáveis em 28 = 256 possíveis estados de crença.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
1 2 1 2
3 4 3 4
(a) (b)
Figura 4.13 (a) Prevendo o próximo estado de crença para o mundo do vácuo sem sensores com uma ação
determinística, Certo. (b) Previsão para o mesmo estado de crença e ação na versão escorregadia do mundo do
vácuo sem sensores.
Mesmo com essa melhoria, no entanto, a solução de problemas sem sensores, como descrevemos, raramente é
viável na prática. A dificuldade não é tanto a vastidão do espaço do estado de crença - mesmo que seja exponencialmente
maior do que o espaço do estado físico subjacente; na maioria dos casos, o fator de ramificação e o comprimento da
solução no espaço de estado de crença e no espaço de estado físico não são tão diferentes. A verdadeira dificuldade
reside no tamanho de cada estado de crença. Por exemplo, o estado de crença inicial para o mundo do vácuo de 10 ×
100
10 contém 100 × 2 1032 estados físicos — muito demais se usarmos a representação atômica, que é ou por volta
Uma solução é representar o estado de crença por alguma descrição mais compacta. Em inglês, poderíamos
dizer que o agente conhece “Nothing” no estado inicial; depois de mover para a esquerda, poderíamos dizer: “Não na
coluna mais à direita” e assim por diante. O Capítulo 7 explica como fazer isso em um esquema de representação formal.
Quando tal esquema pode ser desenvolvido, os solucionadores de problemas sem sensores são surpreendentemente
úteis, principalmente porque não dependem de sensores funcionando corretamente.
Em sistemas de manufatura, por exemplo, muitos métodos engenhosos foram desenvolvidos para orientar as peças
corretamente a partir de uma posição inicial desconhecida usando uma sequência de ações com
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
eu
eu R
S S
eu R
eu
S S
R
LR eu R
eu
S S
Figura 4.14 A porção alcançável do espaço de estado de crença para o mundo determinístico, sensor menos
vácuo. Cada caixa sombreada corresponde a um único estado de crença. Em qualquer ponto, o agente está em
um determinado estado de crença, mas não sabe em qual estado físico está. O estado de crença inicial (total
ignorância) é a caixa central superior. As ações são representadas por links rotulados. Auto-loops são omitidos
para maior clareza.
estado físico por vez. Por exemplo, no mundo do vácuo sem sensores, o estado de crença inicial é {1, 2, 3, 4, 5,
6, 7, 8} e temos que encontrar uma sequência de ação que funcione em todos os 8 estados. Podemos fazer isso
primeiro encontrando uma solução que funcione para o estado 1; então verificamos se funciona para o estado 2;
caso contrário, volte e encontre uma solução diferente para o estado 1 e assim por diante. Assim como uma
busca AND-OR precisa encontrar uma solução para cada ramificação em um nó AND , esse algoritmo precisa
encontrar uma solução para cada estado no estado de crença; a diferença é que a busca AND-OR pode encontrar
uma solução diferente para cada ramificação, enquanto uma busca incremental por estado de crença precisa
encontrar uma solução que funcione para todos os estados.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
A principal vantagem da abordagem incremental é que ela normalmente é capaz de detectar falhas muito
rapidamente - quando um estado de crença é insolúvel, geralmente é o caso de um pequeno subconjunto do
estado de crença, consistindo nos primeiros estados examinados, também é insolúvel. Em alguns casos, isso
leva a uma aceleração proporcional ao tamanho dos estados de crença, que podem ser tão grandes quanto o
próprio espaço de estado físico.
Mesmo o algoritmo de solução mais eficiente não é muito útil quando não existem soluções. Há muitas
coisas que não podem ser feitas sem sentir. Por exemplo, o quebra-cabeça de 8 sensores sem sensor é
impossível. Por outro lado, um pouco de percepção pode ajudar bastante. Por exemplo, cada instância do
quebra-cabeça de 8 é solucionável se apenas um quadrado estiver visível - a solução envolve mover cada
ladrilho sucessivamente para o quadrado visível e, em seguida, acompanhar sua localização.
Para um problema geral parcialmente observável, temos que especificar como o ambiente gera percepções para
o agente. Por exemplo, podemos definir o mundo de vácuo de detecção local como aquele em que o agente
possui um sensor de posição e um sensor de sujeira local, mas nenhum sensor capaz de detectar sujeira em
outros quadrados. A especificação formal do problema inclui uma função PERCEPT(s) que retorna a percepção
recebida em um determinado estado. (Se a detecção for não determinística, então usamos uma função
PERCEPTS que retorna um conjunto de percepções.) Por exemplo, no mundo do vácuo de detecção local, a
PERCEPÇÃO no estado 1 é [A, Sujo]. Problemas totalmente observáveis são um caso especial em que
PERCEPT(s) = s para cada estado s, enquanto problemas sem sensores são um caso especial em que
PERCEPT(s) = nulo.
Quando as observações são parciais, geralmente é o caso de vários estados poderem ter produzido uma
determinada percepção. Por exemplo, a percepção [A, Sujo] é produzida pelo estado 3, bem como pelo estado
1. Portanto, dado isso como a percepção inicial, o estado de crença inicial para o problema do mundo do vácuo
de detecção local será {1, 3}. As AÇÕES, STEP-COST e GOAL-TEST são construídas a partir do problema
físico subjacente, assim como para problemas sem sensores, mas o modelo de transição é um pouco mais
complicado. Podemos pensar nas transições como ocorrendo em três estágios, conforme mostrado na Figura
4.15:
• O estágio de predição é o mesmo para problemas sensorless: dada a ação a no estado de crença b, o
estado de crença predito é ˆb = PREDICT(b, a).
• O estágio de observação determina o conjunto de percepções que podem ser observadas no estado de
crença previsto:
• O estágio de atualização determina o estado de crença que resultaria de cada uma das percepções
possíveis. O novo estado de crença bo é apenas o conjunto de estados em ˆb que poderia ter produzido
a percepção o:
Observe que cada estado de crença atualizado bo não pode ser maior que o estado de crença previsto ˆb.
Além disso, para detecção determinística, os estados de crença para as diferentes percepções possíveis
serão disjuntos, formando uma partição do estado de crença previsto original.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
[B, Sujo] 2
Certo
1 2
(a)
3 4
[B, Limpo] 4
2
[B, Sujo]
Certo 2
1 1 [A, Sujo] 1
(b)
3 3 3
[B, Limpo]
4
Figura 4.15 Dois exemplos de transições em mundos de vácuo de detecção local. (a) No mundo determinístico,
Right é aplicado no estado de crença inicial, resultando em um novo estado de crença com dois estados físicos
possíveis; para esses estados, as percepções possíveis são [B, Sujo] e [B, Limpo], levando a dois estados de
crença, cada um dos quais é um singleton. (b) No mundo escorregadio, Right é aplicado no estado de crença
inicial, dando um novo estado de crença com quatro estados físicos; para esses estados, as percepções possíveis
são [A, Sujo], [B, Sujo] e [B, Limpo], levando a três estados de crença, conforme mostrado.
Juntando essas três etapas, obtemos os possíveis estados de crença resultantes de uma determinada
ação e as possíveis percepções subsequentes:
A seção anterior mostrou como formular um problema de estado de crença não determinístico - em
particular, a função RESULTS - de um problema físico subjacente e o PERCEPT
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
3
chupar Certo
5
2 4
Figura 4.16 O primeiro nível da árvore de busca AND-OR para um problema no mundo do vácuo de detecção
local; Suck é o primeiro passo da solução.
função. Dada tal formulação, o algoritmo de busca AND-OR da Figura 4.11 pode ser aplicado diretamente
para derivar uma solução. A Figura 4.16 mostra parte da árvore de busca para o mundo de detecção local
de vácuo, assumindo uma percepção inicial [A, Suja]. A solução é o plano condicional
Observe que, como fornecemos um problema de estado de crença ao algoritmo de pesquisa AND-OR , ele
retornou um plano condicional que testa o estado de crença em vez do estado real. É assim que deve ser:
em um ambiente parcialmente observável, o agente não será capaz de executar uma solução que exija
testar o estado real.
Como no caso dos algoritmos de busca padrão aplicados a problemas sem sensores, o algoritmo
de busca AND OR trata os estados de crença como caixas pretas, assim como qualquer outro estado. Pode-
se melhorar isso verificando os estados de crença gerados anteriormente que são subconjuntos ou
superconjuntos do estado atual, assim como para problemas sem sensoriamento. Pode-se também derivar
algoritmos de busca incremental, análogos aos descritos para problemas sem sensores, que fornecem
acelerações muito substanciais em relação à abordagem de caixa preta.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
1 5 5 6 2
3 7 7 4 6
Figura 4.17 Dois ciclos de previsão-atualização da manutenção do estado de crença no mundo do vácuo
do jardim de infância com detecção local.
agente. Dado um estado de crença inicial b, uma ação a e uma percepção o, o novo estado de crença é o seguinte:
A Figura 4.17 mostra o estado de crença sendo mantido no mundo do vácuo do jardim de infância com detecção
local, em que qualquer quadrado pode ficar sujo a qualquer momento, a menos que o agente o esteja limpando
ativamente naquele momento.11
Em ambientes parcialmente observáveis - que incluem a grande maioria dos - ambientes mundiais - manter
o estado de crença de alguém é uma função central de qualquer sistema inteligente. Ele tem vários nomes, incluindo
FILTRAGEM filtragem e estimativa de estado. A Equação (4.5) é chamada de STATE ESTIMATION , um estimador de estado
recursivo porque calcula o novo estado de crença a partir do anterior, em vez de examinar toda a sequência de percepção. Para que
RECURSIVO o agente não “fique para trás”, a computação deve acontecer tão rápido quanto as percepções estão chegando. À
medida que o ambiente se torna mais complexo, isso se torna impossível de ser feito exatamente e o agente terá
que calcular um estado de crença aproximado, talvez enfocando as implicações da percepção para os aspectos do
ambiente que são de interesse atual. A maioria das pesquisas sobre esse problema foi feita para ambientes
estocásticos de estado contínuo usando as ferramentas da teoria da probabilidade, conforme explicado no Capítulo
15.
PESQUISA OFFLINE Até agora nos concentramos em agentes que usam algoritmos de pesquisa offline . Eles calculam uma
solução completa antes de pisar no mundo real e, em seguida, executam a solução. Em contraste, um agente de
PESQUISA ONLINE pesquisa online12 opera intercalando computação e ação: primeiro ele realiza uma ação, depois observa o
ambiente e calcula a próxima ação. A pesquisa online é uma boa ideia em domínios dinâmicos ou semidinâmicos -
domínios onde há uma penalidade para
11 As desculpas usuais para aqueles que não estão familiarizados com o efeito de crianças pequenas no meio ambiente.
12 O termo “online” é comumente usado em ciência da computação para se referir a algoritmos que devem processar dados de entrada
à medida que são recebidos, em vez de esperar que todo o conjunto de dados de entrada fique disponível.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
sentado e computando por muito tempo. A pesquisa online também é útil em domínios não determinísticos,
porque permite que o agente concentre seus esforços computacionais nas contingências que realmente
surgem, em vez daquelas que podem acontecer, mas provavelmente não acontecerão. Claro, há uma
compensação: quanto mais um agente planeja com antecedência, menos frequentemente ele se encontrará
no riacho sem remar.
A busca online é uma ideia necessária para ambientes desconhecidos, onde o agente não sabe quais
estados existem ou o que suas ações fazem. Nesse estado de ignorância, o agente enfrenta um problema
EXPLORAÇÃO
PROBLEMA de exploração e deve usar suas ações como experimentos para aprender o suficiente para fazer a
deliberação valer a pena.
O exemplo canônico de busca online é um robô que é colocado em um novo prédio e deve explorá-lo
para construir um mapa que possa usar para ir de A a B. Métodos para escapar de labirintos - conhecimento
necessário para aspirantes a heróis da antiguidade - são também exemplos de algoritmos de busca online.
No entanto, a exploração espacial não é a única forma de exploração.
Considere um bebê recém-nascido: ele tem muitas ações possíveis, mas não conhece os resultados de
nenhuma delas e experimentou apenas alguns dos possíveis estados que pode atingir. A descoberta gradual
do bebê sobre como o mundo funciona é, em parte, um processo de busca online.
Um problema de busca online pode ser resolvido apenas por um agente executando ações, ao invés de um
processo puramente computacional. Assumiremos um ambiente determinístico e totalmente observável (o
Capítulo 17 relaxa essas suposições), mas estipularemos que o agente conhece apenas o seguinte:
DE METAS.
Observe em particular que o agente não pode determinar RESULT(s, a) exceto estando realmente em s e
fazendo a. Por exemplo, no problema do labirinto mostrado na Figura 4.18, o agente não sabe que subir de
(1,1) leva a (1,2); nem, tendo feito isso, sabe que descer o levará de volta a (1,1). Esse grau de ignorância
pode ser reduzido em algumas aplicações - por exemplo, um robô explorador pode saber como suas ações
de movimento funcionam e ignorar apenas a localização dos obstáculos.
Finalmente, o agente pode ter acesso a uma função heurística admissível h(s) que estima a distância
do estado atual ao estado objetivo. Por exemplo, na Figura 4.18, o agente pode saber a localização do
objetivo e ser capaz de usar a heurística da distância de Manhattan.
Normalmente, o objetivo do agente é atingir um estado de meta enquanto minimiza o custo. (Outro
objetivo possível é simplesmente explorar todo o ambiente.) O custo é o custo total do caminho que o agente
realmente percorre. É comum comparar esse custo com o custo do caminho que o agente seguiria se
conhecesse o espaço de busca com antecedência, ou seja , o caminho mais curto real (ou a exploração
completa mais curta). Na linguagem dos algoritmos online,
RELAÇÃO COMPETITIVA é chamada de relação competitiva; gostaríamos que fosse o menor possível.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
3 G
1S _
1 2 3
Figura 4.18 Um problema de labirinto simples. O agente começa em S e deve chegar a G, mas não conhece
nada do ambiente.
S A
S G
S A
G
(a) (b)
Figura 4.19 (a) Dois espaços de estado que podem levar um agente de busca online a um beco sem saída.
Qualquer determinado agente falhará em pelo menos um desses espaços. (b) Um ambiente bidimensional
que pode fazer com que um agente de busca online siga uma rota arbitrariamente ineficiente para o objetivo.
Qualquer que seja a escolha do agente, o adversário bloqueia essa rota com outra parede longa e fina, de
modo que o caminho percorrido seja muito mais longo do que o melhor caminho possível.
Embora pareça uma solicitação razoável, é fácil ver que a melhor relação competitiva alcançável
IRREVERSÍVEL é infinita em alguns casos. Por exemplo, se algumas ações forem irreversíveis – ou seja, elas levam
a um estado do qual nenhuma ação leva de volta ao estado anterior – a pesquisa online pode
FIM DA LINHA acidentalmente chegar a um estado sem saída a partir do qual nenhum estado objetivo é alcançável.
Talvez você ache o termo "acidentalmente" pouco convincente - afinal, pode haver um algoritmo que
não segue o caminho sem saída enquanto explora. Nossa afirmação, para ser mais preciso, é que
nenhum algoritmo pode evitar becos sem saída em todos os espaços de estado. Considere os dois
espaços de estado sem saída na Figura 4.19(a). Para um algoritmo de busca online que visitou os
estados S e A, os dois espaços de estado parecem idênticos, então ele deve tomar a mesma decisão em ambos. Portanto, fa
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
ADVERSÁRIO
ARGUMENTO um deles. Este é um exemplo de argumento do adversário – podemos imaginar um adversário que constrói o
espaço de estado enquanto o agente o explora e pode colocar os objetivos e becos sem saída onde quiser.
Os becos sem saída são uma dificuldade real para a exploração do robô - escadas, rampas, penhascos, ruas de
mão única e todos os tipos de terreno natural apresentam oportunidades para ações irreversíveis. Para fazer um progresso
EXPLORÁVEL COM SEGURANÇA , simplesmente assumiremos que o espaço de estados é explorável com segurança - ou seja, algum
estado objetivo é alcançável a partir de todos os estados alcançáveis. Espaços de estado com ações reversíveis, como
labirintos e quebra-cabeças de 8, podem ser vistos como grafos não direcionados e são claramente exploráveis com segurança.
Mesmo em ambientes exploráveis com segurança, nenhuma taxa competitiva limitada pode ser garantida
se houver caminhos de custo ilimitado. Isso é fácil de mostrar em ambientes com ações irreversíveis, mas na
verdade também permanece verdadeiro para o caso reversível, como mostra a Figura 4.19(b). Por esse motivo,
é comum descrever o desempenho dos algoritmos de busca online em termos do tamanho de todo o espaço de
estado, e não apenas da profundidade do objetivo mais superficial.
Após cada ação, um agente online recebe uma percepção informando em que estado ele atingiu; a partir dessas
informações, ele pode aumentar seu mapa do ambiente. O mapa atual é usado para decidir para onde ir a seguir.
Essa intercalação de planejamento e ação significa que os algoritmos de busca online são bem diferentes dos
algoritmos de busca offline que vimos anteriormente.
Por exemplo, algoritmos off-line como Aÿ têm a capacidade de expandir um nó em uma parte do espaço e
imediatamente expandir um nó em outra parte do espaço, porque a expansão do nó envolve ações simuladas
em vez de ações reais. Um algoritmo online, por outro lado, pode descobrir sucessores apenas para um nó que
ele ocupa fisicamente. Para evitar viajar por toda a árvore para expandir o próximo nó, parece melhor expandir
os nós em uma ordem local . A pesquisa em profundidade tem exatamente essa propriedade, porque (exceto ao
retroceder) o próximo nó expandido é um filho do nó anterior expandido.
Um agente de busca em profundidade on-line é mostrado na Figura 4.20. Este agente armazena seu
mapa em uma tabela, RESULT[s, a], que registra o estado resultante da execução da ação a no estado s.
Sempre que uma ação do estado atual não foi explorada, o agente tenta essa ação.
A dificuldade surge quando o agente já tentou todas as ações em um estado. Na pesquisa em profundidade off-
line, o estado é simplesmente retirado da fila; em uma busca online, o agente precisa voltar atrás fisicamente.
Na pesquisa em profundidade, isso significa voltar ao estado do qual o agente entrou no estado atual mais
recentemente. Isso é obtido mantendo uma tabela que lista, para cada estado, os estados predecessores aos
quais o agente ainda não voltou atrás. Se o agente esgotou os estados para os quais ele pode retornar, então
sua busca está completa.
Recomendamos que o leitor rastreie o progresso do ONLINE-DFS-AGENT quando aplicado ao labirinto
dado na Figura 4.18. É bastante fácil ver que o agente, no pior caso, acabará percorrendo cada enlace no espaço
de estado exatamente duas vezes. Para exploração, isso é ideal; para encontrar um objetivo, por outro lado, a
razão competitiva do agente pode ser arbitrariamente ruim se ele sair em uma longa excursão quando houver
um objetivo próximo ao estado inicial. Uma variante online de aprofundamento iterativo resolve esse problema;
para um ambiente que é uma árvore uniforme, a razão competitiva de tal agente é uma pequena constante.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
ÿ
função ONLINE-DFS-AGENT(s ) retorna uma ação
ÿ
entradas: , uma percepção que identifica o estado atual
s persistente: resultado, uma tabela indexada por estado e ação, inicialmente vazia
untryed, uma tabela que lista, para cada estado, as ações ainda não
tentadas unbacktracked, uma tabela que lista, para cada estado, os backtracks ainda
não tentados s, a, o estado anterior e a ação, inicialmente nula
ÿ
se GOAL-TEST(s ) então return stop é
se éÿ um novo estado (não em não tentado) então não ÿ
] ÿ AÇÕES(ões
ÿ
)
tentado[s se s não for
ÿ
nulo então faça
ÿ
result[s, a] ÿs adicione s à frente de ]
ÿ
se não unbacktracked[s ] está vazio então
ÿ
experimentado[s se ] está vazio então retorne parar
ÿ ÿ
não rastreado[s else a ÿ uma ação b tal que , b] = POP(sem retrocesso[s ])
ÿ
resulta[s else a ÿ POP(sem tentativas[s
])
ÿsÿs
devolver um
Figura 4.20 Um agente de pesquisa online que usa exploração em profundidade. O agente é aplicável
apenas em espaços de estado nos quais toda ação pode ser “desfeita” por alguma outra ação.
Assim como a busca em profundidade, a busca em subida tem a propriedade de localidade em suas
expansões de nós. Na verdade, por manter apenas um estado atual na memória, a busca por subida já
é um algoritmo de busca online! Infelizmente, não é muito útil em sua forma mais simples porque deixa
o agente sentado em máximos locais sem ter para onde ir. Além disso, reinícios aleatórios não podem
ser usados, porque o agente não pode se transportar para um novo estado.
CAMINHADA ALEATÓRIA Em vez de reinicializações aleatórias, pode-se considerar o uso de uma caminhada aleatória
para explorar o ambiente. Um passeio aleatório simplesmente seleciona aleatoriamente uma das ações
disponíveis do estado atual; pode-se dar preferência a ações que ainda não foram tentadas. É fácil
provar que um passeio aleatório acabará por encontrar um objetivo ou completar sua exploração, desde
que o espaço seja finito.13 Por outro lado, o processo pode ser muito lento. A Figura 4.21 mostra um
ambiente no qual um passeio aleatório levará muitos passos exponencialmente para encontrar o objetivo,
porque, a cada passo, o progresso para trás é duas vezes mais provável que o progresso para frente. O
exemplo é artificial, é claro, mas existem muitos espaços de estado do mundo real cuja topologia causa
esses tipos de “armadilhas” para caminhadas aleatórias.
13 Passeios aleatórios são completos em grades unidimensionais e bidimensionais infinitas. Em uma grade
tridimensional, a probabilidade de que a caminhada retorne ao ponto de partida é de apenas 0,3405 (Hughes, 1995).
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
S G
Figura 4.21 Um ambiente no qual um passeio aleatório levará exponencialmente muitos passos para encontrar o
objetivo.
Aumentar a escalada de colina com memória em vez de aleatoriedade acaba sendo uma abordagem mais eficaz. A
ideia básica é armazenar uma “melhor estimativa atual” H(s) do custo para atingir a meta de cada estado visitado. H(s)
começa sendo apenas a estimativa heurística h(s) e é atualizado conforme o agente ganha experiência no espaço de
estados. A Figura 4.22 mostra um exemplo simples em um espaço de estado unidimensional. Em (a), o agente parece estar
preso em um mínimo local plano no estado sombreado. Em vez de ficar onde está, o agente deve seguir o que parece ser o
melhor caminho para a meta com base nas estimativas de custo atuais para seus vizinhos. O custo estimado para atingir a
meta por meio de um vizinho s é o custo para chegar mais o custo estimado para chegar a uma meta a partir daí - ou seja,
ÿ
c(s, a, sÿ ) + H(s
ÿs ÿ
). No
exemplo, existem duas ações, com custos estimados 1 + 9 e 1 + 2, então parece melhor mover para a direita. Agora, está
claro que a estimativa de custo de 2 para o estado sombreado foi excessivamente otimista.
Como o melhor movimento custou 1 e levou a um estado que está a pelo menos 2 passos de um objetivo, o estado
sombreado deve estar a pelo menos 3 passos de um objetivo, então seu H deve ser atualizado de acordo, conforme
mostrado na Figura 4.22(b). . Continuando esse processo, o agente irá se mover para frente e para trás mais duas vezes,
atualizando H a cada vez e “achatando” o mínimo local até que ele escape para a direita.
LRTA* Um agente que implementa esse esquema, denominado aprendizado Aÿ em tempo real (LRTAÿ ), é mostrado na
Figura 4.23. Como o ONLINE-DFS-AGENT, ele constrói um mapa do ambiente usando a tabela de resultados . Ele atualiza
a estimativa de custo para o estado que acabou de sair e, em seguida, escolhe o movimento “aparentemente melhor” de
acordo com suas estimativas de custo atuais. Um detalhe importante é que as ações que ainda não foram tentadas em um
estado s são sempre assumidas como levando imediatamente ao objetivo com o menor custo possível, ou seja, h(s). Esse
OTIMISMO ABAIXO
INCERTEZA
otimismo sob incerteza encoraja o agente a explorar novos caminhos, possivelmente promissores.
Um agente LRTAÿ tem a garantia de encontrar um objetivo em qualquer ambiente finito e explorável com segurança.
Ao contrário de Aÿ , no entanto, não é completo para espaços de estados infinitos - há casos em que pode ser )etapas no
2
desencaminhou infinitamente. Ele pode explorar um ambiente de n estados em O(n , mas pior caso,
geralmente se sai muito melhor. O agente LRTAÿ é apenas um de uma grande família de agentes online que podem ser
definidos especificando a regra de seleção de ação e a regra de atualização de maneiras diferentes.
Discutiremos essa família, que foi desenvolvida originalmente para ambientes estocásticos, no Capítulo 21.
A ignorância inicial dos agentes de busca online oferece várias oportunidades de aprendizado. Primeiro, os agentes
aprendem um “mapa” do ambiente – mais precisamente, o resultado de cada ação em cada estado – simplesmente
registrando cada uma de suas experiências. (Observe que a suposição de
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
1 1 1 1 1 1 1
(a) 8 9 2 2 4 3
1 1 1 1 1 1 1
(b) 8 9 3 2 4 3
1 1 1 1 1 1 1
(c) 8 9 3 4 4 3
1 1 1 1 1 1 1
(d) 8 9 5 4 4 3
1 1 1 1 1 1 1
(e) 8 9 5 5 4 3
Figura 4.22 Cinco iterações de LRTAÿ em um espaço de estado unidimensional. Cada estado é rotulado com
H(s), a estimativa de custo atual para atingir uma meta, e cada link é rotulado com seu custo de etapa. O estado
sombreado marca a localização do agente e as estimativas de custo atualizadas em cada iteração são circuladas.
ÿ
função LRTA*-AGENT(s entradas:) retorna uma ação
ÿ
, que identifica o estado atual persistente:
s uma percepção
resultado, uma tabela, indexada por estado e ação, inicialmente vazia
H , uma tabela de estimativas de custos indexadas por estado, inicialmente vazia
s, a, o estado anterior e ação, inicialmente nulo
ÿ
se GOAL-TEST(s ) então return stop é
se éÿ um novo estado (não em H ) então H [s ÿ
] ÿ h(s
ÿ
)
se s não for nulo
ÿ
result[s, a] ÿs
H [s] ÿ min LRTA*-COST(s, b, resultado[s, b],H ) bÿ
AÇÕES(s) a ÿ
ÿ ÿ ÿ
uma ação b em AÇÕES(s ) que minimiza LRTA*-COST(s , b, resultado[s, b],H )
ÿsÿs
devolver um
ÿ
a função LRTA*-COST(s, a, s é ,H ) retorna uma estimativa de custo
se ÿ indefinida então retorne h(s)
ÿ
s senão retornar c(s, a, sÿ ) + H[s ]
Figura 4.23 LRTA*-AGENT seleciona uma ação de acordo com os valores dos estados vizinhos, que são
atualizados à medida que o agente se move no espaço de estados.
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
ambientes determinísticos significam que uma experiência é suficiente para cada ação). para valores exatos
para cada estado, desde que o agente explore o espaço de estados da maneira correta. Uma vez que os
. decisões ótimas podem ser tomadas simplesmente movendo-se para o
valores exatos são conhecidos, as
sucessor de menor custo – ou seja, a escalada pura é então uma estratégia ótima.
4.6 RESUMO
Este capítulo examinou algoritmos de busca para problemas além do caso “clássico” de encontrar o caminho
mais curto para um objetivo em um ambiente observável, determinístico e discreto.
• Métodos de busca local , como subida de colina, operam em formulações de estado completo,
mantendo apenas um pequeno número de nós na memória. Vários algoritmos estocásticos foram
desenvolvidos, incluindo o recozimento simulado, que retorna soluções ótimas quando é fornecido
um cronograma de resfriamento apropriado.
• Muitos métodos de busca local também se aplicam a problemas em espaços contínuos. A
programação linear e os problemas de otimização convexa obedecem a certas restrições na forma
do espaço de estado e na natureza da função objetivo, e admitem algoritmos de tempo polinomial
que muitas vezes são extremamente eficientes na prática. • Um
algoritmo genético é uma busca estocástica em que uma grande população de estados é mantida.
Novos estados são gerados por mutação e por cruzamento, que combina pares de estados da
população.
• Em ambientes não determinísticos , os agentes podem aplicar a busca AND-OR para gerar planos
contingentes que alcancem a meta independentemente de quais resultados ocorram durante a
execução. • Quando o ambiente é parcialmente observável, o agente pode aplicar algoritmos de busca
no espaço de estados de crença ou conjuntos de estados possíveis em que o agente pode estar.
mais eficiente.
• Problemas sem sensores podem ser resolvidos aplicando métodos de busca padrão a uma formulação
de estado de crença do problema. O caso parcialmente observável mais geral pode ser
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
As técnicas de busca local têm uma longa história em matemática e ciência da computação. De fato, o método
de Newton–Raphson (Newton, 1671; Raphson, 1690) pode ser visto como um método de busca local muito
eficiente para espaços contínuos nos quais a informação de gradiente está disponível.
Brent (1973) é uma referência clássica para algoritmos de otimização que não requerem tal formação. A busca
por feixe, que apresentamos como um algoritmo de busca local, originou-se como uma variante de programação
dinâmica de largura limitada para reconhecimento de fala no sistema HARPY (Lowerre, 1976). Um algoritmo
relacionado é analisado em profundidade por Pearl (1984, cap. 5).
O tópico da busca local foi revigorado no início dos anos 90 por resultados surpreendentemente bons
para grandes problemas de satisfação de restrições, como n-queens (Minton et al., 1992) e raciocínio lógico
(Selman et al., 1992) e pela incorporação de aleatoriedade, várias pesquisas simultâneas e outras melhorias.
Esse renascimento do que Christos Papadim itriou chamou de algoritmos da “Nova Era” também despertou
um interesse maior entre os cientistas teóricos da computação (Koutsoupias e Papadimitriou, 1992; Aldous e
Vazirani, 1994). No campo da pesquisa operacional, uma variante da escalada chamada busca tabu ganhou
PESQUISA TABU popularidade (Glover, 1989; Glover e Laguna, 1997). Com base em modelos de memória limitada de curto
prazo em humanos, esse algoritmo mantém uma lista tabu de k estados visitados anteriormente que não podem
ser revisitados; além de melhorar a eficiência na busca de grafos, isso pode permitir que o algoritmo escape de
alguns mínimos locais. Outra melhoria útil na escalada é o algoritmo STAGE (Boyan e Moore, 1998). A ideia é
usar os máximos locais encontrados pela subida de colina com reinício aleatório para ter uma ideia da forma
geral da paisagem. O algoritmo ajusta uma superfície lisa ao conjunto de máximos locais e então calcula o
máximo global dessa superfície analiticamente. Isso se torna o novo ponto de reinicialização. O algoritmo
demonstrou funcionar na prática em problemas difíceis. Gomes e cols. (1998) mostraram que as distribuições
de tempo de execução de algoritmos de retrocesso sistemático geralmente têm uma distribuição de cauda
pesada, o que significa que a probabilidade de um tempo de execução muito longo é maior do que seria previsto
CAUDA PESADA
DISTRIBUIÇÃO
se os tempos de execução fossem distribuídos exponencialmente. Isso fornece uma justificativa teórica para
reinicializações aleatórias.
O recozimento simulado foi descrito pela primeira vez por Kirkpatrick et al. (1983), que pegou emprestado
diretamente do algoritmo Metropolis (que é usado para simular sistemas complexos em física (Metropolis et
al., 1953) e foi supostamente inventado em um jantar em Los Alamos).
O recozimento simulado é agora um campo em si, com centenas de artigos publicados todos os anos.
Encontrar soluções ótimas em espaços contínuos é o assunto de vários campos, incluindo teoria de
otimização, teoria de controle ótimo e cálculo de variações. As técnicas básicas são bem explicadas por
Bishop (1995); Pressione e outros. (2007) cobrem uma ampla gama
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
O trabalho de Sewall Wright (1931) sobre o conceito de paisagem de aptidão foi um importante
precursor do desenvolvimento de algoritmos genéticos. Na década de 1950, vários estatísticos,
incluindo Box (1957) e Friedman (1959), usaram técnicas evolutivas para problemas de otimização,
EVOLUÇÃO
ESTRATÉGIAS
mas não foi até Rechenberg (1965, 1973) introduzir estratégias de evolução para resolver problemas
de otimização para aerofólios que a abordagem ganhou força . popularidade. Nas décadas de 1960 e
1970, John Holland (1975) defendeu os algoritmos genéticos, tanto como uma ferramenta útil quanto
como um método para expandir nossa compreensão da adaptação, biológica ou não (Holland, 1995).
VIDA ARTIFICIAL O movimento da vida artificial (Langton, 1995) leva essa ideia um passo adiante, vendo os produtos
dos algoritmos genéticos como organismos em vez de soluções para problemas. O trabalho neste
campo por Hinton e Nowlan (1987) e Ackley e Littman (1991) fez muito para esclarecer as implicações
do efeito Baldwin. Para informações gerais sobre evolução, recomendamos fortemente Smith e Szathm
´ary (1999).
A maioria das comparações de algoritmos genéticos com outras abordagens (especialmente
escalada estocástica) descobriu que os algoritmos genéticos são mais lentos para convergir (O'Reilly
e Op Pacher, 1994; Mitchell et al., 1996; Juels e Wattenberg, 1996; Baluja , 1997 ). Tais descobertas
não são universalmente populares dentro da comunidade GA, mas tentativas recentes dentro dessa
comunidade de entender a busca baseada na população como uma forma aproximada de aprendizagem
bayesiana (ver Capítulo 20) podem ajudar a fechar a lacuna entre o campo e seus críticos (Pelikan e
outros, 1999). A teoria dos sistemas dinâmicos quadráticos também pode explicar o desempenho
dos AGs (Rabani et al., 1998). Ver Lohn et al. (2001) para um exemplo de AGs aplicados ao projeto de
antenas, e Larra˜naga et al. (1999) para uma aplicação ao problema do caixeiro viajante.
GENÉTICO
PROGRAMAÇÃO
O campo da programação genética está intimamente relacionado aos algoritmos genéticos. A
principal diferença é que as representações que são modificadas e combinadas são programas em vez
de sequências de bits. Os programas são representados na forma de árvores de expressão; as
expressões podem estar em uma linguagem padrão como Lisp ou podem ser especialmente projetadas
para representar circuitos, controladores de robôs e assim por diante. Crossover envolve unir
subárvores em vez de substrings. Essa forma de mutação garante que os descendentes sejam
expressões bem formadas, o que não seria o caso se os programas fossem manipulados como strings.
O interesse recente na programação genética foi estimulado pelo trabalho de John Koza (Koza,
1992, 1994), mas remonta pelo menos aos primeiros experimentos com código de máquina por
Friedberg (1958) e com autômatos de estado finito por Fogel et al . (1966). Tal como acontece com os
algoritmos genéticos, há um debate sobre a eficácia da técnica. Koza et ai. (1999) descrevem uma variedade de
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
Algoritmos para explorar espaços de estados desconhecidos têm sido de interesse por muitos séculos.
A busca em profundidade em um labirinto pode ser implementada mantendo a mão esquerda na parede; loops
podem ser evitados marcando cada junção. A busca em profundidade falha com ações irreversíveis; GRÁFICOS
EULERIANOS o problema mais geral de explorar grafos Eulerianos (ou seja, grafos em que cada nó tem
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
números iguais de arestas de entrada e saída) foi resolvido por um algoritmo devido a Hierholzer (1873). O
primeiro estudo algorítmico completo do problema de exploração para grafos arbitrários foi realizado por Deng
e Papadimitriou (1990), que desenvolveram um algoritmo completamente geral, mas mostraram que nenhuma
razão competitiva limitada é possível para explorar um grafo geral. Papadimitriou e Yannakakis (1991)
examinaram a questão de encontrar caminhos para uma meta em ambientes de planejamento de caminhos
geométricos (onde todas as ações são reversíveis). Eles mostraram que uma pequena razão competitiva é
alcançável com obstáculos quadrados, mas com obstáculos retangulares gerais nenhuma razão limitada pode
ser alcançada. (Veja a Figura 4.19.)
O algoritmo LRTAÿ foi desenvolvido por Korf (1990) como parte de uma investigação sobre REAL-TIME
SEARCH busca em tempo real para ambientes nos quais o agente deve agir após procurar por apenas um período fixo de
tempo (uma situação comum em jogos de dois jogadores jogos). LRTAÿ é de fato um caso especial de
algoritmos de aprendizado por reforço para ambientes estocásticos (Barto et al., 1995). Sua política de
otimismo sob incerteza – sempre direcionar para o estado não visitado mais próximo – pode resultar em um
padrão de exploração que é menos eficiente no caso desinformado do que a simples busca em profundidade
(Koenig, 2000). Dasgupta et ai. (1994) mostram que a busca de aprofundamento iterativo online é otimamente
eficiente para encontrar um objetivo em uma árvore uniforme sem informação heurística. Várias variantes
informadas sobre o tema LRTAÿ foram desenvolvidas com diferentes métodos de busca e atualização dentro
da porção conhecida do grafo (Pemberton e Korf, 1992).
Até o momento, não há um bom entendimento de como encontrar metas com eficiência ótima ao usar
informações heurísticas.
EXERCÍCIOS
4.1 Dê o nome do algoritmo que resulta de cada um dos seguintes casos especiais:
4.2 O Exercício 3.14 considera o problema de construção de trilhos de trem assumindo que as peças se
encaixam exatamente sem folga. Agora considere o problema real, no qual as peças não se encaixam
exatamente, mas permitem até 10 graus de rotação para cada lado do alinhamento “adequado”. Explique
como formular o problema para que ele possa ser resolvido por um recozimento simulado.
4.3 O algoritmo AND-OR-GRAPH-SEARCH na Figura 4.11 verifica estados repetidos apenas no caminho da
raiz para o estado atual. Suponha que, além disso, o algoritmo armazene todos os estados visitados e verifique
essa lista. (Consulte BREADTH-FIRST-SEARCH na Figura 3.11 para obter um exemplo.) Determine as
informações que devem ser armazenadas e como o algoritmo deve usar essas informações quando um estado
repetido for encontrado. (Dica: você precisará
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
distinguir pelo menos entre estados para os quais um subplano bem-sucedido foi construído anteriormente
e estados para os quais nenhum subplano pode ser encontrado.) Explique como usar rótulos, conforme
definido na Seção 4.3.3, para evitar cópias múltiplas de subplanos.
4.4 Explique precisamente como modificar o algoritmo AND-OR-GRAPH-SEARCH para gerar um plano
cíclico se nenhum plano acíclico existir. Você precisará lidar com três questões: rotular as etapas do plano
para que um plano cíclico possa apontar para uma parte anterior do plano, modificar OR-SEARCH para que
continue procurando por planos acíclicos depois de encontrar um plano cíclico e aumentar a representação
do plano para indicar se um plano é cíclico. Mostre como seu algoritmo funciona (a) no mundo escorregadio
do vácuo e (b) no mundo escorregadio e errático do vácuo. Você pode querer usar uma implementação de
computador para verificar seus resultados.
4.5 Na Seção 4.4.1, introduzimos estados de crença para resolver problemas de busca sem sensores. Uma
sequência de ações resolve um problema sem sensoriamento se mapear cada estado físico no estado de
crença inicial b para um estado objetivo. Suponha que o agente conheça h ÿ (s), o verdadeiro custo ótimo
de resolver o estado físico s no problema totalmente observável, para cada estado s em b. Encontre uma
heurística admissível h(b) para o problema sensorless em termos desses custos e prove sua admissibilidade.
Comente a precisão dessa heurística no problema de vácuo sem sensor da Figura 4.14.
Qual é o desempenho de A* ?
4.6 Este exercício explora relações subconjunto-superconjunto entre estados de crença em ambientes sem
sensores ou parcialmente observáveis.
• Prove rigorosamente que se uma sequência de ações é uma solução para um estado de crença b, também é
uma solução para qualquer
subconjunto de b. • Explicar em detalhes como modificar a pesquisa de gráfico para problemas sem sensores para aproveitar
disto.
• Explicar em detalhes como modificar a busca AND-OR para problemas parcialmente observáveis para
aproveite isso.
4.7 Na página 142 assumiu-se que uma determinada ação teria o mesmo custo quando executada em
qualquer estado físico dentro de um determinado estado de crença. (Isso leva a um problema de busca de
estado de crença com custos de etapas bem definidos.) Agora, considere o que acontece quando a
suposição não é válida. A noção de otimização ainda faz sentido neste contexto ou requer modificação?
Considere também várias definições possíveis do “custo” de executar uma ação em um estado de crença;
por exemplo, poderíamos usar o mínimo dos custos físicos; ou o máximo; ou um intervalo de custo com o
limite inferior sendo o custo mínimo e o limite superior sendo o máximo; ou apenas mantenha o conjunto de
todos os custos possíveis para aquela ação. Para cada um deles, explore se Aÿ (com modificações, se
necessário) pode retornar soluções ótimas.
4.8 Considere a versão sem sensores do mundo do vácuo errático. Desenhe o espaço de estado de crença
alcançável a partir do estado de crença inicial {1, 2, 3, 4, 5, 6, 7, 8} e explique por que o problema é insolúvel.
4.9 Suponha que um agente esteja em um ambiente de labirinto 3 × 3 como o mostrado na Figura 4.18.
O agente sabe que sua localização inicial é (1,1), que o objetivo está em (3,3) e que os quatro
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
as ações Cima, Baixo, Esquerda, Direita têm seus efeitos usuais, a menos que sejam bloqueadas por uma parede. O
agente não sabe onde estão as paredes internas. Em qualquer estado, o agente percebe o conjunto de ações legais; ele
também pode dizer se o estado é um que já visitou antes ou um novo estado.
a. Explique como esse problema de pesquisa online pode ser visto como uma pesquisa offline no espaço de estado
de crença, onde o estado de crença inicial inclui todas as configurações de ambiente possíveis.
Qual é o tamanho do estado de crença inicial? Qual é o tamanho do espaço de estados de crença?
Observe que este plano de contingência é uma solução para todos os ambientes possíveis que se encaixem na descrição
dada. Portanto, a intercalação de pesquisa e execução não é estritamente necessária, mesmo em ambientes desconhecidos.
4.10 Podemos transformar o problema de navegação do Exercício 3.27 em um ambiente como segue:
• A percepção será uma lista das posições, relativas ao agente, dos vértices visíveis.
A percepção não inclui a posição do robô! O robô deve aprender sua própria posição no mapa; por enquanto,
você pode presumir que cada local tem uma “visão” diferente. • Cada ação será um vetor descrevendo um caminho
em linha reta a seguir. Se o caminho estiver desobstruído, a ação é bem-sucedida; caso contrário, o robô para no
ponto em que seu caminho cruza pela primeira vez um obstáculo. Se o agente retornar um vetor de movimento
zero e estiver no objetivo (que é fixo e conhecido), o ambiente teleporta o agente para um local aleatório (não
dentro de um obstáculo).
• A medida de desempenho cobra do agente 1 ponto para cada unidade de distância percorrida
e concede 1000 pontos cada vez que a meta é atingida.
a. Implemente este ambiente e um agente de solução de problemas para ele. O agente precisará formular um novo
problema após cada teletransporte, que envolverá descobrir sua localização atual.
b. Documente o desempenho do seu agente (fazendo com que o agente gere comentários adequados à medida que
se move) e relate seu desempenho em 100 episódios.
c. Modifique o ambiente para que 30% das vezes o agente termine em um destino não intencional (escolhido
aleatoriamente entre os outros vértices visíveis, se houver, caso contrário, nenhum movimento). Este é um modelo
grosseiro dos erros de movimento de um robô real. Modifique o agente para que, ao detectar tal erro, ele descubra
onde está e então construa um plano para voltar para onde estava e retomar o plano antigo. Lembre-se de que, às
vezes, voltar para onde estava também pode falhar! Mostre um exemplo do agente superando com sucesso dois
erros de movimento sucessivos e ainda alcançando a meta.
d. Agora tente dois esquemas de recuperação diferentes após um erro: (1) Siga para o vértice mais próximo na rota
original; e (2) replaneje uma rota para a meta a partir do novo local. Compare o desempenho dos três esquemas
de recuperação. A inclusão dos custos de pesquisa afetaria a comparação?
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.
Machine Translated by Google
Capítulos 3 e 4 de Russell/Norvig, Inteligência Artificial, 3e, ISBN: 0136042597 ©2010
e. Agora suponha que existam locais a partir dos quais a visão é idêntica. (Por exemplo, suponha que o mundo
seja uma grade com obstáculos quadrados.) Que tipo de problema o agente enfrenta agora? Como são as
soluções?
4.11 Neste exercício, exploraremos o uso de métodos de busca local para resolver TSPs do tipo definido no Exercício
3.38.
a. Implemente e teste um método de escalada para resolver TSPs. Compare os resultados com as soluções ótimas
obtidas pelo algoritmo Aÿ com a heurística MST (Exercício 3.38). b. Repita a parte (a) usando um algoritmo
genético em vez de subir uma colina. Você pode querer consultar Larra˜naga et al. (1999) para algumas sugestões
de representações.
4.12 Gere um grande número de instâncias de 8 quebra-cabeças e 8 damas e resolva-as (quando possível) por subida
de colina (subida mais íngreme e variantes de primeira escolha), subida de colina com reinício aleatório e recozimento
simulado. Meça o custo de pesquisa e a porcentagem de problemas resolvidos e faça um gráfico desses em relação
ao custo da solução ideal. Comente seus resultados.
4.13 Neste exercício, examinaremos a escalada no contexto da navegação do robô, usando o ambiente da Figura 3.32
como exemplo.
a. Repita o Exercício 4.10 usando a escalada. Seu agente já ficou preso em um mínimo local? É possível que ele
fique preso em obstáculos convexos? b. Construa um ambiente poligonal não
convexo no qual o agente fica preso. c. Modifique o algoritmo de subida de encosta para que, em vez
de fazer uma busca em profundidade 1 para decidir para onde ir em seguida, ele faça uma busca em profundidade
k. Ele deve encontrar o melhor caminho de k-passos e dar um passo ao longo dele e, em seguida, repetir o
processo.
d. Existe algum k para o qual é garantido que o novo algoritmo escape dos mínimos locais? e. Explique como
4.14 Como o DFS, o DFS online é incompleto para espaços de estado reversíveis com caminhos infinitos. Por exemplo,
suponha que os estados sejam pontos na grade bidimensional infinita e as ações sejam vetores unitários (1, 0), (0, 1),
(ÿ1, 0), (0, ÿ1), tentados nessa ordem . Mostre que o DFS online começando em (0, 0) não alcançará (1, ÿ1). Suponha
que o agente possa observar, além de seu estado atual, todos os estados sucessores e as ações que levariam a eles.
Escreva um algoritmo que seja completo mesmo para espaços de estados bidirecionais com caminhos infinitos. Que
estados ele visita ao atingir (1, ÿ1)?
RASCUNHO - Apenas para fins de visualização. O conteúdo está sujeito a alterações antes da publicação
final. ©2010 Pearson Education, Inc. Upper Saddle River, NJ 07458. Todos os direitos reservados.