edu.memphis.ccrg.lida.framework.shared
Interface NodeStructure

All Known Subinterfaces:
WorkspaceContent
All Known Implementing Classes:
NodeStructureImpl, PerceptualAssociativeMemoryImpl.PamNodeStructure, ProceduralMemoryImpl.InternalNodeStructure, UnmodifiableNodeStructureImpl

public interface NodeStructure

A NodeStructure holds a collection of Nodes an Links. It is used as a main conceptual representation among LIDA modules.

Author:
Javier Snaider, Ryan J. McCall
See Also:
NodeStructureImpl

Method Summary
 Link addDefaultLink(int idSource, ExtendedId idSink, LinkCategory type, double activation, double removalThreshold)
          Creates and adds a new Link of default type with specified attributes.
 Link addDefaultLink(int idSource, int idSink, LinkCategory type, double activation, double removalThreshold)
          Creates and adds a new Link of default type with specified attributes.
 Link addDefaultLink(Link l)
          Adds a copy, of default link type, based on the specified Link, to this NodeStructure.
 Link addDefaultLink(Node source, Linkable sink, LinkCategory category, double activation, double removalThreshold)
          Creates and adds a new Link of default type with specified attributes.
 java.util.Collection<Link> addDefaultLinks(java.util.Collection<Link> links)
          Copies specified Links and then adds the copies to this NodeStructure.
 Node addDefaultNode(Node n)
          Adds a copy of specified Node to this NodeStructure.
 Node addDefaultNode(java.lang.String label, double a, double rt)
          Creates, adds and returns a new Node of default type with specified attributes.
 java.util.Collection<Node> addDefaultNodes(java.util.Collection<Node> nodes)
           
 Link addLink(Link l, java.lang.String linkType)
          Adds copy of specified Link.
 Link addLink(java.lang.String type, int srcId, ExtendedId snkId, LinkCategory cat, double a, double rt)
          Creates and adds a new Link of specified type with specified attributes.
 Link addLink(java.lang.String type, Node src, Linkable sink, LinkCategory cat, double a, double rt)
          Creates and adds a new Link of specified type with specified attributes.
 Node addNode(Node n, java.lang.String type)
          Add a Node of a specified type to this NodeStructure.
