09.05.2013 Views

aplicação de buscas heurísticas ao problema de determinação de ...

aplicação de buscas heurísticas ao problema de determinação de ...

aplicação de buscas heurísticas ao problema de determinação de ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Algoritmo A*<br />

7. Colocar a raiz da busca r em OPEN.<br />

8. Se OPEN é vazia, finalizar com erro.<br />

9. Remover <strong>de</strong> OPEN um nó n para o qual f é mínima e colocá-lo em<br />

CLOSED.<br />

10. Se n é uma solução do <strong>problema</strong>, finalizar, exibindo a<br />

solução como sendo o caminho que liga todos os nós através<br />

dos ponteiros <strong>de</strong>s<strong>de</strong> n até a raiz r.<br />

11. Caso contrário, expandir o nó n, gerando todos os seus<br />

sucessores, ligando-os a n através <strong>de</strong> ponteiros. Para cada<br />

sucessor n’ <strong>de</strong> n:<br />

a. Se n’ ainda não estiver em OPEN ou CLOSED, estimar h(n’)<br />

(uma estimativa do custo do melhor caminho entre o nó n’ e<br />

algum nó solução) e calcular f(n’)=g(n’)+h(n’) on<strong>de</strong><br />

g(n’)=g(n)+c(n,n’) e g(r)=0.<br />

b. Se n’ já estiver em OPEN ou CLOSED, seguir seus ponteiros<br />

<strong>ao</strong> longo do caminho revelando o menor valor <strong>de</strong> g(n’).<br />

c. Se n’ <strong>de</strong>mandou reorganização <strong>de</strong> ponteiros e foi encontrado<br />

em CLOSED, movê-lo para OPEN.<br />

12. Ir para o passo 2.<br />

O algoritmo mais geral<br />

*<br />

Z segue basicamente os mesmos passos <strong>de</strong><br />

*<br />

A com<br />

uma modificação. No passo 5a o cálculo <strong>de</strong> f (n′<br />

) po<strong>de</strong> invocar uma função<br />

arbitrária da forma f ( n′<br />

) = [ E(<br />

n),<br />

f ( n),<br />

h(<br />

n′<br />

)] , on<strong>de</strong> E(n) é um conjunto <strong>de</strong><br />

parâmetros locais que caracteriza o nó n (por exemplo c ( n,<br />

n′<br />

) ). De forma<br />

análoga, no passo 5b, o algoritmo<br />

*<br />

Z direciona ponteiros <strong>ao</strong> longo do<br />

caminho <strong>de</strong> mínimo f (n′<br />

) (<strong>ao</strong> invés <strong>de</strong> mínimo g (n′<br />

) ). Também é importante<br />

notar que a busca em largura é um caso especial <strong>de</strong> *<br />

A com h = 0 e<br />

c ( n,<br />

n′<br />

) = 1 para todos os sucessores. Por outro lado, a busca em<br />

profundida<strong>de</strong> é um caso especial <strong>de</strong><br />

B.6 Sumário<br />

f ′ n e f ( r)<br />

= 0 .<br />

*<br />

Z com ( n ) = f ( ) −1<br />

Existe uma família <strong>de</strong> algoritmos <strong>de</strong> busca heurística aplicáveis a <strong>problema</strong>s<br />

que admitem uma representação por grafos <strong>de</strong> espaço <strong>de</strong> estados com a<br />

característica <strong>de</strong> atribuição <strong>de</strong> ancestral irrevogável. O algoritmo “Best-First”<br />

(BF) é o mais simples <strong>de</strong>stes algoritmos, o que não significa que não tenha a<br />

capacida<strong>de</strong> <strong>de</strong> reduzir significativamente o espaço <strong>de</strong> busca. A utilização <strong>de</strong><br />

Apêndice B 201

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!