Package edu.cmu.tetrad.graph
Class EdgeListGraph
java.lang.Object
edu.cmu.tetrad.graph.EdgeListGraph
- All Implemented Interfaces:
- Graph,- TetradSerializable,- Serializable
Stores a graph a list of lists of edges adjacent to each node in the graph, with an additional list storing all of the edges in the graph. The edges are of the form N1 *-# N2. Multiple edges may be added per node pair to this graph, with the caveat that all edges of the form N1 *-# N2 will be considered equal. For example, if the edge X --> Y is added to the graph, another edge X --> Y may not be added, although an edge Y --> X may be added. Edges from nodes to themselves may also be added.> 0
- Author:
- Joseph Ramsey, Erin Korber additions summer 2004
- See Also:
- 
Constructor SummaryConstructorsConstructorDescriptionConstructs a new (empty) EdgeListGraph.EdgeListGraph(EdgeListGraph graph) EdgeListGraph(Graph graph) Constructs a EdgeListGraph using the nodes and edges of the given graph.EdgeListGraph(List<Node> nodes) Constructs a new graph, with no edges, using the given variable names.
- 
Method SummaryModifier and TypeMethodDescriptionvoidaddAttribute(String key, Object value) booleanaddBidirectedEdge(Node node1, Node node2) Adds a bidirected edge to the graph from node A to node B.booleanaddDirectedEdge(Node node1, Node node2) Adds a directed edge to the graph from node A to node B.booleanAdds an edge to the graph.booleanAdds a node to the graph.booleanaddNondirectedEdge(Node node1, Node node2) Adds a nondirected edge to the graph from node A to node B.booleanaddPartiallyOrientedEdge(Node node1, Node node2) Adds a partially oriented edge to the graph from node A to node B.voidAdds a PropertyChangeListener to the graph.booleanaddUndirectedEdge(Node node1, Node node2) Adds an undirected edge to the graph from node A to node B.voidchangeName(String name, String newName) voidclear()Removes all nodes (and therefore all edges) from the graph.booleancontainsEdge(Edge edge) Determines if the graph contains a particular edge.booleancontainsNode(Node node) Determines whether the graph contains a particular node.booleanDetermines whether this graph is equal to some other graph, in the sense that they contain the same nodes and the sets of edges defined over these nodes in the two graphs are isomorphic typewise.voidfullyConnect(Endpoint endpoint) Resets the graph so that it is fully connects it using #-# edges, where # is the given endpoint.getAdjacentNodes(Node node) getAttribute(String key) getChildren(Node node) intintgetDirectedEdge(Node node1, Node node2) getEdges()getEndpoint(Node node1, Node node2) intgetIndegree(Node node) getNodes()getNodesInTo(Node node, Endpoint endpoint) Nodes adjacent to the given node with the given proximal endpoint.getNodesOutTo(Node node, Endpoint endpoint) Nodes adjacent to the given node with the given distal endpoint.intintgetNumEdges(Node node) intintgetOutdegree(Node node) getParents(Node node) protected PropertyChangeSupportgetPcs()inthashCode()booleanisAdjacentTo(Node node1, Node node2) Determines whether some edge or other exists between two nodes.booleanDetermines whether one node is a child of another.booleanisDefCollider(Node node1, Node node2, Node node3) Added by ekorber, 2004/6/9.booleanisDefNoncollider(Node node1, Node node2, Node node3) IllegalArgument exception raised (by isDirectedFromTo(getEndpoint) or by getEdge) if there are multiple edges between any of the node pairs.booleanisDSeparatedFrom(Node x, Node y, List<Node> z) booleanbooleanisExogenous(Node node) Determines whether a node in a graph is exogenous.booleanisParameterizable(Node node) booleanisParentOf(Node node1, Node node2) Determines whether one node is a parent of another.booleanpaths()voidremoveAttribute(String key) booleanremoveEdge(Edge edge) Removes an edge from the graph.booleanremoveEdge(Node node1, Node node2) Removes the edge connecting the two given nodes.booleanremoveEdges(Node node1, Node node2) Removes all edges connecting node A to node B.booleanremoveEdges(Collection<Edge> edges) Removes any relevant edge objects found in this collection.booleanremoveNode(Node node) Removes a node from the graph.booleanremoveNodes(List<Node> newNodes) Removes any relevant node objects found in this collection.voidreorientAllWith(Endpoint endpoint) Reorients all edges in the graph with the given endpoint.static EdgeListGraphGenerates a simple exemplar of this class to test serialization.booleansetEndpoint(Node from, Node to, Endpoint endPoint) If there is currently an edge from node1 to node2, sets the endpoint at node2 to the given endpoint; if there is no such edge, adds an edge --# where # is the given endpoint.voidConstructs and returns a subgraph consisting of a given subset of the nodes of this graph together with the edges between them.toString()voidtransferAttributes(Graph graph) voidtransferNodesAndEdges(Graph graph) Transfers nodes and edges from one graph to another.
- 
Constructor Details- 
EdgeListGraphpublic EdgeListGraph()Constructs a new (empty) EdgeListGraph.
- 
EdgeListGraphConstructs a EdgeListGraph using the nodes and edges of the given graph. If this cannot be accomplished successfully, an exception is thrown. Note that any graph constraints from the given graph are forgotten in the new graph.- Parameters:
- graph- the graph from which nodes and edges are is to be extracted.
- Throws:
- IllegalArgumentException- if a duplicate edge is added.
 
