Vous êtes sur la page 1sur 17

Busca em Espaço de Estados 1 Busca em Espaço de Estados 2

que seqüência de ações o levará a um estado objetivo. Antes de poder fazer isso, ele precisa decidir
Unidade 3 que espécie de ações e estados deve considerar.

Busca em Espaço de Estados A formulação do problema é o processo de decidir que ações e estados devem ser
considerados, dado um objetivo. A formulação do problema define o grau de detalhamento na
abordagem do problema.

Nosso agente adotou como objetivo dirigir para Bucareste e está considerando para qual
cidade irá a partir de Arad. Existem 3 rodovias a partir de Arad: uma em direção a Sibiu, uma para
A maioria dos problemas interessantes do ponto de vista da IA não dispõe de soluções Timisoara e outra para Zerind. Nenhuma dessas, no entanto, alcançam o objetivo e o agente não
algorítmicas, ou tem soluções algorítmicas conhecidas, mas sua complexidade as torna saberá qual delas seguir. Em outras palavras, o agente não saberá qual das possíveis ações é a
impraticáveis. Dentre os problemas deste tipo, os primeiros, historicamente, a serem estudados melhor, porque não conhece o bastante sobre o estado resultante da execução de cada ação. Se o
foram prova automática de teoremas, quebra-cabeças e jogos. Isto se deve ao fato de que estes agente não tiver nenhum conhecimento adicional, ele ficará paralisado e o melhor que pode fazer é
problemas, além de não disporem de soluções algorítmicas viáveis, apresentam uma série de escolher uma dessas 3 ações de forma randômica (ao acaso).
características que os tornam bons candidatos para a pesquisa em IA (BITTENCOURT, 2001):
No entanto, supondo que ele tenha um mapa da Romênia, o agente pode usar as informações
• são solucionáveis por seres humanos e, neste caso, sua solução está associada à contidas no mapa para considerar estágios subseqüentes de uma jornada hipotética passando por
inteligência; cada uma dessas três cidades, procurando descobrir um percurso que o leve para Bucareste. Uma
vez que tenha encontrado um caminho (path) no mapa de Arad para Bucareste, ele pode alcançar
• formam classes de complexidade variável existindo desde instâncias triviais (por seu objetivo executando as ações de dirigir que correspondam aos passos da viagem. Sendo assim,
exemplo, o “jogo da velha”) até instâncias extremamente complexas (jogo de xadrez); um agente com várias opções imediatas de valor desconhecido pode decidir o que fazer
examinando primeiro as diferentes seqüências de ações possíveis que o levem a estados de valor
• são problemas de conhecimento total, isto é, tudo que é necessário saber para solucioná- conhecido e depois escolher a melhor seqüência.
los é conhecido, o que facilita sua formalização;
O processo de procurar pela melhor seqüência de ações possível que leve a estados de valor
• suas soluções têm a forma de uma seqüência de situações “válidas” e as maneiras de conhecido é chamado busca. Um algoritmo de busca recebe um problema como entrada e retorna
passar de uma situação para outra são em número finito e conhecidas, ou seja, as uma solução sob a forma de uma seqüência de ações. Uma solução é, portanto, a seqüência de
soluções são seqüências de situações válidas. ações que levarão à satisfação do problema e é encontrada por meio de um mecanismo de busca.
Um problema pode ter mais de uma solução.
Diante da falta de solução algorítmica viável, o único método de solução possível é a busca.
Uma vez que uma solução tenha sido encontrada, as ações que ela recomenda podem ser
executadas. Essa fase é então chamada de fase de execução.
3.1 – Formulação de Problemas Sendo assim, após formular um objetivo e um problema a ser resolvido, o agente chama um
procedimento de busca para resolvê-lo. A seguir, o agente usa a solução fornecida pelo
Antes de formular um problema e utilizar métodos de busca para solucioná-lo, é importante procedimento de busca para guiar suas ações. Uma vez que a solução tenha sido executada, o
formular o objetivo a ser alcançado. Objetivos auxiliam a organizar comportamento, através da agente formulará um novo objetivo (RUSSELL; NORVIG, 2004).
limitação dos objetivos que se pretende alcançar. Sendo assim, a formulação de objetivos, baseada
na situação atual e na medida de desempenho, é o primeiro passo na resolução de problemas. Um
objetivo é um conjunto de estados do mundo – exatamente os estados em que o objetivo é
satisfeito. Ações podem ser vistas como aquelas que causam transições entre estados do mundo 3.1.1 – Elementos de um problema
(RUSSELL; NORVIG, 2004).
Um problema pode ser definido como uma coleção de informações que deve ser usada para
Suponha que um agente esteja na cidade de Arad na Romênia e ele tenha uma passagem decidir o que fazer e pode ser abstraído na forma de conjunto de estados e ações possíveis (que são
aérea Bucareste-Paris para o dia seguinte, que não é reembolsável e seu visto esteja prestes a as transições entre estados). De maneira geral, um problema pode ser definido formalmente por
expirar. Além disto, após esse dia, não existem assentos disponíveis pelos próximos seis meses. quatro componentes (RUSSELL; NORVIG, 2004):
Para não ser preso e deportado, faz sentido para o agente adotar o objetivo de chegar a Bucareste.
Ele, então, decide alugar um carro e dirigir de Arad até Bucareste. A tarefa do agente é descobrir • o estado inicial que descreve a situação inicial do problema.

Profa. Denise Franzotti Togneri Profa. Denise Franzotti Togneri


Busca em Espaço de Estados 3 Busca em Espaço de Estados 4

• Uma descrição das ações possíveis que estão disponíveis. A formulação mais comum Este capítulo lida com técnicas de busca que utilizam uma árvore de busca explícita, gerada
utiliza a função sucessor. Dado um estado particular x, SUCESSOR(x) retorna um pelo estado inicial e pela função sucessor que, juntos, definem o espaço de estados. Em geral, pode-
conjunto de pares ordenados <ação, sucessor>, em que cada ação é uma das ações se ter um grafo de busca em lugar de uma árvore de busca, quando o mesmo estado pode ser
válidas no estado x e cada sucessor é um estado que pode ser alcançado a partir de x alcançado a partir de vários caminhos.
aplicando-se a ação;
Para resolver o problema de encontrar a rota de Arad para Bucareste, por exemplo, o
• uma função de teste de objetivo (goal test) que determina se um dado estado é um primeiro passo é testar se esse estado inicial é o estado objetivo. Uma vez que não é o estado
estado objetivo. Algumas vezes existe um conjunto explícito de estados objetivo objetivo, devem ser considerados outros estados, o que é feito aplicando-se a função sucessor ao
possíveis, e o teste simplesmente verifica se o estado dado é um deles. Por exemplo, o estado atual, gerando assim, um novo conjunto de estados. Esse processo é chamado expansão de
objetivo do agente na Romênia é o conjunto unitário {Em (Bucareste)}. Algumas vezes, um estado. No exemplo, existem três novos estados (Sibiu, Timisoara e Zerind), como mostra a
o objetivo é especificado por uma propriedade abstrata (forma implícita) e não por um figura 2. Como existe mais de um novo estado, ou seja, múltiplas possibilidades, deve-se fazer uma
conjunto de estados explicitamente enumerados. No xadrez, por exemplo, o objetivo é escolha de qual considerar a seguir.
alcançar um estado chamado “xeque-mate”;

