Prev Up Next
Go backward to Trabalho 15 - 27 de Outubro a 21 de Novembro
Go up to Top
Go forward to Trabalho 19 - 22 de Novembro a 11 de Dezembro

Trabalho 16 - 27 de Outubro a 21 de Novembro

Número do trabalho 16
Período de aceitação: 27 de Outubro a 21 de Novembro

Os dados do programa que vai implementar são sequências como a seguinte ABC->DF cujo significado é: numa determinada base de dados o conhecimento dos campos A, BC permite determinar os campos DF. Por exemplo, sejam os seguintes campos: A (dAta de nascimento), I (idade), D (Data actual), B (número do BI), N (nome) e M (Morada). Temos (entre outras) as seguintes dependências funcionais (DFs)

   AD->I       (Data de nascimento e data de hoje -> Idade da pessoa)
   B->NMA      (Bilhete de identidade -> Nome, morada e data de nascimento)
   BD->I       (Bilhete de identidade e data de hoje -> Idade da pessoa)
A última DF é desnecessária porque a partir das duas primeiras conclui-se em particular que os valores de B e de D fixam o valor de I (porquê?).

Implemente um programa que leia um conjunto de DFs e imprima o número de ordem (a primeira DF tem o número 1) de todas as DFs que são supérfluas no sentido acima indicado. Se nenhuma BF for supérflua, o programa deve imprimir 0; para o exemplo atrás apresentado o resultado deve ser 3.
Note que se 2 ou mais DFs são supérfluas só se pode em princípio retirar uma delas "de cada vez". por exemplo em A->B, B->C, C->B, D->C, A->DD->A, as DFs A->BD->C são supérfluas mas não podem ser ambas retiradas.

As DFs são dadas da seguinte forma: número de DFs na linha 1, uma DF por linha (sem espaços e utilizando a separação ->, como indicado atrás). O resultado é uma sequência crescente de inteiros; cada inteiro indica o número de ordem (a começar por 1) de todas as DFs que são supérfluas.

Notas (i) Cada campo é uma letra maiúscula, (ii) Uma letra nunca aparece am ambos os lados de uma DF (dependências triviais).


Exemplo Dados

   5
   A->B
   B->C
   A->C
   BC->D
   A->D
Resultado (como se disse, tem que ser por ordem crescente)
   3
   5
Número máximo de dependências: 20
Número máximo de campos: 26 (um por letra maiúscula)
Prev Up Next