Class ComplementaryGraph<U>

java.lang.Object
es.uam.eps.ir.relison.graph.complementary.ComplementaryGraph<U>
Type Parameters:
U - type of the users.
All Implemented Interfaces:
Graph<U>, java.io.Serializable
Direct Known Subclasses:
DirectedUnweightedComplementaryGraph, DirectedWeightedComplementaryGraph, UndirectedUnweightedComplementaryGraph, UndirectedWeightedComplementaryGraph

public abstract class ComplementaryGraph<U>
extends java.lang.Object
implements Graph<U>
Wrapper for the complementary graph of another one given. Since this is the complementary of another graph, no nodes nor edges can be removed. Every time the original graph is modified, so this graph will be.
See Also:
Serialized Form
  • Field Summary

    Fields 
    Modifier and Type Field Description
    private Graph<U> graph
    Original graph.
  • Constructor Summary

    Constructors 
    Constructor Description
    ComplementaryGraph​(Graph<U> graph)
    Constructor
  • 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 graph
    boolean 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.
    double[][] getAdjacencyMatrix​(EdgeOrientation direction)
    Gets the adjacency matrix.
    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<Weight<U,​java.lang.Double>> getAdjacentMutualNodesWeights​(U node)
    Given a node, finds the weights 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<Weight<U,​java.lang.Double>> getAdjacentNodesWeights​(U node)
    Given a node, finds the weights 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 graph
    double getEdgeWeight​(U nodeA, U nodeB)
    Obtains the weight of an edge in the graph
    int 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<Weight<U,​java.lang.Double>> getIncidentMutualNodesWeights​(U node)
    Given a node, finds the weights 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<Weight<U,​java.lang.Double>> getIncidentNodesWeights​(U node)
    Given a node, finds the weights 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.
    java.util.stream.Stream<Weight<U,​java.lang.Double>> getMutualNodesWeights​(U node)
    Given a node, finds the weights of the edges towards and 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<U> getNeighbourhood​(U node, EdgeOrientation direction)
    Gets all the nodes in the neighbourhood of a node given by a direction.
    int getNeighbourhoodSize​(U node, EdgeOrientation direction)
    Gets all the nodes in the neighbourhood of a node given by a direction.
    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<Weight<U,​java.lang.Double>> getNeighbourhoodWeights​(U node, EdgeOrientation direction)
    Gets all the weights 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<Weight<U,​java.lang.Double>> getNeighbourNodesWeights​(U node)
    Given a node, finds the weights 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 isDirected()
    Indicates if the graph is directed.
    boolean isWeighted()
    Indicates if the graph is weighted.
    boolean removeEdge​(U nodeA, U nodeB)
    Removes an edge from the graph.
    boolean removeNode​(U node)
    Removes a node from the graph.
    boolean updateEdgeType​(U orig, U dest, int type)
    Updates the type of an edge.
    boolean updateEdgeWeight​(U orig, U dest, double weight)
    Updates the weight of an edge.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

  • Constructor Details

  • Method Details

    • addNode

      public boolean addNode​(U node)
      Description copied from interface: Graph
      Adds a new node to the graph.
      Specified by:
      addNode in interface Graph<U>
      Parameters:
      node - The new node to add.
      Returns:
      true if the node is correctly added, false if not.
    • addEdge

      public boolean addEdge​(U nodeA, U nodeB, double weight, int type, boolean insertNodes)
      Description copied from interface: Graph
      Adds a weighted edge to the graph.
      Specified by:
      addEdge in interface Graph<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.
    • removeNode

      public boolean removeNode​(U node)
      Description copied from interface: Graph
      Removes a node from the graph.
      Specified by:
      removeNode in interface Graph<U>
      Parameters:
      node - Node to remove.
      Returns:
      true if the edge is correctly removed, false if not.
    • removeEdge

      public boolean removeEdge​(U nodeA, U nodeB)
      Description copied from interface: Graph
      Removes an edge from the graph.
      Specified by:
      removeEdge in interface Graph<U>
      Parameters:
      nodeA - The incident node of the edge to remove.
      nodeB - The adjacent node of the edge to remove.
      Returns:
      true if everything went ok, false if not.
    • getAllNodes

      public java.util.stream.Stream<U> getAllNodes()
      Description copied from interface: Graph
      Gets all the nodes in the graph.
      Specified by:
      getAllNodes in interface Graph<U>
      Returns:
      a stream of all the nodes in the graph.
    • getIncidentNodes

      public java.util.stream.Stream<U> getIncidentNodes​(U node)
      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 interface Graph<U>
      Parameters:
      node - The node.
      Returns:
      A stream of the incident nodes.
    • getAdjacentNodes

      public java.util.stream.Stream<U> getAdjacentNodes​(U node)
      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 interface Graph<U>
      Parameters:
      node - The node.
      Returns:
      A stream containing the adjacent nodes.
    • getNeighbourNodes

      public java.util.stream.Stream<U> getNeighbourNodes​(U node)
      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 interface Graph<U>
      Parameters:
      node - The node.
      Returns:
      A stream containing all the nodes in the neighbourhood.
    • getMutualNodes

      public java.util.stream.Stream<U> getMutualNodes​(U node)
      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 interface Graph<U>
      Parameters:
      node - The node.
      Returns:
      A stream containing all the nodes which share reciprocal links.
    • getNeighbourhood

      public java.util.stream.Stream<U> getNeighbourhood​(U node, EdgeOrientation direction)
      Description copied from interface: Graph
      Gets all the nodes in the neighbourhood of a node given by a direction.
      Specified by:
      getNeighbourhood in interface Graph<U>
      Parameters:
      node - The node.
      direction - The direction of the links.
      Returns:
      A stream containing the corresponding neighbourhood.
    • getIncidentEdgesCount

      public int getIncidentEdgesCount​(U node)
      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 interface Graph<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

      public int getAdjacentEdgesCount​(U node)
      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 interface Graph<U>
      Parameters:
      node - The node.
      Returns:
      the degree of the node if it is contained in the graph, -1 if not.
    • getNeighbourEdgesCount

      public int getNeighbourEdgesCount​(U node)
      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 interface Graph<U>
      Parameters:
      node - The node.
      Returns:
      the degree of the node if it is contained in the graph, -1 if not.
    • getMutualEdgesCount

      public int getMutualEdgesCount​(U node)
      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 interface Graph<U>
      Parameters:
      node - The node.
      Returns:
      the number of reciprocal links starting from the node.
    • getNeighbourhoodSize

      public int getNeighbourhoodSize​(U node, EdgeOrientation direction)
      Description copied from interface: Graph
      Gets all the nodes in the neighbourhood of a node given by a direction.
      Specified by:
      getNeighbourhoodSize in interface Graph<U>
      Parameters:
      node - The node.
      direction - The direction of the links.
      Returns:
      A stream containing the corresponding neighbourhood.
    • containsVertex

      public boolean containsVertex​(U node)
      Description copied from interface: Graph
      Checks if a vertex exists in the graph.
      Specified by:
      containsVertex in interface Graph<U>
      Parameters:
      node - The vertex to check.
      Returns:
      true if the vertex is contained in the graph, false if not.
    • containsEdge

      public boolean containsEdge​(U nodeA, U nodeB)
      Description copied from interface: Graph
      Checks if an edge exists in the graph.
      Specified by:
      containsEdge in interface Graph<U>
      Parameters:
      nodeA - The incident node.
      nodeB - The adjacent node.
      Returns:
      true if the edge is contained in the graph, false if not.
    • getEdgeWeight

      public double getEdgeWeight​(U nodeA, U nodeB)
      Description copied from interface: Graph
      Obtains the weight of an edge in the graph
      Specified by:
      getEdgeWeight in interface Graph<U>
      Parameters:
      nodeA - The incident node.
      nodeB - The adjacent node.
      Returns:
      The corresponding weight. If the edge does not exist, NaN
    • getIncidentNodesWeights

      public java.util.stream.Stream<Weight<U,​java.lang.Double>> getIncidentNodesWeights​(U node)
      Description copied from interface: Graph
      Given a node, finds the weights of the edges from the nodes u such that the edge (u to node) is in the graph.
      Specified by:
      getIncidentNodesWeights in interface Graph<U>
      Parameters:
      node - The node.
      Returns:
      A stream containing the adjacent nodes and weights.
    • getAdjacentNodesWeights

      public java.util.stream.Stream<Weight<U,​java.lang.Double>> getAdjacentNodesWeights​(U node)
      Description copied from interface: Graph
      Given a node, finds the weights of the edges towards the nodes u such that the edge (node to u) is in the graph.
      Specified by:
      getAdjacentNodesWeights in interface Graph<U>
      Parameters:
      node - The node.
      Returns:
      A stream containing the adjacent nodes and weights.
    • getNeighbourNodesWeights

      public java.util.stream.Stream<Weight<U,​java.lang.Double>> getNeighbourNodesWeights​(U node)
      Description copied from interface: Graph
      Given a node, finds the weights 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:
      getNeighbourNodesWeights in interface Graph<U>
      Parameters:
      node - The node.
      Returns:
      A stream containing all the nodes in the neighbourhood and weights.
    • getMutualNodesWeights

      public java.util.stream.Stream<Weight<U,​java.lang.Double>> getMutualNodesWeights​(U node)
      Description copied from interface: Graph
      Given a node, finds the weights of the edges towards and from the nodes u such that the edge (node to u) and the edge (u to node) are in the graph. It finds the average value of the outgoing and incoming links.
      Specified by:
      getMutualNodesWeights in interface Graph<U>
      Parameters:
      node - The node.
      Returns:
      A stream containing all the nodes in the neighbourhood and weights.
    • getAdjacentMutualNodesWeights

      public java.util.stream.Stream<Weight<U,​java.lang.Double>> getAdjacentMutualNodesWeights​(U node)
      Description copied from interface: Graph
      Given a node, finds the weights 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:
      getAdjacentMutualNodesWeights in interface Graph<U>
      Parameters:
      node - The node.
      Returns:
      A stream containing all the nodes in the neighbourhood and weights.
    • getIncidentMutualNodesWeights

      public java.util.stream.Stream<Weight<U,​java.lang.Double>> getIncidentMutualNodesWeights​(U node)
      Description copied from interface: Graph
      Given a node, finds the weights 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:
      getIncidentMutualNodesWeights in interface Graph<U>
      Parameters:
      node - The node.
      Returns:
      A stream containing all the nodes in the neighbourhood and weights.
    • getNeighbourhoodWeights

      public java.util.stream.Stream<Weight<U,​java.lang.Double>> getNeighbourhoodWeights​(U node, EdgeOrientation direction)
      Description copied from interface: Graph
      Gets all the weights of the edges in the neighbourhood of a node given by a direction. In the mutual case, just returns the average of the edge weights.
      Specified by:
      getNeighbourhoodWeights in interface Graph<U>
      Parameters:
      node - The node.
      direction - The direction of the links
      Returns:
      A stream containing the corresponding neighbourhood and weights.
    • getEdgeType

      public int getEdgeType​(U nodeA, U nodeB)
      Description copied from interface: Graph
      Obtains the type of an edge in the graph
      Specified by:
      getEdgeType in interface Graph<U>
      Parameters:
      nodeA - The incident node.
      nodeB - The adjacent node.
      Returns:
      The corresponding type. If the edge does not exist, -1.
    • getIncidentNodesTypes

      public java.util.stream.Stream<Weight<U,​java.lang.Integer>> getIncidentNodesTypes​(U node)
      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 interface Graph<U>
      Parameters:
      node - The node.
      Returns:
      A stream of the incident nodes and types.
    • getAdjacentNodesTypes

      public java.util.stream.Stream<Weight<U,​java.lang.Integer>> getAdjacentNodesTypes​(U node)
      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 interface Graph<U>
      Parameters:
      node - The node.
      Returns:
      A stream containing the adjacent nodes and types.
    • getNeighbourNodesTypes

      public java.util.stream.Stream<Weight<U,​java.lang.Integer>> getNeighbourNodesTypes​(U node)
      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 interface Graph<U>
      Parameters:
      node - The node.
      Returns:
      A stream containing all the nodes in the neighbourhood and types.
    • getMutualNodesTypes

      public java.util.stream.Stream<Weight<U,​java.lang.Integer>> getMutualNodesTypes​(U node)
      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 interface Graph<U>
      Parameters:
      node - the node.
      Returns:
      a stream containing all the nodes in the neighbourhood and types.
    • getAdjacentMutualNodesTypes

      public java.util.stream.Stream<Weight<U,​java.lang.Integer>> getAdjacentMutualNodesTypes​(U node)
      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 interface Graph<U>
      Parameters:
      node - The node.
      Returns:
      A stream containing all the nodes in the neighbourhood and types.
    • getIncidentMutualNodesTypes

      public java.util.stream.Stream<Weight<U,​java.lang.Integer>> getIncidentMutualNodesTypes​(U node)
      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 interface Graph<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 interface Graph<U>
      Parameters:
      node - The node.
      direction - The direction of the links.
      Returns:
      A stream containing the corresponding neighbourhood.
    • isDirected

      public boolean isDirected()
      Description copied from interface: Graph
      Indicates if the graph is directed.
      Specified by:
      isDirected in interface Graph<U>
      Returns:
      true if it is, false if not.
    • isWeighted

      public boolean isWeighted()
      Description copied from interface: Graph
      Indicates if the graph is weighted.
      Specified by:
      isWeighted in interface Graph<U>
      Returns:
      true if it is, false if not.
    • getVertexCount

      public long getVertexCount()
      Description copied from interface: Graph
      Measures the number of nodes in the network.
      Specified by:
      getVertexCount in interface Graph<U>
      Returns:
      the number of nodes.
    • getEdgeCount

      public long getEdgeCount()
      Description copied from interface: Graph
      Measures the number of edges in the network.
      Specified by:
      getEdgeCount in interface Graph<U>
      Returns:
      the number of edges.
    • getAdjacencyMatrix

      public double[][] getAdjacencyMatrix​(EdgeOrientation direction)
      Description copied from interface: Graph
      Gets the adjacency matrix.
      Specified by:
      getAdjacencyMatrix in interface Graph<U>
      Parameters:
      direction - The direction of the edges.
      Returns:
      the adjacency matrix.
    • complement

      public Graph<U> complement()
      Description copied from interface: Graph
      Complements the graph
      Specified by:
      complement in interface Graph<U>
      Returns:
      the complementary graph.
    • updateEdgeWeight

      public boolean updateEdgeWeight​(U orig, U dest, double weight)
      Description copied from interface: Graph
      Updates the weight of an edge.
      Specified by:
      updateEdgeWeight in interface Graph<U>
      Parameters:
      orig - The incident node.
      dest - The adjacent node.
      weight - The new weight.
      Returns:
      true if everything goes OK, false if the edge does not exist or something fails.
    • updateEdgeType

      public boolean updateEdgeType​(U orig, U dest, int type)
      Description copied from interface: Graph
      Updates the type of an edge.
      Specified by:
      updateEdgeType in interface Graph<U>
      Parameters:
      orig - The incident node.
      dest - The adjacent node.
      type - The new type.
      Returns:
      true if everything goes OK, false if the edge does not exist or something fails.
    • getIsolatedNodes

      public java.util.stream.Stream<U> getIsolatedNodes()
      Description copied from interface: Graph
      Obtains the set of nodes without edges.
      Specified by:
      getIsolatedNodes in interface Graph<U>
      Returns:
      the set of nodes without edges.
    • getNodesWithNeighbors

      public java.util.stream.Stream<U> getNodesWithNeighbors​(EdgeOrientation direction)
      Description copied from interface: Graph
      Obtains the set of nodes with edges in a particular direction.
      Specified by:
      getNodesWithNeighbors in interface Graph<U>
      Parameters:
      direction - the particular direction
      Returns:
      the set of nodes with edges in the given direction.
    • getNodesWithAdjacentNeighbors

      public java.util.stream.Stream<U> getNodesWithAdjacentNeighbors()
      Description copied from interface: Graph
      Obtains the set of nodes which have adjacent edges.
      Specified by:
      getNodesWithAdjacentNeighbors in interface Graph<U>
      Returns:
      the set of nodes which have adjacent edges.
    • getNodesWithIncidentNeighbors

      public java.util.stream.Stream<U> getNodesWithIncidentNeighbors()
      Description copied from interface: Graph
      Obtains the set of nodes which have incident edges.
      Specified by:
      getNodesWithIncidentNeighbors in interface Graph<U>
      Returns:
      the set of nodes which have incident edges.
    • getNodesWithNeighbors

      public java.util.stream.Stream<U> getNodesWithNeighbors()
      Description copied from interface: Graph
      Obtains the set of nodes having either incident or adjacent edges.
      Specified by:
      getNodesWithNeighbors in interface Graph<U>
      Returns:
      the set of nodes which have incident or adjacent edges.
    • getNodesWithMutualNeighbors

      public java.util.stream.Stream<U> getNodesWithMutualNeighbors()
      Description copied from interface: Graph
      Obtains the set of nodes having mutual edges.
      Specified by:
      getNodesWithMutualNeighbors in interface Graph<U>
      Returns:
      the set of nodes which have mutual edges.
    • hasAdjacentNeighbors

      public boolean hasAdjacentNeighbors​(U u)
      Description copied from interface: Graph
      Checks if the user has adjacent edges or not.
      Specified by:
      hasAdjacentNeighbors in interface Graph<U>
      Parameters:
      u - The user.
      Returns:
      true if the user has adjacent edges, false if it is a sink or isolated node.
    • hasIncidentNeighbors

      public boolean hasIncidentNeighbors​(U u)
      Description copied from interface: Graph
      Checks if the user has incident edges or not.
      Specified by:
      hasIncidentNeighbors in interface Graph<U>
      Parameters:
      u - the user.
      Returns:
      true if the user has incident edges, false if it is a source or isolated node.
    • hasNeighbors

      public boolean hasNeighbors​(U u)
      Description copied from interface: Graph
      Checks if the user shares at least an edge with other user.
      Specified by:
      hasNeighbors in interface Graph<U>
      Parameters:
      u - The user.
      Returns:
      true if the user is not isolated, false otherwise.
    • hasMutualNeighbors

      public boolean hasMutualNeighbors​(U u)
      Description copied from interface: Graph
      Checks if the user has mutual edges.
      Specified by:
      hasMutualNeighbors in interface Graph<U>
      Parameters:
      u - The user.
      Returns:
      true if the user has mutual edges, false otherwise.
    • getAdjacencyMatrixMap

      public Index<U> getAdjacencyMatrixMap()
      Description copied from interface: Graph
      For an adjacency matrix, obtains the mapping between indexes and nodes.
      Specified by:
      getAdjacencyMatrixMap in interface Graph<U>
      Returns:
      the mapping between indexes and nodes.