- 
EdgeListGraph- Throws:
- IllegalArgumentException
 
- 
EdgeListGraphConstructs a new graph, with no edges, using the given variable names.
 
- 
- 
Method Details- 
serializableInstanceGenerates a simple exemplar of this class to test serialization.
- 
addDirectedEdgeAdds a directed edge to the graph from node A to node B.- Specified by:
- addDirectedEdgein interface- Graph
- Parameters:
- node1- the "from" node.
- node2- the "to" node.
 
- 
addUndirectedEdgeAdds an undirected edge to the graph from node A to node B.- Specified by:
- addUndirectedEdgein interface- Graph
- Parameters:
- node1- the "from" node.
- node2- the "to" node.
 
- 
addNondirectedEdgeAdds a nondirected edge to the graph from node A to node B.- Specified by:
- addNondirectedEdgein interface- Graph
- Parameters:
- node1- the "from" node.
- node2- the "to" node.
 
- 
addPartiallyOrientedEdgeAdds a partially oriented edge to the graph from node A to node B.- Specified by:
- addPartiallyOrientedEdgein interface- Graph
- Parameters:
- node1- the "from" node.
- node2- the "to" node.
 
- 
addBidirectedEdgeAdds a bidirected edge to the graph from node A to node B.- Specified by:
- addBidirectedEdgein interface- Graph
- Parameters:
- node1- the "from" node.
- node2- the "to" node.
 
- 
isDefNoncolliderIllegalArgument exception raised (by isDirectedFromTo(getEndpoint) or by getEdge) if there are multiple edges between any of the node pairs.- Specified by:
- isDefNoncolliderin interface- Graph
- Returns:
- true if node 2 is a definite noncollider between 1 and 3
 
- 
isDefColliderDescription copied from interface:GraphAdded by ekorber, 2004/6/9.- Specified by:
- isDefColliderin interface- Graph
- Returns:
- true if node 2 is a definite collider between 1 and 3
 
- 
getChildren- Specified by:
- getChildrenin interface- Graph
- Returns:
- the list of children for a node.
 
- 
getDegreepublic int getDegree()
- 
getEdge
- 
getDirectedEdge- Specified by:
- getDirectedEdgein interface- Graph
- Returns:
- the directed edge from node1 to node2, if there is one.
 
- 
getParents- Specified by:
- getParentsin interface- Graph
- Returns:
- the list of parents for a node.
 
