Algoritimo A Estrela(A*)

O trabalho consiste na implementação de um agente capaz de guiar um rato através de um labirinto utilizando o Algoritmo busca heurística A* para planejar o caminho.

O rato percorre o labirinto em busca da saída, e no decorrer do caminho encontra e come alguns pedaços de queijo. O rato anda somente uma casa por vez, podendo se deslocar somente à direita, esquerda, para cima e para baixo, nunca na diagonal, desde que não tenha parede no caminho. O labirinto é codi cado como uma matriz bidimensional de caracteres, na qual, as casas (células da matriz) livres são marcadas com o caractere '.' (ponto nal), as paredes, com o caractere '#' (cerquilha), a posição de saída com o caractere 'S' (maiúsculo), as posições com queijo com o caractere 'Q' (maiúsculo), a posição inicial do rato, é indicada pelo caractere 'R' (maiúsculo). O labirinto deve ser todo cercado por paredes (caractere '#'), exceto na saída ('S').

Os labirintos serão armazenados em arquivos de extensão .txt e podem ter tamanhos diferentes. Esses arquivos, quando lidos, devem ser armazenados em matrizes. Cada arquivo representa somente um labirinto e está estrutudado da seguinte forma: a primeira linha do arquivo é composta de dois números que contém a quantidade de colunas e de linhas da matriz, respectivamente; as linhas seguintes representam os elementos que de nem o labirinto.

Observação: o caractere de terminação de linha '\n' deve ser ignorado.

A seguir são apresentados dois exemplos de arquivos de entrada:

5 5

##### 
#R.Q# 
###.# 
SQ.Q# 
#####

40 13

########################################
#R..............Q...........#...#......#
#.#.#.#.#.##.#.#.######.#.#...#.#.#.##.#
#.#.#####.##.#.#......#.#.#.#..........S
#.#...#.#.####.#.####.......##.#.#.###.#
#.######.....##.#......####.##.#.#.#.#.#
#.############.#.##########.##.#.###.#.#
#.#............Q..........#.....Q......#
#.##.##.#.#.#.#.#.#.#.#.#.#.###.#.#.##.#
#.#...#...#....#....#.....#.#.#...#.##.#
#.#.#######################.#.###.####.#
#.............#Q......#.....#..........#
########################################

O presente trabalho tem valor de 20 pontos na média final.

O que deve ser feito:

• Implementar um programa em uma linguagem de programação a escolha do grupo, capaz de fazer um rato percorrer um labirinto e encontrar a saída;

• O programa deve possibilitar o carregamento do arquivo de texto que de ne um labirinto, mesmo que seja por linha de comando;

• As seguintes informações devem ser apresentadas ao nal da execução: número de passos feitos durante a busca pela saída coordenadas percorridas até a saída (xi, yi)

• Quantidade de queijos encontrados no percurso.

• Exemplo de saída após execução do primeiro exemplo de entrada:

7 passos no total 11
12
13
23
33
32
31
3 queijos encontrados

• Informações importantes:

O agente obrigatoriamente deve utilizar o algoritmo de busca especi cado para encontrar o caminho para chegar a saída;

Deve existir uma maneira de visualizar os movimentos do agente, mesmo que a interface seja bem simples. Podendo até mesmo ser uma matriz desenhada e atualizada no console;

O trabalho pode ser desenvolvido individualmente, ou em grupos de até 3 pessoas;

Se necessário, será feita a prova de autoria, na qual os membros do grupo serão questionados individualmente acerca da implementação.

Se for detectado que um aluno não contribuiu para o desenvolvimento do trabalho, este sofrerá penalização na nota nal.

Juntamente com o trabalho, deverão ser entregues todos os arquivos necessários, tais como bibliotecas não nativas, para que o projeto seja executado. Deverá ser especi cado em arquivo adicional (a ser entregue junto com os códigos-fonte) os requisitos para execução do trabalho: Sistema Operacional, versão de interpretador ou compilador utilizado, versões das bibliotecas, e quaisquer outros fatores que possam prejudicar na execução do trabalho, como ocorrido no ambiente de desenvolvimento. Forma de avaliação

• O trabalho será avaliado a partir dos seguintes itens:

O trabalho atendeu a todos os requisitos especi cados anteriormente;

O algoritmo de busca foi implementado de forma correta;

O código foi devidamente organizado e comentado;

• Bônus:

A interface grá ca não é objetivo deste trabalho, porém os grupos que implementarem uma boa interface grá ca seja ela 2D ou 3D para representar o ambiente e as movimentações do agente, receberão até 10 pontos extras na nota.

Disposições Finais

• A entrega deverá ser realizada via Ambiente Moodle, até o dia 07/05/2017 às 23:59 em tarefa especí ca;

• Comece a fazer este trabalho logo, enquanto o prazo para terminá-lo está tão longe quanto jamais poderá estar.

• Clareza, indentação e comentários no programa tambám vão valer nota.

• Trabalhos copiados serão penalizados com a nota zero.

• As apresentações, quando necessárias, serão agendadas pelo professor individualmente com cada aluno.

• Serão aceitos trabalhos atrasados, com penalização de 20% da nota nal para cada dia de atraso, ou seja, após cinco dias, o grupo terá nota ZERO atribuída.