Class BesPermutation

java.lang.Object
edu.cmu.tetrad.search.utils.BesPermutation

public class BesPermutation extends Object

Implements a version of the BES (Best Equivalent Search) algorithm that takes a permutation as input and yields a permtuation as output, where the related DAG or CPDAG models are implied by the ordering or variables in these permutations. BES is the second step of the GES algorithm (e.g., FGES). The first step in GES starts with an empty graph and adds edges (with corresponding reorientations of edges), yielding a Markov model. The second step, this one, BES, starts with this Markov model and then tries to remove edges from it (with corresponding reorientation) to improve the BES scores.

The advantage of doing this is that BES can then be used as a step in certain permutation-based algorithms like BOSS to allow correct models to be inferred under the assumption of faithfulness.

Author:
bryanandrews, josephramsey
See Also:
  • Constructor Details

    • BesPermutation

      public BesPermutation(@NotNull @NotNull Score score)
      Constructor.
      Parameters:
      score - The score that BES (from FGES) will use.
  • Method Details

    • getVariables

      @NotNull public @NotNull List<Node> getVariables()
      Returns the variables.
      Returns:
      This list.
    • setVerbose

      public void setVerbose(boolean verbose)
      Sets whether verbose output should be printed.
      Parameters:
      verbose - True, if so.
    • bes

      public void bes(Graph graph, List<Node> order, List<Node> suborder)
      Runs BES.
      Parameters:
      graph - The graph.
      order - The order.
      suborder - The suborder.
    • getKnowledge

      public Knowledge getKnowledge()
    • setKnowledge

      public void setKnowledge(Knowledge knowledge)
      Sets the knowledge that BES will use.
      Parameters:
      knowledge - This knowledge.