If a Node with the same id already exists in the NodeStructure the existing Node will have its activation updated.
 Node addNode(java.lang.String type, java.lang.String label, double a, double rt)
          Creates, adds and returns a new Node of specified type with specified attributes.
 void clearLinks()
          Removes all links from this NodeStructure.
 void clearNodeStructure()
          Removes all nodes and links from this NodeStructure.
 boolean containsLink(ExtendedId id)
          Returns whether this NodeStructure contains Link with specified ExtendedId.
 boolean containsLink(Link l)
          Returns whether this NodeStructure contains specified Link.
 boolean containsLinkable(ExtendedId id)
          Returns whether this NodeStructure contains Linkable with specified ExtendedId.
 boolean containsLinkable(Linkable l)
          Returns whether this NodeStructure contains specified Linkable.
 boolean containsNode(ExtendedId id)
          Returns whether this NodeStructure contains Node with specified ExtendedId.
 boolean containsNode(int id)
          Returns whether this NodeStructure contains Node with specified id.
 boolean containsNode(Node n)
          Returns whether this NodeStructure contains specified Node.
 NodeStructure copy()
          Returns a deep copy of this NodeStructure.
 void decayNodeStructure(long ticks)
          Decays the Linkables of this NodeStructure.
 java.util.Set<Link> getAttachedLinks(Linkable l)
          Gets all Link objects directly connected to specified Linkable.
 java.util.Set<Link> getAttachedLinks(Linkable lnk, LinkCategory cat)
          Gets all Links directly connected to specified Linkable with specified LinkCategory
 java.util.Map<Linkable,Link> getConnectedSinks(Node n)
          Returns a Map of all sink Linkable objects connected to specified Node.
 java.util.Map<Node,Link> getConnectedSources(Linkable lnk)
          Returns a Map of all Nodes connected to specified Linkable as a source.
 java.lang.String getDefaultLinkType()
          Gets default Link type of the NodeStructure.
 java.lang.String getDefaultNodeType()
          Gets default Node type of the NodeStructure.
 Link getLink(ExtendedId id)
          Gets Link with specified ExtendedId if present.
 Linkable getLinkable(ExtendedId id)
          Gets Linkable with specified ExtendedId.
 int getLinkableCount()
          Gets the number of linkables (nodes and links).
 java.util.Map<Linkable,java.util.Set<Link>> getLinkableMap()
          Returns a map of all the Linkable objects currently in the NodeStructure and their attached links.
 java.util.Collection<Linkable> getLinkables()
          Returns all Linkables, all Nodes and Links, currently in this NodeStructure.
 int getLinkCount()
          Gets the number of links.
 java.util.Collection<Link> getLinks()
          Returns the Links of this NodeStructure.
 java.util.Set<Link> getLinks(LinkCategory cat)
          Returns all Links of this NodeStructure with specified LinkCategory.
 Node getNode(ExtendedId eid)
          Returns a copy of the node in this NodeStructure with specified ExtendedId.
 Node getNode(int id)
          Returns a copy of the node in this NodeStructure with specified id.
 int getNodeCount()
          Gets the number of nodes.
 java.util.Collection<Node> getNodes()
          Returns all Nodes.
 NodeStructure getSubgraph(java.util.Collection<Node> nodes, int d)
          Returns a copy of a subgraph of this NodeStructure.
 NodeStructure getSubgraph(java.util.Collection<Node> nodes, int d, double threshold)
          Returns a copy of a subgraph of this NodeStructure.
 void mergeWith(NodeStructure ns)
          Merges specified NodeStructure into this one.
 void removeLink(Link l)
          Removes specified Link if present.
 void removeLinkable(ExtendedId id)
          Removes Linkable with specified ExtendedId if present.
 void removeLinkable(Linkable l)
          Removes specified Linkable if present.
 void removeNode(Node n)
          Removes specified Node if present.
 

Method Detail

addDefaultNode

Node addDefaultNode(java.lang.String label,
                    double a,
                    double rt)
Creates, adds and returns a new Node of default type with specified attributes.

Parameters:
label - label of new Node
a - initial activation of new Node
rt - initial removal threshold of new Node
Returns:
the Node added to the NodeStructure or null

addDefaultNode

Node addDefaultNode(Node n)
Adds a copy of specified Node to this NodeStructure. The copy will be of the default type of this NodeStructure, NOT of the type of the specified node. If Node with the same id already exists the the old node's activation is updated ONLY IF it is higher than the existing activation.

Parameters:
n - Node to add.
Returns:
The copied Node that is stored in this NodeStructure or the existing, updated, Node already there.

addDefaultNodes

java.util.Collection<Node> addDefaultNodes(java.util.Collection<Node> nodes)
Parameters:
nodes - Node to be added.
Returns:
copied and/or updated nodes that are now present in this NodeStructure
See Also:
addDefaultNode(Node)

addNode

Node addNode(java.lang.String type,
             java.lang.String label,
             double a,
             double rt)
Creates, adds and returns a new Node of specified type with specified attributes.

Parameters:
type - Factory type of new Node
label - label of new Node
a - initial activation of new Node
rt - initial removal threshold of new Node
Returns:
the Node added to the NodeStructure or null

addNode

Node addNode(Node n,
             java.lang.String type)
Add a Node of a specified type to this NodeStructure.
If a Node with the same id already exists in the NodeStructure the existing Node will have its activation updated. In this case the Node's type doesn't change.

Parameters:
n - Node
type - name of node's type in ElementFactory
Returns:
copy of node actually added.

addDefaultLink

Link addDefaultLink(Node source,
                    Linkable sink,
                    LinkCategory category,
                    double activation,
                    double removalThreshold)
