Class TeyssierScorerOpt

java.lang.Object
edu.cmu.tetrad.search.TeyssierScorerOpt

public class TeyssierScorerOpt extends Object
Implements a scorer extending Teyssier, M., and Koller, D. (2012). Ordering-based search: A simple and effective algorithm for learning Bayesian networks. arXiv preprint arXiv:1207.1429. You give it a score function and a variable ordering, and it computes the score. You can move any variable left or right, and it will keep track of the score using the Teyssier and Kohler method. You can move a variable to a new position, and you can bookmark a state and come back to it.
Author:
josephramsey, bryanandrews
  • Constructor Details

    • TeyssierScorerOpt

      public TeyssierScorerOpt(@NotNull @NotNull Score score)
  • Method Details

    • setKnowledge

      public void setKnowledge(Knowledge knowledge)
      Parameters:
      knowledge - Knowledge of forbidden edges.
    • score

      public float score(List<Node> order)
      Scores the given permutation. This needs to be done initially before any move or tuck operations are performed.
      Parameters:
      order - The permutation to score.
      Returns:
      The score of it.
    • score

      public float score()
      Returns:
      The score of the current permutation.
    • moveTo

      public void moveTo(Node v, int toIndex)
      Moves v to a new index.
      Parameters:
      v - The variable to move.
      toIndex - The index to move v to.
    • demote

      public void demote(Node v)
    • swap

      public boolean swap(Node m, Node n)
      Swaps m and n in the permutation.
      Parameters:
      m - The first variable.
      n - The second variable.
      Returns:
      True iff the swap was done.
    • getPi

      public List<Node> getPi()
      Returns:
      A copy of the current permutation.
    • index

      public int index(Node v)
      Return the index of v in the current permutation.
      Parameters:
      v - The variable.
      Returns:
      Its index.
    • getParents

      public Set<Node> getParents(int p)
      Returns the parents of the node at index p.
      Parameters:
      p - The index of the node.
      Returns:
      Its parents.
    • getParents

      public Set<Node> getParents(Node v)
      Returns the parents of a node v.
      Parameters:
      v - The variable.
      Returns:
      Its parents.
    • getAdjacentNodes

      public Set<Node> getAdjacentNodes(Node v)
      Returns the nodes adjacent to v.
      Parameters:
      v - The variable.
      Returns:
      Its adjacent nodes.
    • getGraph

      public Graph getGraph(boolean cpDag)
      Returns the DAG build for the current permutation, or its CPDAG.
      Parameters:
      cpDag - True iff the CPDAG should be returned, False if the DAG.
      Returns:
      This graph.
    • getAdjacencies

      public List<NodePair> getAdjacencies()
      Returns a list of adjacent node pairs in the current graph.
      Returns:
      This list.
    • getAncestors

      public Set<Node> getAncestors(Node node)
    • getEdges

      public List<OrderedPair<Node>> getEdges()
      Returns a list of edges for the current graph as a list of ordered pairs.
      Returns:
      This list.
    • getNumEdges

      public int getNumEdges()
      Returns:
      The number of edges in the current graph.
    • get

      public Node get(int j)
      Returns the node at index j in pi.
      Parameters:
      j - The index.
      Returns:
      The node at that index.
    • size

      public int size()
      Returns:
      The size of pi, the current permutation.
    • adjacent

      public boolean adjacent(Node a, Node b)
      Returns True iff a is adjacent to b in the current graph.
      Parameters:
      a - The first node.
      b - The second node.
      Returns:
      True iff adj(a, b).
    • collider

      public boolean collider(Node a, Node b, Node c)
      Returns true iff [a, b, c] is a collider.
      Parameters:
      a - The first node.
      b - The second node.
      c - The third node.
      Returns:
      True iff a->b<-c in the current DAG.
    • triangle

      public boolean triangle(Node a, Node b, Node c)
      Returns true iff [a, b, c] is a triangle.
      Parameters:
      a - The first node.
      b - The second node.
      c - The third node.
      Returns:
      True iff adj(a, b) and adj(b, c) and adj(a, c).
    • clique

      public boolean clique(List<Node> W)
      True iff the nodes in W form a clique in the current DAG.
      Parameters:
      W - The nodes.
      Returns:
      True iff these nodes form a clique.
    • updateScores

      public void updateScores(int i1, int i2)