O PacMan gravitacional (PacManGrave) é uma pequena variação do Jogo do PacMan tradicional, que aqui é jogado num
cenário 10x3. O PacManGrave sempre que se move para uma casa com comida, esta é comida e desaparece. O objectivo
consiste em papar a comidinha toda. Os movimentos podem ser cima, baixo, direita e esquerda, sendo selecionados por
essa ordem. Os movimentos para cima são mais difíceis e têm um custo de 2, os movimentos horizontais para a esquerda e
para a direita custam o mesmo: 1, mas os movimentos para baixo não têm custo algum. É por isso que se chama PacMan
gravitacional.
Figura 6.1
Figura 6.2
Considerando como estado o conjunto formado pela posição do PacManGrave e número dos pedaços de comida por
comer, aplique os algoritmos seguintes para determinar uma solução para o problema, em que a situação inicial é a
indicada na Figura 6.1. Em cada alínea, indique de forma clara, justificando, o caminho encontrado até comer os 3
pedaços de comida. Pode fazê-lo com a indicação do percurso efectuado (através de uma única seta—veja o exemplo do
percurso óptimo na figura 6.2) ou apenas com a sequência de movimentos, usando as suas abreviaturas: c (cima), b (baixo),
d (direita) e e (esquerda). Assuma sempre que se evitam os ciclos e que os desempates são resolvidos pela ordem: c, b, d,
e. Note que o PacManGrave pode regressar a uma casa onde já esteve antes, mas só depois de ter comido mais alguma
coisa, senão estaremos perante um ciclo no percurso: é o caso do percurso óptimo na figura 6.2, que corresponde à
sequência de 13 movimentos ddddddebbdedd com custo 11. Pode utilizar as figuras com o estado inicial do jogo para
operações auxiliares e para desenhar o percurso final.
a) Procura em profundidade.
b) Trepa-colinas sem repetição de estados visitados tendo como heurística a distância de Manhatan até à comida mais
próxima + o número de pedaços de comida que falta comer menos um. Por exemplo, a função heurística para o estado
inicial (PacManGrave na posição (Linha=1,Coluna=1) e com 3 pedaços de comida por papar) dará 5 (distância ao pedaço
de comida mais próximo) + 3 (número de pedaços por comer) – 1, ou seja 7.
c) Tendo em conta a mesma heurística de b), existe a garantia que A* devolverá sempre o caminho óptimo, seja qual for o
estado inicial?
Download

O PacMan gravitacional (PacManGrave) é uma pequena variação