Class GraphChange

java.lang.Object
edu.cmu.tetrad.search.work_in_progress.GraphChange

public class GraphChange extends Object

Provides s a data structure created mainly for use in the ION search algorithm. However, it models a general concept: storage for a variety of seperate changes one could possibly apply to a PAG.

By convention, the NodePairs in the orients ArrayList are ordered such that Node1 is the "from" node and Node2 is the "to" node (ie 1 o-> 2).

Version:
$Id: $Id
Author:
Trevor Burns
  • Constructor Details

    • GraphChange

      public GraphChange()
      Default constructor, holds no changes.
    • GraphChange

      public GraphChange(GraphChange source)
      Copy constructor.
      Parameters:
      source - a GraphChange object
  • Method Details

    • union

      public void union(GraphChange other)
      Absorbs all changes from the GraphChange other into the calling GraphChange.
      Parameters:
      other - a GraphChange object
    • isConsistent

      public boolean isConsistent(GraphChange other)
      Consistency check, nonexhaustive, but catches the most blatant inconsistencies.
      Parameters:
      other - a GraphChange object
      Returns:
      a boolean
    • applyTo

      public Graph applyTo(Graph graph)
      Outputs a new PAG, a copy of the input excepting the applied changes of this object. Will return null if some change fails (ie an obscure inconsistensy).
      Parameters:
      graph - a Graph object
      Returns:
      a Graph object
    • addRemove

      public void addRemove(Edge removalEdge)
      Add another remove operation to the GraphChange.
      Parameters:
      removalEdge - a Edge object
    • addCollider

      public void addCollider(Triple colliderTrip)
      Add another collider operation to the GraphChange.
      Parameters:
      colliderTrip - a Triple object
    • addNonCollider

      public void addNonCollider(Triple nonColliderTrip)
      Add another non-collider operation to the GraphChange.
      Parameters:
      nonColliderTrip - a Triple object
    • addOrient

      public void addOrient(Node from, Node to)
      Add another orient operation to the GraphChange.
      Parameters:
      from - a Node object
      to - a Node object
    • contains

      public boolean contains(GraphChange gc)
      Contains is defined such that if the internal strucs of this GraphChange all individually contain the elements in the corresponding strucs of GraphChange gc, then this "contains" gc.
      Parameters:
      gc - a GraphChange object
      Returns:
      a boolean
    • toString

      public String toString()
      Anly outputs ops which have elements, not empty structures.
      Overrides:
      toString in class Object
      Returns:
      a String object
    • getColliders

      public List<Triple> getColliders()
      Return colliders
      Returns:
      a List object
    • getNoncolliders

      public List<Triple> getNoncolliders()
      Return noncolliders
      Returns:
      a List object
    • getRemoves

      public List<Edge> getRemoves()
      Return removes
      Returns:
      a List object
    • getOrients

      public List<NodePair> getOrients()
      Return orients
      Returns:
      a List object
    • equals

      public boolean equals(Object other)

      Equals is defined such that if the internal strucs of this GraphChange all individually equal the corresponding strucs of GraphChange gc, then this "equals" gc

      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()

      hashCode.

      Overrides:
      hashCode in class Object
      Returns:
      a int