Aumentamos agora o exemplo, com mais 3 movimentos, de forma a obter um
problema mais complicado:
|
|
esquerda |
|
cima |
|
direita |
|
| cima |
|
esquerda |
|
baixo |
|
A procura A* (AStar)
vai expandir primeiro os estados mais promissores antes dos menos promissores,
independentemente do nível em que estão. Para cada estado contará não só o
valor da função heurística, como no método melhor primeiro, mas também o custo
desde o estado inicial, de forma a ter uma estimativa global. Ao contrário do
melhor primeiro, o AStar vai escolher de entre todos os estados gerados mas
não expandidos o melhor (e não apenas entre os últimos que tivessem o mesmo
pai), daí a necessidade de incorporar o custo, enquanto que no melhor primeiro
não é necessário no caso de se assumir o custo unitário de passagem de um
estado para ou outro.
Pode-se fazer um paralelo deste
algoritmo com a procura em largura, mas em vez de expandir o estado mais
antigo, vai expandir o estado mais promissor, de entre todos os
disponíveis. De forma a manter o nome das colunas entre algoritmos informados,
o nível é utilizado para o custo, pelo que AStar vai expandir o que tiver
menor heurística+nível.
|
Geração
|
Estado
|
Heurística
|
Nível
|
Pai
|
Expansão
|
1 |
|
6 |
0 |
0 |
1 |
2 |
|
5 |
1 |
1 |
2 |
3 |
|
7 |
1 |
1 |
|
4 |
|
7 |
1 |
1 |
|
5 |
|
5 |
1 |
1 |
3 |
6 |
|
6 |
2 |
2 |
|
7 |
|
4 |
2 |
2 |
4 |
8 |
|
6 |
2 |
5 |
|
9 |
|
4 |
2 |
5 |
5 |
10 |
|
3 |
3 |
7 |
6 |
11 |
|
5 |
3 |
9 |
|
12 |
|
2 |
4 |
10 |
7 |
13 |
|
4 |
4 |
10 |
|
14 |
|
3 |
5 |
12 |
|
15 |
|
3 |
5 |
12 |
|
16 |
|
1 |
5 |
12 |
8 |
17 |
|
2 |
6 |
16 |
|
18 |
|
0 Solução! |
6 |
16 |
|
Ficheiro de Excel, passo a passo:
Neste exemplo maior, o AStar obtém a solução com 18 gerações/avaliações e 8
expansões, considerando que o teste de estado objetivo é realizado na função
heurística ao avaliar o estado.
É nítido neste exemplo que houve
expansões que não levaram a nada, como o estado 5, e eventualmente um ser
humano não a escolheria, no entanto a informação heurística não permitiu
qualquer distinção entre este estado e o estado 2, por exemplo. Com uma
heurística mais evoluída poder-se-ia concluir que esse estado nunca poderia
chegar à solução objetivo no número de movimentos igual à distância de
Manhattan, e aumentar o valor da função heurística, mas pode bem acontecer que
o benefício não compense o tempo gasto a calcular uma heurística mais
complexa. Repare-se que só houve 2 expansões que eram desnecessárias, em 8
expansões realizadas, portanto a heurística para um problema desta dificuldade
é bastante adequada.
⚡ Ação: Sem
resolver novamente o problema, utilizando os estados gerados pelo AStar,
indique qual a ordem dos estados que o algoritmo melhor primeiro iria
expandir, e parando quando o algoritmo melhor primeiro for expandir um estado
que o AStar não expandiu (incluindo esse estado). Em caso de empate, o melhor
primeiro escolhe o último estado gerado, enquanto que o AStar escolhe o
primeiro.
Resposta: 1,5,9,11
O melhor primeiro iria para um
caminho que não leva a lado nenhum, e poderia mesmo entrar em ciclo. Para
ultrapassar este problema, tem que se colocar um limite de profundidade, e/ou
não gerar estados já gerados.