• uma função de custo de caminho (path cost) que atribui um custo numérico a cada
caminho. Quando mais de uma solução existe para atingir o estado objetivo, é necessário (a) o estado inicial Arad
verificar qual deles tem menor custo. Sendo assim, a função de custo do caminho é
usada para calcular o custo de um caminho através da soma dos custos das ações
individuais ao longo do caminho. O custo de passo de adotar a ação a para ir do estado (b) após expandir Arad Arad
x ao estado y é denotado por c(x, a, y).

Juntos, o estado inicial, as ações possíveis, a função de teste de objetivo e a função de custo
do caminho definem um problema e podem ser reunidos em uma única estrutura de dados que é Sibiu Timisoara Zerind
fornecida como entrada para um algoritmo de resolução de problemas, como mostra a figura 1.

datatype PROBLEM

componentes: ESTADO-INICIAL, AÇÕES, TESTE-DE-OBJETIVO, FUNÇÃO-CUSTO-CAMINHO


(c) após expandir Sibiu Arad
Figura 1 – Estrutura de dados para representação de problemas
Fonte: RUSSELL; NORVIG, 2004.
Juntos, o estado inicial e a função sucessor definem implicitamente o espaço de estados do Sibiu Timisoara Zerind
problema – o conjunto de todos os estados acessíveis a partir do estado inicial. O espaço de estados
forma um grafo em que os nós são estados e os arcos entre nós são ações. Um caminho no espaço
de estados é uma seqüência de estados conectados por uma seqüência de ações que leva de um
estado para outro. Arad Fagaras Oradea Rimnicu Vilcea

Uma solução para um problema é um caminho desde o estado inicial até um estado objetivo.
A qualidade da solução é medida pela função de custo de caminho, e uma solução ótima tem o Figura 2 – Árvore de Busca Parcial para encontrar rota de Arad para Bucareste
menor custo de caminho entre todas as soluções (RUSSELL; NORVIG, 2004). Fonte: RUSSELL; NORVIG, 2004

3.2 – Em Busca de Soluções Essa é a essência da busca – escolher uma opção e deixar as outras reservadas para
mais tarde, no caso da primeira escolha não levar à solução (RUSSELL; NORVIG, 2004).
Até o momento foram discutidos como definir um problema e como reconhecer uma Suponha que a escolha seja Sibiu. Deve-se verificar se ela não é o estado objetivo e como não é,
solução. A parte restante – encontrar uma solução – é feita através de uma busca através do espaço expandi-la, obtendo-se os estados Arad, Fagaras, Oradea e Rimnicu Vilcea. A seguir, podem ser
de estados. A idéia é manter e estender um conjunto de seqüências de soluções parciais. escolhidos um desses 4 novos estados ou então voltar e escolher Timisoara ou Zerind.

Profa. Denise Franzotti Togneri Profa. Denise Franzotti Togneri


Busca em Espaço de Estados 5 Busca em Espaço de Estados 6

Esse processo de escolher, testar e expandir é repetido até que a solução seja encontrada ou A forma como é mostrada na figura a relação entre estados e operadores, através de setas e
até que não existam mais estados para serem expandidos. círculos, é chamada grafo orientado. Na figura 3(b), mostra-se uma árvore de busca associada a
este espaço de estados. A árvore apresenta dois caminhos distintos entre o nó inicial e o nó final, um
A escolha de qual estado expandir primeiro é determinada através da estratégia de com comprimento três e outro com comprimento quatro (BITTENCOURT, 2001).
busca (RUSSELL; NORVIG, 2004).
A árvore de busca é uma estrutura independente, mas que guarda relação com o grafo do
problema, como mostra a figura 4.

3.3 – Grafos e Árvores de Busca


Para auxiliar no processo de busca, é útil construir uma árvore de busca cujo nó raiz está
associado a um estado inicial e onde os sucessores de qualquer nó são associados aos estados
obtidos através da aplicação da função sucessor sobre a descrição do estado associado ao nó
(BITTENCOURT, 2001).

Uma representação gráfica de um espaço de estados genérico é apresentada na figura 3(a). O


conjunto de estados é dado por {e1, ......., e7}; o único estado inicial - e5 – é marcado com uma
seta; o, também único, estado final – e4 – é marcado pela cor escura; e, finalmente, o conjunto de
operadores é dado por {op1, op2, op3}.

Figura 4 – Relação entre Grafo do problema e Árvore de Busca


Fonte: WINSTON, 1992.

Para transformar um grafo em uma árvore de busca, devem ser descartados os caminhos que
revisitam qualquer nó em particular, com objetivo de se evitar looping, como, por exemplo, na
seqüência S A D S A D S A D ...

Com os caminhos em looping eliminados, pode-se arranjar todos os caminhos possíveis em


forma de árvore de busca (search tree), com o nó inicial como nó raiz (root node). A conversão de
grafo em árvore de busca faz-se traçando todos os caminhos possíveis a partir de cada nó,
extendendo-os ao máximo, sem gerar looping (WINSTON, 1992, p. 64).

Russell e Norvig (2004) afirmam que é importante distinguir entre o espaço de estados e a
árvore de busca. No caso da figura 4 existem apenas 8 estados no espaço de estados, representando
cada um deles uma cidade, por exemplo. No entanto, há um número infinito de caminhos nesse
Figura 3 – Espaço de Estados espaço de estados, e assim a árvore de busca tem um número infinito de nós.
Fonte: BITTENCOURT, 2001.

Profa. Denise Franzotti Togneri Profa. Denise Franzotti Togneri


Busca em Espaço de Estados 7 Busca em Espaço de Estados 8

Uma árvore de busca possui diversos elementos, como mostra a figura 5. É importante lembrar as diferenças entre nós e estados. Um nó é uma estrutura de dados
usada para representar a árvore de busca. Um estado representa uma configuração (ou conjunto de
configurações) do mundo. Desse modo, os nós estão em caminhos específicos, definidos por
Profundidade (depth) = 0 ponteiros NÓ-PAI, enquanto os estados não estão. Além disso, dois nós diferentes podem conter o
mesmo estado do mundo, se esse estado for gerado por meio de dois caminhos de busca diferentes.

