Class AlternativeGiniFastGreedy<U>

java.lang.Object
es.uam.eps.ir.relison.sna.community.detection.modularity.balanced.AlternativeGiniFastGreedy<U>
Type Parameters:
U - Type of the users
All Implemented Interfaces:
CommunityDetectionAlgorithm<U>, DendogramCommunityDetectionAlgorithm<U>

public class AlternativeGiniFastGreedy<U>
extends java.lang.Object
implements CommunityDetectionAlgorithm<U>, DendogramCommunityDetectionAlgorithm<U>
Alternative version of Fast Greedy algorithm for optimizing modularity, taking into account the Gini of the size of communities.
  • Field Summary

    Fields 
    Modifier and Type Field Description
    private double lambda
    Balance between modularity and the Gini of the size of communities
    private int optimalNumComms
    The optimal number of communities.
  • Constructor Summary

    Constructors 
    Constructor Description
    AlternativeGiniFastGreedy​(double lambda)
    Constructor.
  • Method Summary

    Modifier and Type Method Description
    Communities<U> detectCommunities​(Graph<U> graph)
    Computes the communities for a certain graph.
    Dendogram<U> detectCommunityDendogram​(Graph<U> graph)
    Computes the community dendogram for a certain graph.
    private org.jooq.lambda.tuple.Tuple4<java.lang.Integer,​java.lang.Integer,​java.lang.Double,​java.lang.Double> findOptimalJoint​(Graph<U> graph, Communities<U> comm, it.unimi.dsi.fastutil.doubles.Double2DoubleMap freqs, java.util.List<java.lang.Double> sizes, double oldGini)
    Finds the optimal two communities to join.
    private double norm​(double value, es.uam.eps.ir.ranksys.core.util.Stats stats)
    Normalizes scores, following a Min-Max convention.

    Methods inherited from class java.lang.Object

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

    • lambda

      private final double lambda
      Balance between modularity and the Gini of the size of communities
    • optimalNumComms

      private int optimalNumComms
      The optimal number of communities.
  • Constructor Details

    • AlternativeGiniFastGreedy

      public AlternativeGiniFastGreedy​(double lambda)
      Constructor.
      Parameters:
      lambda - balance between modularity and the Gini of the size of communities
  • Method Details

    • detectCommunities

      public Communities<U> detectCommunities​(Graph<U> graph)
      Description copied from interface: CommunityDetectionAlgorithm
      Computes the communities for a certain graph.
      Specified by:
      detectCommunities in interface CommunityDetectionAlgorithm<U>
      Parameters:
      graph - The full graph.
      Returns:
      The communities if everything went OK, null if not.
    • detectCommunityDendogram

      public Dendogram<U> detectCommunityDendogram​(Graph<U> graph)
      Description copied from interface: DendogramCommunityDetectionAlgorithm
      Computes the community dendogram for a certain graph.
      Specified by:
      detectCommunityDendogram in interface DendogramCommunityDetectionAlgorithm<U>
      Parameters:
      graph - The full graph.
      Returns:
      The dendogram if everything went OK, null if not.
    • findOptimalJoint

      private org.jooq.lambda.tuple.Tuple4<java.lang.Integer,​java.lang.Integer,​java.lang.Double,​java.lang.Double> findOptimalJoint​(Graph<U> graph, Communities<U> comm, it.unimi.dsi.fastutil.doubles.Double2DoubleMap freqs, java.util.List<java.lang.Double> sizes, double oldGini)
      Finds the optimal two communities to join.
      Parameters:
      graph - The graph
      comm - The current community division
      freqs - map containing the sizes of communities as keys, and the number of communities with that size as value (thus allowing fast Gini computing)
      sizes - community sizes.
      oldGini - Gini for the previous iteration.
      Returns:
      A 4-tuple containing: the id for the first comm. to join, the identifier for the second, the modularity increment and the Gini increment.
    • norm

      private double norm​(double value, es.uam.eps.ir.ranksys.core.util.Stats stats)
      Normalizes scores, following a Min-Max convention.
      Parameters:
      value - The original value
      stats - The statistics of the distribution
      Returns:
      the normalized value.