Creates and adds a new Link of default type with specified attributes. Source and sink must already be in this NodeStructure.

Parameters:
source - Link's source Node
sink - Link's sink, a Node or a Link
category - Link's LinkCategory
activation - initial link activation
removalThreshold - amount of activation Link must maintain to remain in this NodeStructure after decaying.
Returns:
created Link or null if either source or sink are not already present.

addDefaultLink

Link addDefaultLink(int idSource,
                    ExtendedId idSink,
                    LinkCategory type,
                    double activation,
                    double removalThreshold)
Creates and adds a new Link of default type with specified attributes. Source and sink must already be in this NodeStructure.

Parameters:
idSource - id of link's source
idSink - ExtendedId of link's sink
type - Link's LinkCategory
activation - initial link activation
removalThreshold - amount of activation Link must maintain to remain in this NodeStructure after decaying.
Returns:
created Link or null if either source or sink are not already present.

addDefaultLink

Link addDefaultLink(int idSource,
                    int idSink,
                    LinkCategory type,
                    double activation,
                    double removalThreshold)
Creates and adds a new Link of default type with specified attributes. Source and sink must already be in this NodeStructure. Allows multiple links from the same source and sink as long as their LinkCategory differs.

Parameters:
idSource - id of link's source
idSink - id of link's sink
type - Link's LinkCategory
activation - initial link activation
removalThreshold - amount of activation Link must maintain to remain in this NodeStructure after decaying.
Returns:
created Link or null if either source or sink are not already present.

addDefaultLink

Link addDefaultLink(Link l)
Adds a copy, of default link type, based on the specified Link, to this NodeStructure. If Link with the same id already exists then the old Link's activation is updated. Copied link will have the default link type of this NodeStructure when it is added.

Parameters:
l - Link to copy and add.
Returns:
the copied Link that is actually stored in this NodeStructure, or the existing link that is updated. If Link cannot be added then null is returned.

addDefaultLinks

java.util.Collection<Link> addDefaultLinks(java.util.Collection<Link> links)
Copies specified Links and then adds the copies to this NodeStructure. If any Link with the same id already exists then the old Link's activation is updated. Copied links will have the default link type of this NodeStructure when they are added. Note if Links in supplied Collection link to each other then this method does NOT guarantee that all Links will be added properly. Links should be added one at a time in this case after the dependent links are already present.

Parameters:
links - Links to copy and add.
Returns:
the copied Links that are actually stored in this NodeStructure, or any existing links.

addLink

Link addLink(java.lang.String type,
             int srcId,
             ExtendedId snkId,
             LinkCategory cat,
             double a,
             double rt)
Creates and adds a new Link of specified type with specified attributes. Source and sink must already be in this NodeStructure.

Parameters:
type - Factory type of the link to be created
srcId - id of link's source
snkId - ExtendedId of link's sink
cat - Link's LinkCategory
a - initial link activation
rt - removal threshold, amount of activation Link must maintain to remain in this NodeStructure after decaying.
Returns:
created Link or null if either source or sink are not already present.

addLink

Link addLink(java.lang.String type,
             Node src,
             Linkable sink,
             LinkCategory cat,
             double a,
             double rt)
Creates and adds a new Link of specified type with specified attributes. Source and sink must already be in this NodeStructure.

Parameters:
type - Factory type of the link to be created
src - the link's source Node
sink - the link's sink Linkable
cat - the link's LinkCategory
a - initial link activation
rt - removal threshold, amount of activation Link must maintain to remain in this NodeStructure after decaying.
Returns:
created Link or null if either source or sink are not already present.

addLink

Link addLink(Link l,
             java.lang.String linkType)
Adds copy of specified Link. Copy is of specified type.

Parameters:
l - original Link
linkType - type of copied Link
Returns:
new Link or null if such a link cannot be created.

removeNode

void removeNode(Node n)
Removes specified Node if present.

Parameters:
n - Node to remove.