Os ramos da árvore denotam a expansão de um nó para o próximo nó.

O nó raiz é o ponto de início da busca no grafo.

Os nós expandidos são aqueles que já deram origem a um outro conjunto de nós e não
podem mais ser expandidos.

Os nós em expansão são aqueles que já começaram a ser expandidos, mas ainda podem ser
potencialmente expandidos.

A expansão de um nó significa determinar os filhos deste nó.

Os nós fronteiriços ou borda são aqueles que foram gerados, mas ainda não foram
expandidos.

As folhas ou nós terminais são aqueles que não puderam ser expandidos, ou seja, são nós
sem sucessores.

O fator de ramificação b de um nó é o número de sucessores (ou filhos) do mesmo.


Figura 5 – Elementos de uma árvore de busca Tomando como exemplo a figura 7, o fator de ramificação b do nó B é igual a 2 (Bfactor = 2),
enquanto que o do nó D é igual a 1 (Bfactor = 1).
Os Nós são estruturas complexas que podem ser representadas de diversas maneiras. Russell
e Norvig (2004) afirmam que um nó é uma estrutura de dados com cinco componentes:

• estado. o estado no espaço de estados a que o nó corresponde;

• nó-pai. É o nó na árvore de busca que gerou esse nó;

• ação. A ação que foi aplicada ao pai para gerar o nó;

• custo do caminho. O custo, tradicionalmente denotado por g(n), do caminho desde o


estado inicial até o nó, indicado pelos ponteiros do pai;

• profundidade do nó. O número de passos ao longo do caminho (path) desde o estado


inicial (a partir do nó raiz até ele).
Figura 7 – Fator de ramificação de nó
Sendo assim, o tipo de dado de um nó pode ser representado como mostra a figura 6.

datatype NÓ

componentes: ESTADO, NÓ-PAI, AÇÃO, CUSTO-CAMINHO, PROFUNDIDADE

Figura 6 – Tipo de dado para representação de um nó


Fonte: RUSSELL; NORVIG, 2004.

Profa. Denise Franzotti Togneri Profa. Denise Franzotti Togneri


Busca em Espaço de Estados 9 Busca em Espaço de Estados 10

somente uma vez e já for difícil encontrar qualquer caminho, será satisfatório encontrar algum
3.4 – Estratégias de Busca caminho, mesmo que seja possível encontrar, com mais trabalho, um caminho melhor (Winston,
1992).
Os algoritmos de busca são aqueles que, a partir de um estado inicial, percorrem os nós do
grafo que representa o problema, buscando por um caminho ou nó que represente a solução do As estratégias de busca podem ser classificadas em (RUSSELL; NORVIG, 2004):
problema. A saída desses algoritmos consiste em falha ou em uma solução.
• Busca cega ou sem informação. Significa que elas não têm nenhuma informação
No entanto, a maior parte do trabalho na área de busca diz respeito a encontrar a estratégia
adicional sobre estados, além daquelas fornecidas na definição do problema. Tudo o que
de busca (que determina qual estado deve ser expandido primeiro) correta para um problema.
elas podem fazer é gerar sucessores (novos estados) e distinguir um estado objetivo de
O desempenho do algoritmo de resolução de problemas pode ser avaliado em termos de um estado não-objetivo (RUSSELL; NORVIG, 2004). Essas estratégias de busca não
quatro aspectos (RUSSELL; NORVIG, 2004): levam em conta informações específicas sobre o problema a ser resolvido (como por
exemplo, o custo do caminho) (BITTENCOURT, 2001). Estão interessadas em
• Completeza. O algoritmo oferece a garantia de encontrar uma solução quando ela encontrar qualquer caminho e não o de melhor custo e não detém conhecimento do
existir? problema;

• Otimização. A estratégia encontra a solução ótima (tem o menor custo de caminho entre • Busca heurística ou com informação. Usa conhecimentos específicos do problema -
todas as soluções)? além da definição do próprio problema - para encontrar soluções de forma mais
eficiente que uma estratégia sem informação. Essas estratégias sabem se um estado não-
• Complexidade de tempo. Quanto tempo ele leva para encontrar uma solução? objetivo é “mais promissor” que outro (RUSSELL; NORVIG, 2004). Esses
conhecimentos específicos podem ser, por exemplo, o custo do menor caminho do nó
• Complexidade de espaço. Quanta memória é necessária para executar a busca? inicial até o nó em questão e o custo do caminho até um nó associado ao estado-objetivo
mais próximo (BITTENCOURT, 2001). Sendo assim, a eficiência da busca pode ser
A complexidade de tempo e a complexidade de espaço são sempre consideradas em relação incrementada de forma espetacular, pois existe uma maneira para obter medidas e
a alguma medida da dificuldade do problema. Na Ciência da Computação teórica, a medida típica é ordenar as escolhas, de forma que os caminhos mais promissores possam ser explorados
o tamanho do grafo do espaço de estados, porque o grafo é visualizado como uma estrutura de mais cedo (Winston, 1992, p. 70).
dados explícita inserida no programa de busca. No entanto, na Inteligência Artificial, na qual o
grafo é representado implicitamente pelo estado inicial e pela função sucessor e com freqüência é As buscas cegas são menos efetivas que as buscas heurísticas. No entanto, as buscas cegas
infinito, a complexidade é expressa em termos de três quantidades (RUSSELL; NORVIG, 2004): continuam sendo importantes, uma vez que existem muitos problemas para os quais não existem
informações adicionais para serem consideradas (RUSSELL; NORVIG, 2004).
• b, o fator de ramificação ou número máximo de sucessores de qualquer nó;
No entanto, independente da estratégia de busca, para construir uma solução, um processo
de busca necessita de (AHONEN, 1998):
• d, a profundidade do nó objetivo menos profundo (mais próxima do nó raiz);
1. Uma representação dos elementos de um espaço de busca;
• m, o comprimento máximo de qualquer caminho no espaço de estados.
2. Ferramentas de transformação (ou regras de produção) para gerar novos elementos do
Com freqüência, o tempo é medido em termos do número de nós gerados durante a busca, e espaço de busca a cada passo do processo de busca;
o espaço é medido em termos do número máximos de nós armazenados na memória.
3. Estratégia de controle (como proceder).
Para avaliar a efetividade de um algoritmo de busca, dois custos diferentes podem ser
considerados (RUSSELL; NORVIG, 2004, WINSTON, 1992): A busca em árvore é um processo de busca no qual uma árvore (árvore de busca) é
construída passo a passo. O nó-raiz da árvore representa a situação inicial, onde nada foi construído,
• Custo de busca. Em geral depende da complexidade de tempo, mas também pode os nós da árvore representam o espaço de busca, seus nós-folha representam os elementos do
incluir um termo para uso da memória; espaço de solução ou os elementos do espaço de busca sem sucessores e os arcos representam os
passos de construção (ou as decisões tomadas no processo de busca).
• Custo total. Combina o custo de busca e o custo de caminho da solução encontrada.
Utilizando, portanto, uma árvore de busca (AHONEN, 1998):
Sendo assim, algumas considerações devem ser feitas. Por exemplo, se for necessário ir de
Arad para Bucareste com freqüência, vale a pena gastar tempo de busca (search time) para 1. A representação dos elementos é feita através da representação dos nós da árvore;
encontrar um caminho (path) realmente bom. Por outro lado, se for necessário fazer a viagem

