package solve
 Alphabetic
 By Inheritance
 solve
 AnyRef
 Any
 Hide All
 Show All
 Public
 All
Type Members

class
ConstantStrategy
extends RaisingStrategy
A solving strategy that applies the same solver and raising criteria to every problem, including nested problems.

type
RaisingCriteria = (NestedProblem[_]) ⇒ Boolean
A raising criteria is a decision function that chooses whether or not to eliminate variables at the level of this nested problem, or to raise factors to the next higher problem.
A raising criteria is a decision function that chooses whether or not to eliminate variables at the level of this nested problem, or to raise factors to the next higher problem. Returns true if the factors should be raised, or false if a solver should perform elimination.

abstract
class
RaisingStrategy
extends SolvingStrategy
A solving strategy that handles subproblems.
A solving strategy that handles subproblems. It either recursively raises subproblems, or solves them and raises their solutions.

abstract
class
SolvingStrategy
extends AnyRef
A solving strategy solves an inference problem after a series of refinements have been made.
A solving strategy solves an inference problem after a series of refinements have been made. This can involve solving subproblems and collecting their factors, but this class does not account for subproblems by default. Executing the strategy then eliminates variables that do not belong in the solution.
By default, solving strategies do not use parameterized factors, but subclasses can override this.

class
VEBPGibbsStrategy
extends RaisingStrategy
A solving strategy that chooses between VE, BP, and Gibbs based on a score of the elminiation order and determinism

class
VEBPStrategy
extends RaisingStrategy
A solving strategy that chooses between VE and BP based on a score of the elminiation order

class
VEGibbsStrategy
extends RaisingStrategy
A solving strategy that chooses between VE and Gibbs based on a score of the elminiation order
Value Members

def
flatRaising(problem: NestedProblem[_]): Boolean
Always raises a nested problem.
Always raises a nested problem. This has the effect of "flattening" because all factors of problems strictly contained in the toplevel problem are raised.

def
raiseIfGlobal(problem: NestedProblem[_]): Boolean
Raises a nested problem if any of its components are global.

def
structuredRaising(problem: NestedProblem[_]): Boolean
Never raises a nested problem without solving it.