Package es.uam.eps.ir.relison.graph.jung
Class JungGraph<U>
java.lang.Object
es.uam.eps.ir.relison.graph.jung.JungGraph<U>
- Type Parameters:
U
- type of the users
- All Implemented Interfaces:
Graph<U>
,UnweightedGraph<U>
,java.io.Serializable
- Direct Known Subclasses:
DirectedJungGraph
,UndirectedJungGraph
public abstract class JungGraph<U> extends java.lang.Object implements UnweightedGraph<U>
JUNG graph Wrapper.
Edges weights and types are not allowed in this types of graphs.
- See Also:
- Serialized Form
-
Field Summary
-
Constructor Summary
-
Method Summary
Modifier and Type Method Description boolean
addEdge(U nodeA, U nodeB, double weight, int type, boolean insertNodes)
Adds a weighted edge to the graph.boolean
addNode(U node)
Adds a new node to the graph.Graph<U>
complement()
Complements the graphboolean
containsEdge(U nodeA, U nodeB)
Checks if an edge exists in the graph.boolean
containsVertex(U node)
Checks if a vertex exists in the graph.int
degree(U node)
Calculates the degree of a node.Index<U>
getAdjacencyMatrixMap()
For an adjacency matrix, obtains the mapping between indexes and nodes.int
getAdjacentEdgesCount(U node)
Calculates the number of adjacent edges of a node (not necessarily equal to the out-degree).java.util.stream.Stream<Weight<U,java.lang.Integer>>
getAdjacentMutualNodesTypes(U node)
Given a node, finds the types of the edges towards the nodes u such that the edge (node to u) and the edge (u to node) are in the graph.java.util.stream.Stream<U>
getAdjacentNodes(U node)
Given a node, finds all the nodes u such that the edge (node to u) is in the graph.java.util.stream.Stream<Weight<U,java.lang.Integer>>
getAdjacentNodesTypes(U node)
Given a node, finds the types of the edges towards the nodes u such that the edge (node to u) is in the graph.java.util.stream.Stream<U>
getAllNodes()
Gets all the nodes in the graph.long
getEdgeCount()
Measures the number of edges in the network.int
getEdgeType(U nodeA, U nodeB)
Obtains the type of an edge in the graphint
getIncidentEdgesCount(U node)
Calculates the number of incident edges of a node (not necessarily equal to the in-degree).java.util.stream.Stream<Weight<U,java.lang.Integer>>
getIncidentMutualNodesTypes(U node)
Given a node, finds the types of the edges from the nodes u such that the edge (node to u) and the edge (u to node) are in the graph.java.util.stream.Stream<U>
getIncidentNodes(U node)
Given a node, finds all the nodes u such that the edge (u to node) is in the graph.java.util.stream.Stream<Weight<U,java.lang.Integer>>
getIncidentNodesTypes(U node)
Given a node, finds the types of the edges from the nodes u such that the edge (u to node) is in the graph.java.util.stream.Stream<U>
getIsolatedNodes()
Obtains the set of nodes without edges.int
getMutualEdgesCount(U node)
Calculates the total number of adjacent edges of a node such that there is an incident reciprocal link towards the node.java.util.stream.Stream<U>
getMutualNodes(U node)
Given a node, finds all the nodes u such that the edges (node to u) and (u to node) are in the graph.java.util.stream.Stream<Weight<U,java.lang.Integer>>
getMutualNodesTypes(U node)
Given a node, find the types of edges from the nodes u such that the edge (node to u) and the edge (u to node) are in the graph.int
getNeighbourEdgesCount(U node)
Calculates the total number of edges which reach a node or start from it (not necessarily equal to the degree).java.util.stream.Stream<Weight<U,java.lang.Integer>>
getNeighbourhoodTypes(U node, EdgeOrientation direction)
Gets all the types of the edges in the neighbourhood of a node given by a direction.java.util.stream.Stream<U>
getNeighbourNodes(U node)
Given a node, finds all the nodes u so that either (node to u) or (u to node) are in the graph.java.util.stream.Stream<Weight<U,java.lang.Integer>>
getNeighbourNodesTypes(U node)
Given a node, finds the types of the edges from the nodes u such that the edge (node to u) or the edge (u to node) are in the graph.java.util.stream.Stream<U>
getNodesWithAdjacentNeighbors()
Obtains the set of nodes which have adjacent edges.java.util.stream.Stream<U>
getNodesWithIncidentNeighbors()
Obtains the set of nodes which have incident edges.java.util.stream.Stream<U>
getNodesWithMutualNeighbors()
Obtains the set of nodes having mutual edges.java.util.stream.Stream<U>
getNodesWithNeighbors()
Obtains the set of nodes having either incident or adjacent edges.java.util.stream.Stream<U>
getNodesWithNeighbors(EdgeOrientation direction)
Obtains the set of nodes with edges in a particular direction.long
getVertexCount()
Measures the number of nodes in the network.boolean
hasAdjacentNeighbors(U u)
Checks if the user has adjacent edges or not.boolean
hasIncidentNeighbors(U u)
Checks if the user has incident edges or not.boolean
hasMutualNeighbors(U u)
Checks if the user has mutual edges.boolean
hasNeighbors(U u)
Checks if the user shares at least an edge with other user.boolean
updateEdgeType(U nodeA, U nodeB, int type)
Updates the type of an edge.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface es.uam.eps.ir.relison.graph.Graph
addEdge, addEdge, addEdge, addEdge, degree, getAdjacencyMatrix, getAdjacentNodesCount, getIncidentNodesCount, getMutualNodesCount, getNeighbourhood, getNeighbourhoodSize, getNeighbourhoodWeights, getNeighbourNodesCount, hasNeighbors, inDegree, isDirected, isMultigraph, isMutual, mutualDegree, outDegree, removeEdge, removeNode, updateEdgeWeight
Methods inherited from interface es.uam.eps.ir.relison.graph.UnweightedGraph
addEdge, getAdjacentMutualNodesWeights, getAdjacentNodesWeights, getEdgeWeight, getIncidentMutualNodesWeights, getIncidentNodesWeights, getMutualNodesWeights, getNeighbourNodesWeights, isWeighted
-
Field Details
-
graph
The JUNG Graph we are using
-
-
Constructor Details
-
JungGraph
Constructor.- Parameters:
graph
- The Jung graph.
-
-
Method Details
-
addNode
Description copied from interface:Graph
Adds a new node to the graph. -
addEdge
Description copied from interface:Graph
Adds a weighted edge to the graph.- Specified by:
addEdge
in interfaceGraph<U>
- Parameters:
nodeA
- The incident node.nodeB
- The adjacent node.weight
- The weight.type
- The edge type.insertNodes
- If true, nodes will be inserted if they do not exist. If false, the edge will only be added if both nodes are inserted.- Returns:
- if the edge is correctly added, false if not.
-
getAllNodes
Description copied from interface:Graph
Gets all the nodes in the graph.- Specified by:
getAllNodes
in interfaceGraph<U>
- Returns:
- a stream of all the nodes in the graph.
-
getIncidentNodes
Description copied from interface:Graph
Given a node, finds all the nodes u such that the edge (u to node) is in the graph.- Specified by:
getIncidentNodes
in interfaceGraph<U>
- Parameters:
node
- The node.- Returns:
- A stream of the incident nodes.
-
getAdjacentNodes
Description copied from interface:Graph
Given a node, finds all the nodes u such that the edge (node to u) is in the graph.- Specified by:
getAdjacentNodes
in interfaceGraph<U>
- Parameters:
node
- The node.- Returns:
- A stream containing the adjacent nodes.
-
getNeighbourNodes
Description copied from interface:Graph
Given a node, finds all the nodes u so that either (node to u) or (u to node) are in the graph.- Specified by:
getNeighbourNodes
in interfaceGraph<U>
- Parameters:
node
- The node.- Returns:
- A stream containing all the nodes in the neighbourhood.
-
getMutualNodes
Description copied from interface:Graph
Given a node, finds all the nodes u such that the edges (node to u) and (u to node) are in the graph.- Specified by:
getMutualNodes
in interfaceGraph<U>
- Parameters:
node
- The node.- Returns:
- A stream containing all the nodes which share reciprocal links.
-
degree
Description copied from interface:Graph
Calculates the degree of a node. -
getIncidentEdgesCount
Description copied from interface:Graph
Calculates the number of incident edges of a node (not necessarily equal to the in-degree).- Specified by:
getIncidentEdgesCount
in interfaceGraph<U>
- Parameters:
node
- The node.- Returns:
- the number of incident neighbours of the node if it is contained in the graph, -1 if not.
-
getAdjacentEdgesCount
Description copied from interface:Graph
Calculates the number of adjacent edges of a node (not necessarily equal to the out-degree).- Specified by:
getAdjacentEdgesCount
in interfaceGraph<U>
- Parameters:
node
- The node.- Returns:
- the degree of the node if it is contained in the graph, -1 if not.
-
getNeighbourEdgesCount
Description copied from interface:Graph
Calculates the total number of edges which reach a node or start from it (not necessarily equal to the degree).- Specified by:
getNeighbourEdgesCount
in interfaceGraph<U>
- Parameters:
node
- The node.- Returns:
- the degree of the node if it is contained in the graph, -1 if not.
-
getMutualEdgesCount
Description copied from interface:Graph
Calculates the total number of adjacent edges of a node such that there is an incident reciprocal link towards the node.- Specified by:
getMutualEdgesCount
in interfaceGraph<U>
- Parameters:
node
- The node.- Returns:
- the number of reciprocal links starting from the node.
-
containsVertex
Description copied from interface:Graph
Checks if a vertex exists in the graph.- Specified by:
containsVertex
in interfaceGraph<U>
- Parameters:
node
- The vertex to check.- Returns:
- true if the vertex is contained in the graph, false if not.
-
containsEdge
Description copied from interface:Graph
Checks if an edge exists in the graph.- Specified by:
containsEdge
in interfaceGraph<U>
- Parameters:
nodeA
- The incident node.nodeB
- The adjacent node.- Returns:
- true if the edge is contained in the graph, false if not.
-
getEdgeType
Description copied from interface:Graph
Obtains the type of an edge in the graph- Specified by:
getEdgeType
in interfaceGraph<U>
- Parameters:
nodeA
- The incident node.nodeB
- The adjacent node.- Returns:
- The corresponding type. If the edge does not exist, -1.
-
getIncidentNodesTypes
Description copied from interface:Graph
Given a node, finds the types of the edges from the nodes u such that the edge (u to node) is in the graph.- Specified by:
getIncidentNodesTypes
in interfaceGraph<U>
- Parameters:
node
- The node.- Returns:
- A stream of the incident nodes and types.
-
getAdjacentNodesTypes
Description copied from interface:Graph
Given a node, finds the types of the edges towards the nodes u such that the edge (node to u) is in the graph.- Specified by:
getAdjacentNodesTypes
in interfaceGraph<U>
- Parameters:
node
- The node.- Returns:
- A stream containing the adjacent nodes and types.
-
getNeighbourNodesTypes
Description copied from interface:Graph
Given a node, finds the types of the edges from the nodes u such that the edge (node to u) or the edge (u to node) are in the graph.- Specified by:
getNeighbourNodesTypes
in interfaceGraph<U>
- Parameters:
node
- The node.- Returns:
- A stream containing all the nodes in the neighbourhood and types.
-
getMutualNodesTypes
Description copied from interface:Graph
Given a node, find the types of edges from the nodes u such that the edge (node to u) and the edge (u to node) are in the graph.- Specified by:
getMutualNodesTypes
in interfaceGraph<U>
- Parameters:
node
- the node.- Returns:
- a stream containing all the nodes in the neighbourhood and types.
-
getNeighbourhoodTypes
public java.util.stream.Stream<Weight<U,java.lang.Integer>> getNeighbourhoodTypes(U node, EdgeOrientation direction)Description copied from interface:Graph
Gets all the types of the edges in the neighbourhood of a node given by a direction. In the mutual case, it does not work (types are categorical values), so an empty stream is returned.- Specified by:
getNeighbourhoodTypes
in interfaceGraph<U>
- Parameters:
node
- The node.direction
- The direction of the links.- Returns:
- A stream containing the corresponding neighbourhood.
-
getVertexCount
public long getVertexCount()Description copied from interface:Graph
Measures the number of nodes in the network.- Specified by:
getVertexCount
in interfaceGraph<U>
- Returns:
- the number of nodes.
-
getAdjacentMutualNodesTypes
Description copied from interface:Graph
Given a node, finds the types of the edges towards the nodes u such that the edge (node to u) and the edge (u to node) are in the graph.- Specified by:
getAdjacentMutualNodesTypes
in interfaceGraph<U>
- Parameters:
node
- The node.- Returns:
- A stream containing all the nodes in the neighbourhood and types.
-
getIncidentMutualNodesTypes
Description copied from interface:Graph
Given a node, finds the types of the edges from the nodes u such that the edge (node to u) and the edge (u to node) are in the graph.- Specified by:
getIncidentMutualNodesTypes
in interfaceGraph<U>
- Parameters:
node
- The node.- Returns:
- A stream containing all the nodes in the neighbourhood and types.
-
getEdgeCount
public long getEdgeCount()Description copied from interface:Graph
Measures the number of edges in the network.- Specified by:
getEdgeCount
in interfaceGraph<U>
- Returns:
- the number of edges.
-
complement
Description copied from interface:Graph
Complements the graph- Specified by:
complement
in interfaceGraph<U>
- Returns:
- the complementary graph.
-
getIsolatedNodes
Description copied from interface:Graph
Obtains the set of nodes without edges.- Specified by:
getIsolatedNodes
in interfaceGraph<U>
- Returns:
- the set of nodes without edges.
-
getNodesWithNeighbors
Description copied from interface:Graph
Obtains the set of nodes with edges in a particular direction.- Specified by:
getNodesWithNeighbors
in interfaceGraph<U>
- Parameters:
direction
- the particular direction- Returns:
- the set of nodes with edges in the given direction.
-
getNodesWithAdjacentNeighbors
Description copied from interface:Graph
Obtains the set of nodes which have adjacent edges.- Specified by:
getNodesWithAdjacentNeighbors
in interfaceGraph<U>
- Returns:
- the set of nodes which have adjacent edges.
-
getNodesWithIncidentNeighbors
Description copied from interface:Graph
Obtains the set of nodes which have incident edges.- Specified by:
getNodesWithIncidentNeighbors
in interfaceGraph<U>
- Returns:
- the set of nodes which have incident edges.
-
getNodesWithNeighbors
Description copied from interface:Graph
Obtains the set of nodes having either incident or adjacent edges.- Specified by:
getNodesWithNeighbors
in interfaceGraph<U>
- Returns:
- the set of nodes which have incident or adjacent edges.
-
getNodesWithMutualNeighbors
Description copied from interface:Graph
Obtains the set of nodes having mutual edges.- Specified by:
getNodesWithMutualNeighbors
in interfaceGraph<U>
- Returns:
- the set of nodes which have mutual edges.
-
hasAdjacentNeighbors
Description copied from interface:Graph
Checks if the user has adjacent edges or not.- Specified by:
hasAdjacentNeighbors
in interfaceGraph<U>
- Parameters:
u
- The user.- Returns:
- true if the user has adjacent edges, false if it is a sink or isolated node.
-
hasIncidentNeighbors
Description copied from interface:Graph
Checks if the user has incident edges or not.- Specified by:
hasIncidentNeighbors
in interfaceGraph<U>
- Parameters:
u
- the user.- Returns:
- true if the user has incident edges, false if it is a source or isolated node.
-
hasNeighbors
Description copied from interface:Graph
Checks if the user shares at least an edge with other user.- Specified by:
hasNeighbors
in interfaceGraph<U>
- Parameters:
u
- The user.- Returns:
- true if the user is not isolated, false otherwise.
-
hasMutualNeighbors
Description copied from interface:Graph
Checks if the user has mutual edges.- Specified by:
hasMutualNeighbors
in interfaceGraph<U>
- Parameters:
u
- The user.- Returns:
- true if the user has mutual edges, false otherwise.
-
getAdjacencyMatrixMap
Description copied from interface:Graph
For an adjacency matrix, obtains the mapping between indexes and nodes.- Specified by:
getAdjacencyMatrixMap
in interfaceGraph<U>
- Returns:
- the mapping between indexes and nodes.
-
updateEdgeType
Description copied from interface:Graph
Updates the type of an edge.- Specified by:
updateEdgeType
in interfaceGraph<U>
- Parameters:
nodeA
- The incident node.nodeB
- The adjacent node.type
- The new type.- Returns:
- true if everything goes OK, false if the edge does not exist or something fails.
-