Profa. Denise Franzotti Togneri Profa. Denise Franzotti Togneri


Busca em Espaço de Estados 11 Busca em Espaço de Estados 12

2. As ferramentas de transformação são os geradores de nós filhos (expandindo um nó); Bittencourt (2001) propôs um algoritmo genérico para Busca Cega conforme mostra a figura
3. A estratégia de controle é definida através da definição de quais nós devem ser 8. O procedimento de solução deve construir uma árvore de busca. Como uma árvore é definida por
um conjunto de nós, é necessário definir uma estrutura de dados para um nó genérico, independente
expandidos a seguir.
da estratégia de busca ser cega ou heurística. Um nó é, então, caracterizado, de forma geral, pelos
seguintes elementos:

ni = (ei, pi, gi, hi)


3.5 – Estratégias de Busca Cegas ou sem Informação
onde:
Na literatura existem várias estratégias de busca cega descritas. Russell e Norvig (2004)
classificam as estratégias de busca cega em:
• ni = nó qualquer da árvore de busca;
• busca em largura ou extensão (breadth-first search);
• ei = o estado ao qual ele está associado;
• busca de custo uniforme (uniform cost search);
• pi = um ponteiro para o nó antecessor do nó ni (para permitir a determinação do caminho
que forma a solução, uma vez encontrado um estado final);
• busca em profundidade (depth-first search);
• gi = comprimento do caminho entre o nó inicial e o nó em questão;
• busca em profundidade limitada (depth-limited search);
• hi = valor associado a uma estimativa da distância até o nó final mais próximo; a
• busca de aprofundamento iterativo (iterative deepening search);
chamada função heurística específica de cada problema.
• busca bidirecional (bidirectional search).

Nilsson (1998) classifica essas estratégias em: Busca-cega ( )


• busca em largura (breadth-first search); 0. open Å { (e0, ⊥, 0, h(e0) ) }
closed Å 0
• busca em profundidade (depth-first search ou backtracking search); 1. Se open = 0 então retorne Falha
2. ni Å Seleciona (open)
• busca de aprofundamento iterativo (iterative deepening search); 3. open Å open - {ni}
Winston (1992) classifica essas estratégias em: 4. closed Å closed ∪ {ni}
5. seja ni = (ei, pi, gi, hi)
• busca em profundidade (depth-first search); se Final(ei) então retorne Sucesso
• busca em largura (breadth-first search);
6. ∀ej ∈ Sucessores(ei)
se ∃ nk = (ek , pk , gk , hk) ∈ open, ej = ek ∧
• busca não determinística (nondeterministic search). ∃ nk = (ek, pk , gk , hk) ∈ closed, ej = ek
então open Å open ∪ { ( ej, ni, gi + 1, h(ej) ) }
7. Volte para 1

Figura 8 – Procedimento de Busca Cega


Fonte: BITTENCOURT, 2001.

Profa. Denise Franzotti Togneri Profa. Denise Franzotti Togneri


Busca em Espaço de Estados 13 Busca em Espaço de Estados 14

Para desenvolvimento do algoritmo de busca cega é necessário manter um conjunto de nós a diante. Em geral, todos os nós em uma dada profundidade na árvore de busca são expandidos, antes
examinar e outro conjunto de nós já examinados pois, em geral, cada estado pode ser alcançado que todos os nós no nível seguinte sejam expandidos (RUSSELL; NORVIG, 2004).
por mais de um caminho. Sendo assim, é necessário verificar, antes de adicionar um novo nó à
Como mostrado na figura 9, a busca em largura verifica todos os caminhos de uma dada
árvore, se o estado atual já não foi encontrado antes. Esses conjuntos podem ser chamados, profundidade antes de se mover para outros caminhos com profundidades maiores (WINSTON,
respectivamente, de open e closed na definição do procedimento de busca cega apresentado na 1992). Nessa estratégia, cada nível da árvore é inteiramente construído antes que qualquer nó do
figura 8. próximo nível seja adicionado à árvore (BITTENCOURT, 2001, p. 214).
O procedimento da função Seleciona é que escolhe o próximo nó a ser examinado
(BITTENCOURT, 2001, p. 214). Os procedimentos de busca cega aplicam operadores a nós sem A figura 10 mostra o progresso da busca em largura em uma árvore binária simples. Em
usar qualquer conhecimento especial sobre o domínio do problema (NILSSON, 1998). Isto cada fase, o nó a ser expandido em seguida é indicado por um marcador.
significa que o valor hi da estrutura de um nó não é usado nesses procedimentos. O único
parâmetro que pode ser utilizado para controlar a busca é o valor g da profundidade do nó. Duas
opções são possíveis (BITTENCOURT, 2001):
S S
• definir a função Seleciona de tal maneira que ela escolha o nó de menor g, o que
corresponde à busca em largura ou
A D

• fazê-la escolher o nó de maior g, o que corresponde à busca em profundidade. (a) (b)

S S
3.5.1 - Busca em largura ou extensão (breadth-first search)
A D A D
A figura 9 apresenta como a árvore de busca é percorrida na estratégia de busca em largura.

B D B D A E

Nível 0 (c) (d)


Nível 1
Figura 10 – Passo-a-passo – Busca em Largura em uma árvore binária simples.
Fonte: RUSSELL; NORVIG, 2004.

A busca em largura é uma busca completa – se o nó objetivo mais raso estiver em alguma
profundidade finita d, a busca em largura eventualmente o encontrará após expandir todos os nós
mais rasos (desde que o fator de ramificação b seja finito). O nó objetivo mais raso não é
necessariamente o nó ótimo (RUSSELL; NORVIG, 2004).