- 
getIndegree- Specified by:
- getIndegreein interface- Graph
- Returns:
- the number of edges into the given node.
 
- 
getDegree
- 
getOutdegree- Specified by:
- getOutdegreein interface- Graph
- Returns:
- the number of edges out of the given node.
 
- 
isAdjacentToDetermines whether some edge or other exists between two nodes.- Specified by:
- isAdjacentToin interface- Graph
- Returns:
- true iff node1 is adjacent to node2 in the graph.
 
- 
isChildOfDetermines whether one node is a child of another.
- 
getSepset
- 
isDSeparatedFrom
- 
isDSeparatedFrom
- 
isParentOfDetermines whether one node is a parent of another.- Specified by:
- isParentOfin interface- Graph
- Parameters:
- node1- the first node.
- node2- the second node.
- Returns:
- true if node1 is a parent of node2, false if not.
- See Also:
 
- 
transferNodesAndEdgesTransfers nodes and edges from one graph to another. One way this is used is to change graph types. One constructs a new graph based on the old graph, and this method is called to transfer the nodes and edges of the old graph to the new graph.- Specified by:
- transferNodesAndEdgesin interface- Graph
- Parameters:
- graph- the graph from which nodes and edges are to be pilfered.
- Throws:
- IllegalArgumentException- This exception is thrown if adding some node or edge violates one of the basicConstraints of this graph.
 
- 
transferAttributes- Specified by:
- transferAttributesin interface- Graph
- Throws:
- IllegalArgumentException
 
- 
underlines- Specified by:
- underlinesin interface- Graph
 
- 
paths
- 
isExogenousDetermines whether a node in a graph is exogenous.- Specified by:
- isExogenousin interface- Graph
- Returns:
- true iff the given node is exogenous in the graph.
 
- 
getAdjacentNodes- Specified by:
- getAdjacentNodesin interface- Graph
- Returns:
- the list of nodes adjacent to the given node. If there are multiple edges between X and Y, Y will show up twice in the list of adjacencies for X, for optimality; simply create a list an and array from these to eliminate the duplication.
 
- 
removeEdgeRemoves the edge connecting the two given nodes.- Specified by:
- removeEdgein interface- Graph
 
- 
getEndpoint- Specified by:
- getEndpointin interface- Graph
- Returns:
- the endpoint along the edge from node to node2 at the node2 end.
 
- 
setEndpointIf there is currently an edge from node1 to node2, sets the endpoint at node2 to the given endpoint; if there is no such edge, adds an edge --# where # is the given endpoint. Setting an endpoint to null, provided there is exactly one edge connecting the given nodes, removes the edge. (If there is more than one edge, an exception is thrown.)- Specified by:
- setEndpointin interface- Graph
- Throws:
- IllegalArgumentException- if the edge with the revised endpoint cannot be added to the graph.
 
- 
getNodesInToNodes adjacent to the given node with the given proximal endpoint.- Specified by:
- getNodesInToin interface- Graph
 
- 
getNodesOutToNodes adjacent to the given node with the given distal endpoint.- Specified by:
- getNodesOutToin interface- Graph
 
- 
addEdgeAdds an edge to the graph.
- 
addNodeAdds a node to the graph. Precondition: The proposed name of the node cannot already be used by any other node in the same graph.
- 
getEdges
- 
containsEdgeDetermines if the graph contains a particular edge.- Specified by:
- containsEdgein interface- Graph
- Returns:
- true iff the graph contain 'edge'.
 
- 
containsNodeDetermines whether the graph contains a particular node.- Specified by:
- containsNodein interface- Graph
- Returns:
- true iff the graph contains 'node'.
 
