Projecto de Algoritmos e Estruturas de Dados Licenciatura em Engenharia Electrotécnica e de Computadores Licenciatura em Engenharia Electrónica 1 o ano, 2 o Semestre, 2005/2006 Instituto Superior Técnico Universidade Técnica de Lisboa corpo docente de
Descrição do Projecto Projecto de - Objectivo é movimentar viaturas dentro de um tabuleiro de forma a conduzir a viatura do jogador à saída a o e p x q r c g h corpo docente de
Descrição do Projecto Tabuleiro é um quadriculado de 6 6 posições Há viaturas de comprimento 2 e 3 Movimento das viaturas obedece a regras simples: apenas se pode mover na linha ou na coluna onde está colocada (e só numa delas); nunca pode colidir com o posicionamento de outra viatura; apenas se pode deslocar de uma posição; Saída é única, à direita na 3 a linha corpo docente de
Dado uma descrição do tabuleiro que inclui, para cada viatura: o seu posicionamento a sua direcção (vertical ou horizontal) o seu comprimento (2 ou 3) se é a viatura do jogador pretende-se movimentar as viaturas de forma a permitir que a do jogador chegue à saída Número de movimentos deve ser o menor possível corpo docente de
a o e p x q r c g h corpo docente de
p a o e x q r c g h corpo docente de
a p e x r c g h q o corpo docente de
Como encontrar a solução do puzzle? Em cada momento há múltiplas jogadas possíveis quantas? como saber quais são? qual é a melhor? Durante o jogo: devemos evitar passar por configurações idênticas? como saber quais são? Como detectar quando o jogo terminou? corpo docente de
Como encontrar a solução do puzzle? corpo docente de
uma solução possível seria representar as várias configurações possíveis que têm origem no movimento das viaturas. através de uma árvore podem-se representar-se essas várias configurações possíveis e apenas é necessário procurar uma solução. reduziu-se o problema a um problema de procura numa abordagem deste tipo torna-se por vezes necessário efectuar uma avaliação de cada configuração corpo docente de
: Jogo de Engarrafamento corpo docente de
: Árvore de Configurações corpo docente de
: Árvore de Configurações corpo docente de
: Árvore de Configurações corpo docente de
: Árvore de Configurações corpo docente de
: Árvore de Configurações corpo docente de
: Árvore de Configurações corpo docente de
: Árvore de Configurações corpo docente de
: Árvore de Configurações corpo docente de
: Árvore de Configurações corpo docente de
: Árvore de Configurações corpo docente de
: Árvore de Configurações corpo docente de
Largura e profundidade da árvore são dependentes do problema árvore pode crescer muito. sobretudo se não se detectarem configurações iguais (que não vale a pena avaliar/expandir múltiplas vezes). para muitos problemas não seria possível ter a árvore toda em memória nesse caso teria de se parar a expansão e tomar uma decisão qual a função de avaliação (também conhecida por heurística) que se deve utilizar? corpo docente de
Se detectarmos sempre que são geradas configurações repetidas: crescimento da árvore é controlado. é possível gerar toda a árvore (mas pode não ser preciso). eficiência do jogador aumenta Detecção de configurações idênticas deve ser rápida não pode ser feito por comparação com todas as anteriormente vistas. solução é Hashing das configurações! corpo docente de
Como abordar o problema? Quais as estruturas de dados a utilizar? Quais os algoritmos mais eficientes? Solução encontrada Complexidade temporal e de memória É acerca destes tópicos que o projecto será avaliado. corpo docente de
O ficheiro que contém a descrição do tabuleiro é do tipo: 10 2 0 0 1 0 2 a 0 2 1 0 2 b 0 4 1 0 2 c 5 0 1 0 3 o 5 3 1 0 3 r 1 0 1 0 2 d 1 2 1 0 2 e 1 4 1 0 2 f 2 0 1 1 2 x 2 2 0 0 2 g 2 3 0 0 2 h 3 4 1 0 2 k... Comentarios... Primeira linha diz quantas viaturas estão presentes. Cada linha seguinte descreve uma viatura. a d x o b c e g h r f k corpo docente de
Para gerar o ficheiro de saída é obrigatório utilizar a função escreve saida() fornecida pelo corpo docente. Cada chamada a esta função indica um movimento de uma dada peça num dado sentido a d x b e c f g h k Solução do tabuleiro à esquerda é: gd1 xr1 hd1 xr1 xr1 xr1 Solução não é única! o r corpo docente de
- Interface Gráfica O corpo docente disponibiliza um programa que permite a visualização gráfica da solução gerada por cada grupo (e logo a sua verificação). O programa permite também que o utilizador jogue o jogo do Engarrafamento (existe um conjunto de tabuleiros pré-definidos. Descrição da sintaxe do programa: $./verify [file.des file.mov [-i]] argumentos são o ficheiro de descrição, o output do jogador e (opcional) uma opção para ver a evolução dos movimentos interactivamente. corpo docente de
Descrição do Projecto Data de entrega do pré-relatório: na semana de 22 a 26 de Maio na aula de laboratório ou em horário a combinar com o docente de laboratório. Data de entrega do trabalho: 9 Junho, 6 a feira, às 10h, pretende-se relatório final em papel e respectivo software em diskette ou CD. programas que não compilem nos computadores do laboratório não serão aceites o relatório é uma componente muito importante da avaliação Espera-se que os alunos cumpram o código de honestidade académica corpo docente de