Segundo Nilsson (1998), esse procedimento gera um grafo de espaço de estados explícito
através da aplicação de todos os operadores possíveis ao nó inicial e dessa forma, obtendo todos os
seus sucessores. Para cada sucessor direto do nó inicial obtido, são aplicados todos os operadores
possíveis novamente e assim por diante. Uma vez que, a cada passo, são aplicados todos os
Figura 9– Um exemplo de busca em largura operadores possíveis a um nó, é conveniente agrupá-los em uma função chamada função
Fonte: WINSTON, 1992. sucessora. A função sucessora, quando aplicada a um nó, produz o conjunto completo de nós
A busca em largura é uma estratégia simples em que o nó raiz é expandido primeiro, em sucessores daquele nó. A aplicação da função sucessora a um nó é chamada expansão do nó.
seguida, todos os sucessores do nó raiz são expandidos, depois os sucessores desses nós e assim por

Profa. Denise Franzotti Togneri Profa. Denise Franzotti Togneri


Busca em Espaço de Estados 15 Busca em Espaço de Estados 16

Na estratégia de busca em largura convencionou-se começar a busca da esquerda para a O procedimento determina tirar um membro da fila (mais à esquerda) e explorá-lo, ou seja,
direita, até atingir o nó objetivo. Sendo assim, o algoritmo de busca em largura consiste nos verificar se ele não é o nó-objetivo. Se não for, obter seus filhos e colocá-los no final da fila, como
seguintes passos (WINSTON, 1992): por exemplo

1. Construir uma fila (queue) com 1 elemento consistindo de um caminho de comprimento (A2, A3, ... Ak ... An, A11, A12, A13)
zero contendo somente o nó raiz (root);
Dessa forma, todos os nós de um mesmo comprimento são explorados antes de se começar a
2. Repetir até encontrar o primeiro caminho da fila que contenha o nó-objetivo ou até que a explorar seus sucessores que têm um comprimento maior. No próximo ciclo, a fila ficaria da
fila esteja vazia seguinte forma:

a. “Remover” o primeiro caminho da fila; criar novos caminhos estendendo o (A3, ... Ak ... An, A11, A12, A13, A21, A22).
primeiro caminho para todos os nós vizinhos do nó terminal;
Percebe-se, portanto, que o nó a explorar é sempre o nó cabeça da fila.
b. Rejeitar todos novos caminhos com ciclos (loop);

c. Adicionar novos caminhos, se existirem, no final da fila, ou seja, os nós-filhos


ou sucessores são colocados no final da fila para serem visitados somente após 3.5.2 - Busca em Profundidade (Depth-first Search)
pesquisa a todos os pais do nível anterior;
A busca em profundidade sempre expande o nó mais profundo na borda atual da árvore de
3. Se o objetivo for encontrado Î anunciar sucesso! Caso contrário, anunciar falha. busca (RUSSELL; NORVIG, 2004). A figura 12 apresenta como a árvore de busca é percorrida na
estratégia de busca em profundidade.

Suponha que, inicialmente, uma fila seja formada por (A1, A2, A3, ...Ak ... An), como mostra
a figura 11.

A1 A2 A3 ..... Ak ..... An

A11 A12 A13 A21 A22

A111 A112 Figura 12 – Um exemplo de busca em profundidade


Fonte: WINSTON, 1992.
Como mostrado na figura 12, uma vez que na busca cega um caminho é tão bom quanto
Figura 11 – Exemplo de Árvore de Busca qualquer outro, a busca em profundidade obtém os filhos de cada nó visitado, trabalhando, então,
em direção à profundidade da árvore de busca. As demais alternativas (nós) do mesmo nível de um
determinado nó são ignoradas completamente (WINSTON, 1992).

Nessa estratégia, a prioridade de expansão é dada aos sucessores do último estado (nó)
adicionado à árvore (BITTENCOURT, 2001, p. 214).

Profa. Denise Franzotti Togneri Profa. Denise Franzotti Togneri


Busca em Espaço de Estados 17 Busca em Espaço de Estados 18

A figura 13 mostra o progresso da busca em profundidade em uma árvore binária simples. A S S


busca prossegue imediatamente até o nível mais profundo da árvore de busca, onde os nós não têm
sucessores. À medida que esses nós são expandidos, eles são retirados da borda, e então a busca
A D
“retorna” ao nó seguinte mais raso que ainda tem sucessores inexplorados, ou seja, os nós que (a) (b)
foram expandidos e não têm descendentes na borda podem ser removidos da memória; eles são
mostrados em cor verde (RUSSELL; NORVIG, 2004).
S
S

A D
A D

B D
B D

(c) (d)
C E
nó-folha

S S

A D A D

B D
D B

(e) (f)
C E C E

D F

S S

A D A D

B D B D

(g) (h)
C E C E

D F D F

G nó-objetivo!!

Figura 13 – Passo-a-passo – Busca em profundidade em uma árvore binária simples.


Fonte: RUSSELL; NORVIG, 2004.

Profa. Denise Franzotti Togneri Profa. Denise Franzotti Togneri


Busca em Espaço de Estados 19 Busca em Espaço de Estados 20

Na estratégia de busca em profundidade, também convencionou-se começar a busca da A Busca em Profundidade é má idéia quando existem caminhos longos (fator de
esquerda para a direita, até atingir o nó-objetivo. Sendo assim, o algoritmo de busca em ramificação = branching factor = número de sucessores ou filhos do nó é grande).
profundidade consiste nos seguintes passos (WINSTON, 1992):
A Busca em Largura é uma boa idéia para árvores com grande profundidade e com fator de
1. Construir uma fila (queue) com 1 elemento consistindo de um caminho de comprimento ramificação = branching factor = número de sucessores ou filhos do nó pequeno).
zero contendo somente o nó raiz (root); A Busca em Largura é dispendiosa quando
2. Repetir até encontrar o primeiro caminho da fila que contenha o nó-objetivo ou até que a
• todos os caminhos levam ao nó-objetivo localizado na mesma profundidade,
fila esteja vazia
independente de caminho;
a. “Remover” o primeiro caminho da fila; criar novos caminhos estendendo o
primeiro caminho para todos os nós vizinhos do nó terminal; • o fator de ramificação é grande (por causa da explosão exponencial).

b. Rejeitar todos novos caminhos com repetição (loop);

c. Adicionar novos caminhos, se existirem, no início da fila (front), ou seja, os 3.6 – Estratégias de Busca Heurísticas ou com Informação
nós-filhos ou sucessores são colocados no início da fila (mais à esquerda) para
serem visitados antes da pesquisa dos demais pais do nível anterior; A eficiência da busca pode ser incrementada de forma espetacular, se existir uma maneira
para ordenar as escolhas, de forma que os caminhos mais promissores possam ser explorados mais
3. Se o objetivo for encontrado Î anunciar sucesso! Caso contrário, anunciar falha. cedo.