- 
getEdges
- 
hashCodepublic int hashCode()
- 
equalsDescription copied from interface:GraphDetermines whether this graph is equal to some other graph, in the sense that they contain the same nodes and the sets of edges defined over these nodes in the two graphs are isomorphic typewise. That is, if node A and B exist in both graphs, and if there are, e.g., three edges between A and B in the first graph, two of which are directed edges and one of which is an undirected edge, then in the second graph there must also be two directed edges and one undirected edge between nodes A and B.
- 
fullyConnectResets the graph so that it is fully connects it using #-# edges, where # is the given endpoint.- Specified by:
- fullyConnectin interface- Graph
 
- 
reorientAllWithDescription copied from interface:GraphReorients all edges in the graph with the given endpoint.- Specified by:
- reorientAllWithin interface- Graph
 
- 
getNode
- 
getNumNodespublic int getNumNodes()- Specified by:
- getNumNodesin interface- Graph
- Returns:
- the number of nodes in the graph.
 
- 
getNumEdgespublic int getNumEdges()- Specified by:
- getNumEdgesin interface- Graph
- Returns:
- the number of edges in the (entire) graph.
 
- 
getNumEdges- Specified by:
- getNumEdgesin interface- Graph
- Returns:
- the number of edges connected to a particular node in the graph.
 
- 
getNodes
- 
setNodes
- 
clearpublic void clear()Removes all nodes (and therefore all edges) from the graph.
- 
removeEdgeRemoves an edge from the graph. (Note: It is dangerous to make a recursive call to this method (as it stands) from a method containing certain types of iterators. The problem is that if one uses an iterator that iterates over the edges of node A or node B, and tries in the process to remove those edges using this method, a concurrent modification exception will be thrown.)- Specified by:
- removeEdgein interface- Graph
- Parameters:
- edge- the edge to remove.
- Returns:
- true if the edge was removed, false if not.
 
- 
removeEdgesRemoves any relevant edge objects found in this collection. G- Specified by:
- removeEdgesin interface- Graph
- Parameters:
- edges- the collection of edges to remove.
- Returns:
- true if any edges in the collection were removed, false if not.
 
- 
removeEdgesRemoves all edges connecting node A to node B.- Specified by:
- removeEdgesin interface- Graph
- Parameters:
- node1- the first node.,
- node2- the second node.
- Returns:
- true if edges were removed between A and B, false if not.
 
- 
removeNodeRemoves a node from the graph.- Specified by:
- removeNodein interface- Graph
- Returns:
- true if the node was removed, false if not.
 
- 
removeNodesRemoves any relevant node objects found in this collection.- Specified by:
- removeNodesin interface- Graph
- Parameters:
- newNodes- the collection of nodes to remove.
- Returns:
- true if nodes from the collection were removed, false if not.
 
- 
toString
- 
subgraphDescription copied from interface:GraphConstructs and returns a subgraph consisting of a given subset of the nodes of this graph together with the edges between them.
- 
getEdges
- 
getNodeNames- Specified by:
- getNodeNamesin interface- Graph
- Returns:
- the names of the nodes, in the order of getNodes.
 
- 
getPcs- Returns:
- this object.
 
- 
isParameterizable- Specified by:
- isParameterizablein interface- Graph
- Returns:
- true if the given node is parameterizable.
 
- 
isTimeLagModelpublic boolean isTimeLagModel()- Specified by:
- isTimeLagModelin interface- Graph
- Returns:
- true if this is a time lag model, in which case getTimeLagGraph() returns the graph.
 
- 
getTimeLagGraph- Specified by:
- getTimeLagGraphin interface- Graph
- Returns:
- the underlying time lag model, if there is one; otherwise, returns null.
 
- 
changeName
- 
getAllAttributes- Specified by:
- getAllAttributesin interface- Graph
 
- 
getAttribute- Specified by:
- getAttributein interface- Graph
 
- 
removeAttribute- Specified by:
- removeAttributein interface- Graph
 
- 
addAttribute- Specified by:
- addAttributein interface- Graph
 
- 
addPropertyChangeListenerDescription copied from interface:GraphAdds a PropertyChangeListener to the graph.- Specified by:
- addPropertyChangeListenerin interface- Graph
 
 
-