sim.field.network
Class Edge

java.lang.Object
  extended bysim.field.network.Edge
All Implemented Interfaces:
java.io.Serializable

public class Edge
extends java.lang.Object
implements java.io.Serializable

An Edge stores a relationship between two objects in a Network. Edges are directed: one object is a "from" object and one object is a "to" object. Edges also hold an "info" object, which is an arbitrary object that you specify on your own. An info object can be used to hold the edge weight, an edge label, or whatever you like. Edges are "semi-mutable": you can change the info object at any time, but you may not change the to or from objects once the Edge has been constructed.

An Edge may be added to at most one Network. You must remove it from that field before you can add it to a new Network. The Edge's field is known as its owner.

Explicitly stating weights. The getWeight() function returns a plausible weight for the edge. If your "info" object is a Number or a MutableDouble, or is sim.util.Valuable, then the weight of the edge is the doubleValue() of your object. Else the weight of the edge is a default of 1.0.

See Also:
Serialized Form

Field Summary
 java.lang.Object info
          Other information (maybe cost) associated with the edge
 
Constructor Summary
Edge(Edge e)
           
Edge(java.lang.Object from, java.lang.Object to, java.lang.Object info)
           
 
Method Summary
 java.lang.Object from()
          Returns the "from" object.
 java.lang.Object getOtherNode(java.lang.Object node)
          Returns the alternate to the provided node.
 double getWeight()
          Returns the weight of the edge.
 int indexFrom()
           
 int indexTo()
           
 Network owner()
          Returns the "owner" field.
 java.lang.Object to()
          Returns the "to" object.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

info

public java.lang.Object info
Other information (maybe cost) associated with the edge

Constructor Detail

Edge

public Edge(Edge e)

Edge

public Edge(java.lang.Object from,
            java.lang.Object to,
            java.lang.Object info)
Method Detail

from

public java.lang.Object from()
Returns the "from" object.


to

public java.lang.Object to()
Returns the "to" object.


owner

public Network owner()
Returns the "owner" field.


indexFrom

public int indexFrom()

indexTo

public int indexTo()

getWeight

public double getWeight()
Returns the weight of the edge. The default version of the function returns the value of the info object if it is a subclass of Number (including MutableDouble) or is Valuable, else returns 1.0.


getOtherNode

public java.lang.Object getOtherNode(java.lang.Object node)
Returns the alternate to the provided node. Specifically: if node == from(), then to() is returned; else from() is returned. Note that if node != from() AND node != to(), then from() is still returned.

This method is useful for various algorithms which operate both on undirected and on directed graphs; rather than knowing if you're "to" or "from", you can just "get the node on the other side of the edge."