removeLink

void removeLink(Link l)
Removes specified Link if present.

Parameters:
l - Link to remove.

removeLinkable

void removeLinkable(Linkable l)
Removes specified Linkable if present.

Parameters:
l - Linkable to remove.

removeLinkable

void removeLinkable(ExtendedId id)
Removes Linkable with specified ExtendedId if present.

Parameters:
id - ExtendedId of Linkable to remove.

clearLinks

void clearLinks()
Removes all links from this NodeStructure.


clearNodeStructure

void clearNodeStructure()
Removes all nodes and links from this NodeStructure.


containsNode

boolean containsNode(Node n)
Returns whether this NodeStructure contains specified Node.

Parameters:
n - Node checked for.
Returns:
true if contains a Node with the same id.

containsNode

boolean containsNode(int id)
Returns whether this NodeStructure contains Node with specified id.

Parameters:
id - id of Node checked for.
Returns:
true if contains a Node with the same id.

containsNode

boolean containsNode(ExtendedId id)
Returns whether this NodeStructure contains Node with specified ExtendedId.

Parameters:
id - ExtendedId of Node checked for.
Returns:
true if contains a Node with the same ExtendedId.

containsLink

boolean containsLink(Link l)
Returns whether this NodeStructure contains specified Link.

Parameters:
l - Link checked for.
Returns:
true if contains a Link with the same id.

containsLink

boolean containsLink(ExtendedId id)
Returns whether this NodeStructure contains Link with specified ExtendedId.

Parameters:
id - Link checked for.
Returns:
true if contains a Link with the same ExtendedId.

containsLinkable

boolean containsLinkable(Linkable l)
Returns whether this NodeStructure contains specified Linkable.

Parameters:
l - Linkable checked for.
Returns:
true if contains a Linkable with the same ExtendedId.

containsLinkable

boolean containsLinkable(ExtendedId id)
Returns whether this NodeStructure contains Linkable with specified ExtendedId.

Parameters:
id - Linkable checked for.
Returns:
true if contains a Linkable with the same ExtendedId.

mergeWith

void mergeWith(NodeStructure ns)
Merges specified NodeStructure into this one. Adds all nodes and adds all Links. Activations are updated if Linkable is already present.

Parameters:
ns - NodeStructure

copy

NodeStructure copy()
Returns a deep copy of this NodeStructure.

Returns:
NodeStructure

decayNodeStructure

void decayNodeStructure(long ticks)
Decays the Linkables of this NodeStructure.

Parameters:
ticks - the number of ticks to decay for.

getNode

Node getNode(int id)
Returns a copy of the node in this NodeStructure with specified id.

Parameters:
id - id of node
Returns:
Node with specified id or null if not present

getNode

Node getNode(ExtendedId eid)
Returns a copy of the node in this NodeStructure with specified ExtendedId.

Parameters:
eid - ExtendedId of node
Returns:
Node with specified ExtendedId or null if not present

getNodes

java.util.Collection<Node> getNodes()
Returns all Nodes.

Returns:
all Nodes in this NodeStructure

getLink

Link getLink(ExtendedId id)
Gets Link with specified ExtendedId if present.

Parameters:
id - ExtendedId of sought Link
Returns:
Link or null if no Link exists

getLinks

java.util.Collection<Link> getLinks()
Returns the Links of this NodeStructure.

Returns:
an UnmodifiableCollection of all Links

getLinks

java.util.Set<Link> getLinks(LinkCategory cat)
Returns all Links of this NodeStructure with specified LinkCategory.

Parameters:
cat - the LinkCategory to search for
Returns:
Links having specified LinkCategory

getAttachedLinks

java.util.Set<Link> getAttachedLinks(Linkable l)
Gets all Link objects directly connected to specified Linkable.

Parameters:
l - the Linkable whose attached links will be returned
Returns:
an UnmodifiableSet of all Links connected to specified Linkable

getAttachedLinks

