Como apontado anteriormente, consideramos que uma construção é uma função que recebe um conjunto de
objetos de entrada e devolve um conjunto de objetos resposta (representação ). Esta função
é considerada ambígua quando não é bijetora, ou seja, quando possuir mais de
um conjunto de resposta
para um mesmo conjunto de entrada. Na GD, isso pode ocorrer se for utilizado algum ponto ``solto''.
Um exemplo é apresentado no problema
.
Observe que este problema é intrinsecamente ambíguo, possuindo infinitas soluções, pois
o ponto pode localiza-se em qualquer
posição da reta mediatriz de
e
. Dessa forma, independentemente de
e
, o ponto
pode ser movido, modificando a resposta (Figura
).
|
Com o intuito de identificar este problema de ambiguidade implementamos um algoritmo que faz esta identificação
durante a construção do gabarito, avisando o usuário qual é o objeto que torna a construção
ambígua (no caso do problema acima seria o ponto ). Este aviso é muito útil para corrigir
possíveis distrações do professor durante a criação de um exercício.
Os programas C.a.R. e Cinderella, não possuem algoritmo semelhante.
Quando o professor faz a construção do gabarito e seleciona os objetos de entrada e de resposta, o algoritmo
de identificação de ambiguidade verifica se existe algum objeto-resposta dependente de algum
ponto que não pertence aos objetos de entrada e nem é determinado unicamente por eles.
Caso exista, verificamos ao movimentar este ponto
se a posição de algum objeto-resposta se altera.
No exemplo do triângulo
isósceles, caso um professor crie um gabarito selecionando os
pontos A e B como
entradas e os segmentos
como resposta, o algoritmo
identifica a ambiguidade
devolvendo uma mensagem ao professor avisando que o ponto
precisa ser selecionado como entrada para
remover a ambiguidade do gabarito.
Vale notar que um objeto-resposta que depende de um ponto ``solto'' não pertencente às entradas
do exercício, nem sempre
terá sua posição modificada quando o ponto ''solto'' é movido. Um exemplo é a construção
de um gabarito para o problema .
O gabarito para este problema pode ser visto na Figura
O algoritmo desenvolvido para detectar este caso utiliza parte do mecanismo da validação automática
apresentada na seção ,
fazendo a comparação entre a construção na configuração inicial, com a construção na configuração após
a movimentação dos objetos.