Em várias situações é possível obter medidas de forma a determinar uma ordem razoável.
Os métodos de busca que obtêm vantagens com tais medidas são chamados métodos de busca
Considerando a figura 11 e supondo, então, que inicialmente uma fila seja formada por (A1, informados heuristicamente (WINSTON, 1992, p. 70). As medidas heurísticas são, portanto,
A2, A3, ...Ak ... An), o procedimento determina tirar um membro da fila (mais à esquerda) e explorá- informações específicas a respeito do problema que permitam um direcionamento aproximado da
lo, ou seja, verificar se ele não é o nó-objetivo. Se não for, obter seus filhos e colocá-los no início busca (BITTENCOURT, 2001, p. 219).
da fila de nós abertos, como por exemplo

(A11, A12, A13, A2, A3, ... Ak ... An)

Dessa forma, os nós filhos serão explorados antes dos demais nós-pais de mesmo
comprimento, uma vez que sempre exploramos antes os nós mais à esquerda da fila. No próximo
ciclo, a fila ficaria da seguinte forma:

(A111, A112, A12, A13, A2, A3, ... Ak ... An).

Da mesma forma que a busca em largura, o nó a explorar é sempre o nó cabeça da fila.

3.5.3 – Comparação entre Busca em Largura e Busca em Profundidade


A Busca em Profundidade é uma boa idéia quando:

• a profundidade não é grande;

• para destinos próximo à raiz;

• existe confiança de que todos os caminhos parciais ou atingem seu fim ou se tornam
completos após um razoável número de passos.

Profa. Denise Franzotti Togneri Profa. Denise Franzotti Togneri


Busca em Espaço de Estados 21 Busca em Espaço de Estados 22

De forma mais geral, a busca branch-and-bound mantém sempre uma trilha de todos os
3.6.1 – Busca Branch-and-Bound caminhos parciais em disputa para maiores considerações posteriores. O caminho mais curto é
estendido 1 nível, criando tantos caminhos parciais novos quantas forem as ramificações. A seguir,
Uma das formas de encontrar um caminho ótimo é usar a busca branch-and-bound. A idéia
esses novos caminhos são considerados, junto com os anteriores ainda restantes na fila de abertos.
básica é simples. Suponha que se deseje uma solução ótima para o grafo apresentado na figura 14.
Esse processo se repete até que o objetivo seja alcançado ao longo de algum caminho.
Suponha também que um oráculo tenha informado que S-D-E-F-G é a solução ótima. Sendo um
cientista, no entanto, você não acredita em oráculos. Levando em consideração que o caminho mais curto foi sempre o escolhido para ser
expandido, o primeiro caminho que alcançou o objetivo parece ser o caminho ótimo.
A C
4 4 Para se ter certeza, é necessário expandir todos os caminhos parciais até que eles sejam do
mesmo tamanho ou maiores do que o tamanho do caminho completo (o primeiro caminho que
3 alcançou o objetivo). A razão é que o último passo executado para alcançar o objetivo pode ser
B longo o bastante para tornar a suposta solução maior do que os tamanhos de um ou mais caminhos
G
5 parciais. Sendo assim, ao invés de terminar a execução do algoritmo quando o primeiro caminho for
S encontrado, a busca termina quando caminhos parciais mais curtos, relativos aos nós abertos, forem
5
do mesmo comprimento (mesma distância acumulada) ou maiores que o do menor caminho
4 3 completo.
2 E F
4 D Na busca Branch-and-Bound, o algoritmo “avança e volta” caso se “arrependa” do caminho
adotado. Sendo assim, a busca Branch-and-Bound consiste nos seguintes passos (WINSTON,
1992):
Figura 14 – Exemplo de Grafo
1. Construir uma fila (queue) com 1 elemento consistindo de um caminho de comprimento
Fonte: WINSTON, 1992.
zero contendo somente o nó raiz (root);
Entretanto, sabendo que o comprimento do caminho S-D-E-F-G é 13, é possível eliminar
algum trabalho que, de outra forma, deveria ser feito. Por exemplo, como mostra a árvore de busca 2. Repetir até encontrar o primeiro caminho da fila que contenha o nó-objetivo ou até que a
correspondente, apresentada na figura 15, não há necessidade de considerar caminhos que iniciam fila esteja vazia
com S-D-A-B, porque seu comprimento será no mínimo 13, dado que o comprimento de S-D-A-B
já é 13. a. “Remover” o primeiro caminho da fila; criar novos caminhos estendendo o primeiro
caminho para todos os nós vizinhos do nó terminal;
S
b. Rejeitar todos novos caminhos com ciclos (loop);
A D c. Adicionar à fila os novos caminhos restantes, se existirem;

d. Classificar toda a fila pelos valores do comprimento do caminho até o nó


A E (distâncias acumuladas), colocando os caminhos de menor custo no início ou na
cabeça (front) da fila. Dessa forma, o caminho de menor custo será avaliado
primeiro;

B F 3. Se o objetivo for encontrado Î anunciar sucesso! Caso contrário, anunciar falha.

13 A figura 16 apresenta a seqüência de exploração da busca branch-and-bound quando


executada sem avaliação de caminhos parciais, supondo que o nó-objetivo é o nó G. No primeiro
G passo, a distância do caminho parcial S-A é 3 e de S-D é 4 e, sendo assim, o caminho parcial S-A é
selecionado para expansão. A seguir, S-A-B e S-A-D são gerados a partir de S-A com distâncias de
13 7 e 8, respectivamente.

Figura 15 – Parte da árvore de busca corresponde ao grafo da figura 19 Como o objetivo não foi encontrado e avaliando os caminhos parciais existentes na fila de
Fonte: WINSTON, 1992. open (S-D com 4, S-A-B com 7 e S-A-D com 8), o caminho parcial S-D com 4 é expandido,

Profa. Denise Franzotti Togneri Profa. Denise Franzotti Togneri


Busca em Espaço de Estados 23 Busca em Espaço de Estados 24

gerando os caminhos parciais S-D-A e S-D-E. Nesse ponto, existem 4 caminhos parciais para serem
avaliados (S-A-B com 7, S-A-D com 8, S-D-A com 9 e S-D-E com 6) e o caminho parcial S-D-E é
o mais curto.

No sétimo passo, os caminhos parciais S-A-D-E e S-D-E-F são os caminhos mais curtos
com distância 10. Expandindo o caminho S-A-D-E, são obtidos dois caminhos terminando com S
os nós B e F. Expandindo S-D-E-F, do lado direito da árvore, obtém-se o caminho completo
S-D-E-F-G, com uma distância total de 13. Este caminho é o mais curto existente, mas para A D
você ficar absolutamente seguro disso, deve estender os caminhos parciais S-D-E-B com 3 4
distância de 11 e S-A-B-E com distância de 12. Observe que o segundo caminho parcial S-A-B-C
com valor 11 não pode mais ser expandido pois C é nó-folha. Não existe necessidade de estender o (passo 1)
caminho parcial S-D-A-B, uma vez que sua distância de 13 é igual à distância do caminho
completo.

