From dd52d1ddd7e85fb14c8f5ccf61a0bfd5496998e6 Mon Sep 17 00:00:00 2001 From: OszkarSemerath Date: Fri, 27 Oct 2017 17:48:20 +0200 Subject: neighbourhood calculated to fix range --- ...nterpretation2NeighbourhoodRepresentation.xtend | 44 +++++++++++++++++++++- 1 file changed, 42 insertions(+), 2 deletions(-) (limited to 'Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf') diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/neighbourhood/PartialInterpretation2NeighbourhoodRepresentation.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/neighbourhood/PartialInterpretation2NeighbourhoodRepresentation.xtend index df6fb6ae..936f2117 100644 --- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/neighbourhood/PartialInterpretation2NeighbourhoodRepresentation.xtend +++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/neighbourhood/PartialInterpretation2NeighbourhoodRepresentation.xtend @@ -24,6 +24,7 @@ abstract class PartialInterpretation2NeighbourhoodRepresentation> types, + Map>> IncomingRelations, + Map>> OutgoingRelations) + { + val elements = types.keySet + val Map> reachable = new HashMap + for(element : elements) { + val set = new HashSet + set.add(element) + reachable.put(element,set) + } + + var int width = 0 + var boolean newAdded + do { + newAdded = false + for(element : elements) { + val elementNeigbours = element.lookup(reachable) + val size = elementNeigbours.size + for(incoming : element.lookup(IncomingRelations)) { + elementNeigbours.addAll(incoming.from.lookup(reachable)) + } + for(outgoing : element.lookup(OutgoingRelations)) { + elementNeigbours.addAll(outgoing.to.lookup(reachable)) + } + newAdded = newAdded || (elementNeigbours.size > size) + } + + width +=1 + } while(newAdded) + return width + } /** * Creates a neighbourhood representation with traces @@ -107,6 +143,10 @@ abstract class PartialInterpretation2NeighbourhoodRepresentationmaxNumber){Integer.MAX_VALUE}else{1}) uniqueDescription.put(nodeDescriptor,nodeDescriptor) node2Representation.put(object,nodeDescriptor) } @@ -333,7 +373,7 @@ abstract class PartialInterpretation2NeighbourhoodRepresentationmaxNumber){Integer.MAX_VALUE}else{1}) } } else { node2Representation.put(element,newDescriptor) -- cgit v1.2.3-54-g00ecf