Inauguração oficial do site:
18/12/2010
-->
09/01/2011
Labirinto do Rato Cego
O Labirinto do Rato Cego é uma atividade em que o objetivo é desenvolver um programa de computador que simula as decisões de um agente inteligente “cego” para sair de um labirinto.
O desafio sempre acontece em duelos e o vencedor é aquele que sair do labirinto em menor tempo. O objetivo educacional é incentivar a confecção de programas mais interessantes e estimular a curiosidade dos estudantes para a área de Inteligência Artificial.
Mas, antes de falarmos sobre o desafio do Rato Cego, considere a seguinte questão:
Se você acordasse em um labirinto, sem sua visão, conseguiria encontrar a saída?
Com seu tato perceberia em quais direções poderia seguir. Com sua memória, lembraria de alguns caminhos que ainda não explorou.
Mesmo assim, a pergunta permanece:
você conseguiria?
O desafio é fazer um programa de computador que saia do labirinto. Nós chamamos esse programa de
Rato Cego
ou, simplesmente,
rato.
Seu rato irá se comunicar com outro programa (labirinto) que dará as direções que ele pode seguir em cada ponto-chave do labirinto. No exemplo da figura abaixo, temos 14 pontos-chave.
O ponto-chave verde indica o início e o vermelho determina o final do labirinto.
A comunicação entre o rato e o labirinto se dá por meio de arquivos de textos, ou seja, o labirinto escreve em um arquivo (saída.txt) as informações de um ponto-chave e o rato escreve em outro arquivo (entrada.txt) qual sua decisão.
O Labirinto em Ação
Para executar o Labirinto do Rato Cego no seu computador serão necessários os arquivos seguintes:
batalha.swf
blind.swf
labirinto_batalha.exe
rato_x.exe
Esses arquivos foram compactados no rato.rar para facilitar o download. Também foi adicionado o código-fonte do rato (rato_x.cpp) para você modificar depois e tentar construir outro mais inteligente.
Baixe aqui os arquivos necessários (rato.rar)
Extraia os arquivos do rato.zip em uma pasta isolada de seu computador para enterder melhor o processo e futuramente criar seus próprios ratos.
Para iniciar, execute o labirinto_batalha.exe (é ele que gera o labirinto e se comunica com os ratos).
Escolha o labirinto 1 para começar. Veja as telas:



Esse programa irá criar alguns arquivos de texto para se comunicar com os ratos e então ficará esperando uma resposta (dos ratos). Sendo assim, é hora de executar os ratos!
Então rode o programa rato_x.exe (responsável por responder as solicitações que estão naqueles arquivos de texto criados pelo labirinto). Quando rodar o rato_x.exe, ele irá perguntar se é o rato 1 ou o 2 (lembre-se de que é um duelo). Escolha 1 (na verdade, não tem importância se é o 1 ou o 2, mas, podemos discutir isso em outra ocasião).


Quando o rato sair do labirinto, ele irá automaticamente fechar. Mas, o labirinto ainda estará rodando, pois, ele está esperando o segundo rato sair.
Então rode o segundo rato. Como? Basta que execute novamente o rato_x.exe e escolha a opção 2. Faça isso!
Depois que os dois ratos saírem do labirinto (ou ultrapassarem o limite de movimentos), o labirinto automaticamente irá se fechar. É hora de visualizar o que aconteceu e aí entra o batalha.swf que deve ser aberto em um navegador com Flash Player instalado.
Para isso, abra o navegador e arraste o batalha.swf para lá. Ele poderá dar a famosa mensagem de que a página está tentando executar scripts ou ActiveX, então escolha "Permitir conteúdo bloqueado".
Escolha um nome para os ratos e clique em "play". Ele irá abrir uma tela com os labirintos, clique em "play" e veja os ratos saindo do labirinto.


Rode o Labirinto Outras Vezes
Agora que você já rodou uma vez o labirinto, pode executar mais vezes seguindo a mesma sequência:
1. labirinto_batalha.exe (escolha novos labirintos: 6, 7, 8 e 9 são os mais interessantes)
2. rato_x.exe
3. rato_x.exe
Depois, se já estiver com o batalha.swf no seu navegador, basta clicar no segundo botão do menu de navegação ("reload") que carrega os dados do novo labirinto. Clique em "play"!
Antes de iniciar a batalha (mais indicado), ou no meio da batalha, você pode alterar a velocidade dos ratos clicando no terceiro botão ("turbo") do menu de navegação do batalha.swf.
Faça o seu Próprio Rato
Você irá perceber que o rato_x não é muito inteligente. Na verdade, ele sorteia a direção que deve seguir em cada ponto-chave.
Fica então o primeiro desafio para você: Modificar o arquivo rato_x.cpp e fazer um rato que lembre o último movimento e utilize para ter uma escolha de caminho mais inteligente.
Contudo, para modificar o arquivo, é necessário entender como é a arquitetura dos arquivos de comunicação do rato com o labirinto. Sendo assim, clique no link abaixo para baixar os arquivos:
Baixe aqui a arquitetura dos arquivos de comunicação (comunicacao.pdf)
Depois, melhore seu rato para ganhar do
Merquetref, desenvolvido em dois dias pelos alunos da UnB no Labirinto do Rato Cego que aconteceu no II Encontro de Ciência e Tecnologia do Gama.
Baixe aqui o rato Merquetref (merquetref.rar)
Salve seus arquivos com nomes diferentes para poder comparar depois com o rato_x, ok?
Nós, professores da UnB/FGA, estamos preparando novos desafios para vocês dentro da mesma linha do Labirinto do Rato Cego (inserindo novos elementos) e gostaríamos que divulgassem seus códigos aqui!
Para os professores de outra Instituição, fiquem à vontade para utilizarem o Rato Cego como projeto final de suas aulas na área de computação ou dentro de seus eventos.

Contato: Prof. Ricardo Fragelli (fragelli@unb.br)
|