void linearDiff(LearnerGraphND from, LearnerGraphND to, Set<Transition> expectedMutations, ExperimentResult outcome)
{
GD<List<CmpVertex>,List<CmpVertex>,LearnerGraphNDCachedData,LearnerGraphNDCachedData> gd = new GD<List<CmpVertex>,List<CmpVertex>,LearnerGraphNDCachedData,LearnerGraphNDCachedData>();
ChangesCounter<List<CmpVertex>,List<CmpVertex>,LearnerGraphNDCachedData,LearnerGraphNDCachedData> rec3 = new ChangesCounter<List<CmpVertex>,List<CmpVertex>,LearnerGraphNDCachedData,LearnerGraphNDCachedData>(from,to,null);
ChangesRecorderAsCollectionOfTransitions cd = new ChangesRecorderAsCollectionOfTransitions(rec3,false);
final long startTime = System.nanoTime();
gd.computeGD(from, to, ExperimentRunner.getCpuNumber(), cd, config);
final long endTime = System.nanoTime();
//displayDiff(from,to);
outcome.setValue(LONG_V.DURATION_GD,endTime - startTime);
Set<Transition> detectedDiff = cd.getDiff();
outcome.experimentValid=true;outcome.setValue(DOUBLE_V.MUTATIONS_TO_TRANSITIONS,((double)expectedMutations.size())/from.pathroutines.countEdges());
Map<CmpVertex,CmpVertex> keyPairs = gd.getKeyPairs();int mismatchedKeyPairs=0;
for(Entry<CmpVertex,CmpVertex> pair:keyPairs.entrySet())
if (!pair.getKey().getID().toString().equals("o"+pair.getValue().getID().toString()) && !pair.getValue().getID().toString().startsWith("added"))