java.util.Set<Link> getAttachedLinks(Linkable lnk,
                                     LinkCategory cat)
Gets all Links directly connected to specified Linkable with specified LinkCategory

Parameters:
lnk - a Linkable
cat - LinkCategory
Returns:
Links

getLinkable

Linkable getLinkable(ExtendedId id)
Gets Linkable with specified ExtendedId.

Parameters:
id - ExtendedId
Returns:
a Linkable

getLinkables

java.util.Collection<Linkable> getLinkables()
Returns all Linkables, all Nodes and Links, currently in this NodeStructure.

Returns:
all Linkables

getLinkableMap

java.util.Map<Linkable,java.util.Set<Link>> getLinkableMap()
Returns a map of all the Linkable objects currently in the NodeStructure and their attached links.

Returns:
an UnmodifiableMap of the Linkable objects in this NodeStructure and their attached links.

getConnectedSinks

java.util.Map<Linkable,Link> getConnectedSinks(Node n)
Returns a Map of all sink Linkable objects connected to specified Node. The keys of the map are the connected sinks and the values are the Links connecting the sinks to the specified Node.

Parameters:
n - supplied node
Returns:
map of sinks and links connecting node to them

getConnectedSources

java.util.Map<Node,Link> getConnectedSources(Linkable lnk)
Returns a Map of all Nodes connected to specified Linkable as a source. The keys of the map are the connected sources and the values are the Links connecting the sources to the specified Linkable

Parameters:
lnk - the Linkable whose connected sources will be returned
Returns:
Map of all sources connected to lnk and the links connecting them to lnk

getNodeCount

int getNodeCount()
Gets the number of nodes.

Returns:
number of nodes currently in the NodeStructure

getLinkCount

int getLinkCount()
Gets the number of links.

Returns:
number of links currently in the NodeStructure

getLinkableCount

int getLinkableCount()
Gets the number of linkables (nodes and links).

Returns:
number of Linkable objects currently in the NodeStructure

getDefaultNodeType

java.lang.String getDefaultNodeType()
Gets default Node type of the NodeStructure.

Returns:
default type of Node objects in the NodeStructure

getDefaultLinkType

java.lang.String getDefaultLinkType()
Gets default Link type of the NodeStructure.

Returns:
link type of Link objects in the NodeStructure

getSubgraph

NodeStructure getSubgraph(java.util.Collection<Node> nodes,
                          int d)
Returns a copy of a subgraph of this NodeStructure. The subgraph will contain all specified nodes with non-zero activation if they are currently present in the NodeStructure. Additionally all other nodes having distance, the number of links, less or equal to d from the specified nodes and that have non-zero activation are part of the subgraph. If a Node has non-zero activation then the depth-first search will not continue further from that Node. Finally all links that connect two Linkable elements that are both d or less from the specified nodes are included in the subgraph.

Parameters:
nodes - the nodes which will be the roots from which the subgraph will be formed
d - the greatest distance a node can be from a specified nodes to be included in the subgraph
Returns:
A copy of a subgraph of this NodeStructure which involves specified and all satisfied neighbor nodes

getSubgraph

NodeStructure getSubgraph(java.util.Collection<Node> nodes,
                          int d,
                          double threshold)
Returns a copy of a subgraph of this NodeStructure. The subgraph will contain all specified nodes with activation at or above specified threshold if they are currently present in the NodeStructure. Additionally all other nodes having distance, the number of links, less or equal to d from the specified nodes and that have sufficient activation are part of the subgraph. If a Node has insufficient activation then the depth-first search will not continue further from that Node. Finally all links that connect two Linkable elements that are both d or less from the specified nodes are included in the subgraph.

Parameters:
nodes - the nodes which will be the roots from which the subgraph will be formed
d - the greatest distance a node can be from a specified nodes to be included in the subgraph
threshold - activation requirement for a node to be part of the subgraph.
Returns:
A copy of a subgraph of this NodeStructure which involves specified and all satisfied neighbor nodes