A transformação numérica quando aplicada sobre um objeto
geométrico, devolve uma lista de escalares
que representam este objeto. Na maioria dos casos esta transformação é simples como apresentado
na seção , porém alguns objetos, como o polígono, necessitam
além da transformação numérica, a ordenação dos pontos que o representam. Com esta lista de
escalares podemos fazer a comparação entre objetos. Assim, para analisar duas construções, o
gabarito
do professor e a solução
do aluno, transformamos os objetos
marcados como resposta em listas de escalares para então fazer a avaliação, como esquematizado
na Figura
.
A análise é feita em duas etapas. A primeira etapa consiste no mapeamento entre as listas e
a segunda na comparação delas através do critério de distância. A razão da primeira etapa é
permitir que o aluno tenha a liberdade de fazer a marcação dos objetos-resposta em qualquer ordem.
Por exemplo, caso a solução do professor seja representada pelos pontos e
e a
do aluno pelos pontos
e
, a etapa de mapeamento identificará se o ponto
corresponde
a
ou a
, fazendo o mesmo para
.
O mapeamento7 dos
objetos de e
é realizado comparando-se cada elemento
de
com todos os elementos de
que pertençam a mesma família de
e
minimizando a distância entre eles. Assim, um objeto de
será mapeado em um objeto
de
se ambos pertencerem à mesma família de objetos geométricos, ainda não foram mapeados
e a distância entre
eles for a menor possível em relação aos outros objetos de
. Este mapeamento é feito
apenas para a primeira instância (a configuração inicial do enunciado do exercício).
A segunda etapa da avaliação consiste na comparação entre os pares de objetos geométricos
mapeados (
). Nesta comparação, utilizamos uma versão relaxada do
conceito de equivalência expresso na definição
(seção
),
para levar em consideração as imprecisões numéricas ao se empregar
diferentes soluções. Assim, adotamos uma margem de erro
.
De modo simplificado apresentamos o psedo-código do validador na tabela .
As linhas 1 a 12 são referentes ao mapeamento dos objetos e as linhas 13 a 19 são referentes
a análise (verificando se cada menor distância entre pares de objetos de mesmo tipo é
menor do que a tolerância de erro
).
1 . Recebe duas listas ![]() ![]() |
2 . Crie uma nova lista de objetos geométricos ![]() ![]() ![]() |
3 . Para cada elemento ![]() ![]() |
4 . MenorDistanciaEncontrada ![]() ![]() |
5 . ObjetoCorrespondente ![]() ![]() |
6 . Para cada elemento ![]() ![]() |
7 . Se ![]() ![]() |
8 . Se dist(
![]() |
9 . ObjetoCorrespodente ![]() ![]() |
10. MenorDistanciaEncontrada ![]() ![]() |
11. Se ObjetoCorrespondente = ![]() |
12. Devolva Falso |
13. Senão |
14. ![]() ![]() ![]() ![]() |
15. Remove ObjetoCorrespondente de ![]() |
16. Para cada elemento ![]() ![]() |
17. Seja ![]() ![]() |
18. Se dist(
![]() ![]() |
19. Remova ![]() ![]() |
20. Senão |
21. Devolva Falso |
22. Devolva Verdadeiro |
Note que esta parte do algoritmo trata apenas uma instância da solução, considerando
uma posição fixa para cada objeto de entrada. Se utilizarmos apenas esta validação da configuração
inicial, pode ocorrer, com freqüencia, erros de falso positivo. Por exemplo, no problema
do ponto médio o aluno
poderia tentar colocar um ponto ``solto'' sobre o segmento e movê-lo de modo a ficar
próximo à posição do ponto médio, sem efetuar uma construção geométrica válida. Apesar de ser
difícil posicionar o ponto de modo que o algoritmo avalie a solução como correta, é possível
conseguir isso (este erro aparece no algoritmo avaliador do C.a.R.). Outro exemplo que ilustra este
erro de falso positivo é apresentado no problema
.
Para resolver este problema são apresentadas duas soluções (Figura
Seiji Isotani 2006-10-04