A busca termina quando todos os caminhos parciais relativos aos nós abertos são do S

mesmo comprimento (mesma distância acumulada) ou maiores que o do caminho completo


(S-D-E-F-G) (WINSTON, 1992). A D
4

B D
7 8

(passo 2)

A D

B D A E
7 8 9 6

(passo 3)

A D

B D A E
7 8 9

(passo 4) B F

11 10

Figura 16 – Passo-a-passo – Busca Branch-and-Bound


Fonte: WINSTON, 1992.

Profa. Denise Franzotti Togneri Profa. Denise Franzotti Togneri


Busca em Espaço de Estados 25 Busca em Espaço de Estados 26

S
S
A D
A D

B D A E
B D A E
8 9
C E E B B F
C E B F 11 12 13 11 10
11 12 11 10
(passo 5) B F
15 14

(passo 8)
S

A D

S
B D A E
9
A D

C E E B F

11 12 10(passo 6) 11 10 B D A E

C E E B B F

11 12 13 11
S

nó-folha B F G
A D
15 14 13

B D A E (passo 9)

C E E B B F Figura 16 – Passo-a-passo – Busca Branch-and-Bound


11 12 10 13 11 10 Fonte: WINSTON, 1992.
(passo 7)

Figura 16 – Passo-a-passo – Busca Branch-and-Bound


Fonte: WINSTON, 1992.

Profa. Denise Franzotti Togneri Profa. Denise Franzotti Togneri


Busca em Espaço de Estados 27 Busca em Espaço de Estados 28

3.6.2 – Busca Branch-and-Bound com Estimativa


S Em alguns casos, é possível melhorar de forma significativa a busca branch-and-bound
utilizando as distâncias já percorridas e as estimativas de distâncias restantes.
A D
Se as estimativas sobre as distâncias restantes forem boas, a estimativa do comprimento total
do caminho e também será boa, onde:
B D A E
e=d+r

C E E B B F
e = custo total estimado de um caminho;
11 12 13
d = custo do caminho já percorrido – já conhecido;
B F A C G r = custo da distância restante (do ponto atual até o objetivo) – é uma estimativa.
15 14 15 15 13
Segundo Winston (1992), uma super-estimativa das distâncias restantes pode levar a busca
(passo 10) branch-and-bound para longe do caminho ótimo permanentemente. No entanto, a sub-estimativa
das distâncias restantes não permite que o caminho ótimo seja negligenciado, pois produz uma sub-
estimativa das distâncias do caminho total.

S Sendo assim, a busca Branch-and-Bound com estimativa consiste nos seguintes passos
(WINSTON, 1992):
A D
1. Construir uma fila (queue) com 1 elemento consistindo de um caminho de comprimento
zero contendo somente o nó raiz (root);
B D A E
2. Repetir até encontrar o primeiro caminho da fila que contenha o nó-objetivo ou até que a
fila esteja vazia
C E E B B F
a. “Remover” o primeiro caminho da fila; criar novos caminhos estendendo o
11 13 primeiro caminho para todos os nós vizinhos do nó terminal;
D F B F A C G
b. Rejeitar todos novos caminhos com ciclos (loop);
14 16 15 14 15 15 13
c. Adicionar à fila os novos caminhos restantes, se existirem;
(passo 11) d. Classificar toda a fila pela soma dos valores do comprimento do caminho
(distâncias acumuladas) + a estimativa do custo restante (até o objetivo),
colocando os caminhos de menor custo total no início ou na cabeça (front) da
Figura 16 – Passo-a-passo – Busca Branch-and-Bound fila. Dessa forma, o caminho de menor custo TOTAL será avaliado primeiro;
Fonte: WINSTON, 1992.
3. Se o objetivo for encontrado Î anunciar sucesso! Caso contrário, anunciar falha.

Profa. Denise Franzotti Togneri Profa. Denise Franzotti Togneri


Busca em Espaço de Estados 29 Busca em Espaço de Estados 30

A figura 17 apresenta as distâncias restantes em linha reta de cada cidade até o objetivo,
relativas ao grafo e respectiva árvore de busca apresentados na figura 4 (WINSTON, 1992).

S
3 4
A B
10.4 C 10.4 A D 8.9
4 5 5 2
6.7
4.0
6.7 B 8.9 D A 10.4 E 6.9

S
11.0 G 4 5 2 4 5 4

4.0 C 6.9 E 6.9 E B 6.7 B 6.7 F 3.0


8.9
3.0 2 4 5 4 4 5 4 4 3

D E
6.9 F D F B F C E A C G

3 4 3 4

Figura 17 – Exemplo de distâncias estimadas entre cada cidade e o objetivo G C G F


Fonte: WINSTON, 1992.
3

A figura 18 apresenta uma árvore de busca que foi gerada considerando as estimativas de G
distâncias restantes de cada cidade até o objetivo apresentadas na figura 17 e o grafo apresentado na
figura 14. Os valores em letra preta sem negrito representam as distâncias entre cidades (nós) e os
valores em vermelho/em negrito/sublinhados representam as estimativas de distâncias restantes de
cada nó até o nó objetivo. Figura 18 – Árvore de Busca com distância entre nós e estimativa de custo restante
Fonte: WINSTON, 1992.

A figura 19 apresenta a seqüência de exploração da busca branch-and-bound com


estimativa, a partir da árvore de busca apresentada na figura 18. Como dito anteriormente, os nós A
e D são gerados a partir do nó raiz S. Analisando-os, percebe-se que a busca começará pelo nó D
pois o custo estimado do seu caminho total é 12.9, que é menor que o do nó A (13.4).

A expansão do nó D leva aos caminhos parciais S-D-A, cujo custo total estimado é de 19.4 e
S-D-E, com custo de 12.9. S-D-E é, portanto, o caminho parcial a expandir. O resultado é um
caminho para B, com uma distância estimada de 17.7 e outro caminho para F, com distância total
estimada de 13.0. O caminho parcial a expandir é S-D-E-F, pois tem custo total estimado menor que
o S-D-E-B.

Essa expansão leva a um caminho completo S-D-E-F-G, com uma distância total de 13.0 e
como nenhum caminho parcial tem uma distância estimada total menor que 13, nenhuma
busca adicional será requerida.

Profa. Denise Franzotti Togneri Profa. Denise Franzotti Togneri


Busca em Espaço de Estados 31 Busca em Espaço de Estados 32

