As it stands now, BoundedSIDepSolver is coupled with the dependencies order (thus its name is DepSolver) and also is hard to modify. We should make it easier to test new things. For example, we could have the following virtual functions:
getAvailableDependencies(): give us the next possible dependencies;
next(Nodes): considers the dependencies after the Nodes (as if we had already satisfied it);
selectChildren(Children, Max): selects the children until Max;
selectPartialSolutions(PartialSolutions, Max): selects the desired partial solutions until Max;
getSwapsEstimation(Last, Current): returns a swap estimation for turning Last into Current mapping;
generateCombinations(BSILayers): generates the desired combinations to be evaluated by the ApproxTSPFinder algorithm.
That's some of the functions that we may need for solving and tweaking with this method.
As it stands now,
BoundedSIDepSolver
is coupled with the dependencies order (thus its name isDepSolver
) and also is hard to modify. We should make it easier to test new things. For example, we could have the followingvirtual
functions:getAvailableDependencies()
: give us the next possible dependencies;next(Nodes)
: considers the dependencies after theNodes
(as if we had already satisfied it);selectChildren(Children, Max)
: selects the children untilMax
;selectPartialSolutions(PartialSolutions, Max)
: selects the desired partial solutions untilMax
;getSwapsEstimation(Last, Current)
: returns a swap estimation for turningLast
intoCurrent
mapping;generateCombinations(BSILayers)
: generates the desired combinations to be evaluated by theApproxTSPFinder
algorithm.That's some of the functions that we may need for solving and tweaking with this method.