Métodos de Programação III
Trabalho Prático Nº 1

(estruturas de dados não lineares)
21 de Outubro de 1998


  

1 Objectivos e Organização
 

Este trabalho prático tem como objectivos levar os alunos, através da resolução de problemas reais, a:

Para o efeito, esta folha contém quatro enunciados, dos quais deverá resolver um.

Quanto ao relatório a elaborar, para entregar na altura da apresentação do trabalho, deve ser claro e sucinto e, além do enunciado, deverá conter exemplos de utilização com os respectivos resultados.  O relatório deverá indicar claramente a representação interna escolhida para o grafo.
 

2 Enunciados
 

Questao 1 (Palavras) 

Um passatempo engraçado consiste em verificar se é possível transformar 2 palavras dadas, com o mesmo omprimento, mudando em cada passo 1 só caracter mas passando sempre por palavras válidas, isto é, existentes num dicionário da lingua em causa.

Por exemplo, "bom" pode transformar-se em "mal" através da seguinte sequencia de passos: "som", "sol", "sal".

Pretende-se que desenvolva um programa para verificar se, dadas 2 palavras, a primeira \emph{é transformável} na segunda, de acordo com o critério de conversão em passos sucessivos, acima enunciado.  Caso a transformação seja possível, o seu programa deve imprimir a lista de palavras em causa.

Para isso o seu programa deve começar por ler um dicionário ---conjunto de palavras válidas--- e  guardá-lo na forma de um grafo, considerando que 2 palavras são adjacentes se tiverem o mesmo comprimento e diferirem apenas em 1 caracter.
 
 


Questao 2 (Orientação)

Um dos objectivos das provas de orientação é percorrer no mínimo tempo uma determinada região (montanhosa, ou mista) passando por todas as balizas colocadas em vários pontos dessa região e assinalados na respectiva carta geográfica.
 
Assuma que lhe são fornecidas todas as balizas, univocamente identificadas por um código alfanumérico, e a distancia entre as balizas vizinhas (aquelas entre as quais há passagem directa).

Desenvolva, então, um programa baseado na teoria dos grafos, que seja  capaz de lhe indicar o caminho mais curto entre 2 balizas dadas.
 



 

Questao 3 (Labirinto)

Um labirinto pode ser pensado como um tabuleiro de xadrez rectangular  ---uma matriz de `n' linhas por `m' colunas--- em que se definem os pares de quadrículas ("casas" do tabuleiro, ou componentes da matriz)  entre as quais há uma passagem directa.  As quadrículas serão identificadas pelas suas coordenadas (numeros de linha e de coluna).

Modelando o labirinto através dum grafo não-orientado e não-pesado, desenvolva um programa que seja capaz de calcular todos os caminhos entre 2 quadrículas dadas.
 


Questao 4 (Disciplinas)

Para se obter um determinado grau de formação profissional numa área de conhecimento foram organizados cursos constituidos por módulos, ou unidades de ensino.  Algumas dessas unidades fornecem as bases de conhecimento necessárias para o estudo de outras unidades.  Assim, a ordem, pela qual os módulos referidos podem ser estudados, não é totalmente livre, ou arbitrária.
 

Usando a teoria dos grafos, desenvolva um programa que, após ler o nome das unidades de ensino e as precedencias entre elas, seja capaz de:



Aqui podem encontrar a versão postscript do enunciado do trabalho prático.