É claro que, quanto mais próxima a estimativa for da distância verdadeira, mais eficiente 3.6.3 – Busca A* (A Estrela)
será a busca, pois se não houver diferenças entre elas, não haverá chance de qualquer movimento
falso (WINSTON, 1992). A busca A* é uma busca branch-and-bound com estimativa de distância restante,
combinada com o princípio da programação dinâmica, ou seja, é o algoritmo de busca heurística
que utiliza como custo do caminho a soma das distâncias já percorridas com as estimativas de
S distâncias restantes, combinado com o princípio da programação dinâmica. Considerando o
problema de minimização, é um algoritmo que encontra o caminho de menor custo entre dois
A D pontos, se ele existir.
13.4 (10.4 + 3) 12.9 (8.9 + 4)
Se as estimativas sobre as distâncias restantes forem boas, a estimativa do custo total do
caminho e também será boa, onde:

S e=d+r

A D e = custo total estimado do caminho;


13.4 d = custo total do caminho já percorrido. É uma medida conhecida do custo de ir
do estado inicial ao nó atual;
A E
r = custo estimado da distância restante (do ponto atual até o nó objetivo). É
19.4 (10.4 + 5 + 4) 12.9 (6.9 + 2 + 4) uma estimativa do custo adicional de ir do nó atual para o nó objetivo. É o
lugar onde o conhecimento a respeito do domínio do problema é explorado
S
(Rich, 1988).
O princípio da programação dinâmica afirma que (WINSTON, 1992):
A D
13.4 “O melhor caminho para chegar até um local (nó) intermediário particular consiste no
melhor caminho para chegar até ele, a partir de um local inicial, seguido pelo melhor caminho deste
A E local intermediário até seu objetivo. Não há necessidade de investigar qualquer outro caminho até
19.4 ele ou a partir dele”.

B F Sendo assim, na procura do melhor caminho de S para G, todos os caminhos de S para


17.7 (6.7 + 11) 13 (3.0 + 10) qualquer nó intermediário I, exceto os de comprimento mínimo podem ser ignorados. A figura 20
ilustra o princípio da programação dinâmica. Os números indicam distâncias acumuladas. Não faz
sentido expandir a instância do nó D no final do caminho S-A-D, pois buscar o objetivo através da
S instância de D no final do caminho S-D é mais eficiente, uma vez que tem o menor custo. O
caminho S-A-D pode, portanto, ser eliminado.
A D

13.4
A E S
19.4
próximo a ser
A D expandido
B F
12.9
17.7
B D nunca será expandido
G

13 (0.0 + 4 + 2 + 4 + 3) 13.7 16.9

Figura 19 – Passo-a-passo – Busca Branch-and-Bound com


estimativa Figura 20 – Exemplo do Princípio da Programação Dinâmica
Fonte: WINSTON, 1992. Fonte: WINSTON, 1992.

Profa. Denise Franzotti Togneri Profa. Denise Franzotti Togneri


Busca em Espaço de Estados 33 Busca em Espaço de Estados 34

Avaliando as diferentes estratégias de busca heurística apresentadas, percebe-se que existem


O algoritmo A* produz uma solução ótima quando a estimativa da distância restante for várias formas de pesquisar por caminhos ótimos, cada uma delas apresentando várias vantagens
menor que a distância real, ou seja, o algoritmo será ótimo (caso exista um caminho, ele sempre (WINSTON, 1992):
será o de menor custo, examinando o menor número de nós). No entanto, Winston (1992) afirma
• a busca Branch-and-Bound é boa quando a árvore for grande e os caminhos ruins se
que uma super-estimativa das distâncias restantes pode levar a busca A* para longe do caminho
tornarem claramente ruins rapidamente;
ótimo permanentemente.
• a busca Branch-and-Bound com estimativa é boa quando existir uma boa sub-
estimativa das distâncias restantes até o objetivo;
A busca A* consiste nos seguintes passos (WINSTON, 1992):
• a busca A* é boa quando a busca Branch-and-Bound com estimativa for boa e,
1. Construir uma fila (queue) com 1 elemento consistindo de um caminho de comprimento devido à programação dinâmica, quando muitos caminhos convergirem para o
zero contendo somente o nó raiz (root); mesmo local (mesmo nó).
2. Repetir até encontrar o primeiro caminho da fila que contenha o nó-objetivo com custo
total estimado ≤ custo total estimado dos caminhos parciais OU até que a fila esteja
vazia; Referências:
a. “Remover” o primeiro caminho da fila; criar novos caminhos estendendo o AHONEN, Hannu Tapio. Notas de Aula da disciplina Projeto e Análise de Algoritmos. Vitória,
primeiro caminho para todos os nós vizinhos do nó terminal, obtendo todos os Espírito Santo, 1998.
seus filhos;
BITTENCOURT, Guilherme. Inteligência artificial: ferramentas e teorias. 2 ed. Florianópolis:
b. Rejeitar todos os novos caminhos com ciclos (loop); Editora da UFSC, 2001.
c. Se dois ou mais caminhos alcançarem um nó comum, excluir todos esses NILSSON, Nils J. Artificial intelligence: a new synthesis. San Francisco, California: Morgan
caminhos, com exceção daquele que alcança o nó comum com mínimo custo Kaufmann, 1998.
estimado total;
RUSSELL, Stuart; NORVIG, Peter. Inteligência Artificial: tradução da segunda edição. Rio de
d. Classificar toda a fila pela soma dos valores do comprimento do caminho Janeiro: Elsevier, 2004.
(distâncias acumuladas – já percorridas) com a estimativa sub-estimada do
custo restante (até o objetivo), colocando os caminhos de menor custo total no WINSTON, Patrick Henry. Artificial intelligence. 3rd ed. Reading, Massachusetts: Addison-
início ou na cabeça (front) da fila. Dessa forma, o caminho de menor custo Wesley, 1992.
total será avaliado primeiro;

3. Se o objetivo for encontrado Î anunciar sucesso! Caso contrário, anunciar falha.

Levando em consideração que o caminho mais curto foi sempre o escolhido para ser
expandido, o primeiro caminho que alcançou o objetivo parece ser o caminho ótimo.

No entanto, para se ter certeza, é necessário expandir todos os caminhos parciais até que
eles tenham o mesmo custo total ou tenham o custo total maior do que o custo total do caminho que
contém o nó objetivo. A justificativa é que o último passo executado para alcançar o objetivo pode
ser longo o bastante para tornar a suposta solução maior do que os tamanhos de um ou mais
caminhos parciais. Sendo assim, ao invés de terminar a execução do algoritmo quando o primeiro
caminho for encontrado, a busca termina quando caminhos parciais mais curtos, relativos aos nós
abertos, forem do mesmo comprimento (mesma distância acumulada) ou maiores que o do menor
caminho completo.

Profa. Denise Franzotti Togneri Profa. Denise Franzotti Togneri

Vous aimerez peut-être aussi