V - Type of verticesE - Type of edgespublic class GoldbergMaximumDensitySubgraphAlgorithm<V,E> extends GoldbergMaximumDensitySubgraphAlgorithmBase<V,E>
GoldbergMaximumDensitySubgraphAlgorithmBase
 for further details
 
 This variant of the algorithm assumes the density of a positive real-weighted graph G=(V,E) to be
 defined as \[\frac{\sum\limits_{e \in E} w(e)}{\left|{V}\right|}\] and sets the weights of the
 network from GoldbergMaximumDensitySubgraphAlgorithmBase as proposed in the above paper.
 For this case the weights of the network must be chosen to be: \[c_{ij}=w(ij)\,\forall \{i,j\}\in
 E\] \[c_{it}=m+2g-d_i\,\forall i \in V\] \[c_{si}=m\,\forall i \in V\] where $m=\left|{E}\right|$
 and $d_i$ is the degree of vertex $i$. 
 All the math to prove the correctness of these weights is the same as in
 GoldbergMaximumDensitySubgraphAlgorithmBase. 
 
 Because the density is per definition guaranteed to be rational, the distance of 2 possible
 solutions for the maximum density can't be smaller than $\frac{1}{W(W-1)}$. This means shrinking
 the binary search interval to this size, the correct solution is found. The runtime can in this
 case be given by $O(M(n,n+m)\log{W})$, where $M(n,m)$ is the runtime of the internally used
 MinimumSTCutAlgorithm and $W$ is the sum of all weights from $G$.
 
graph, guess| Constructor and Description | 
|---|
| GoldbergMaximumDensitySubgraphAlgorithm(Graph<V,E> graph,
                                       V s,
                                       V t,
                                       double epsilon)Convenience constructor that uses PushRelabel as default MinimumSTCutAlgorithm | 
| GoldbergMaximumDensitySubgraphAlgorithm(Graph<V,E> graph,
                                       V s,
                                       V t,
                                       double epsilon,
                                       Function<Graph<V,DefaultWeightedEdge>,MinimumSTCutAlgorithm<V,DefaultWeightedEdge>> algFactory)Constructor | 
| Modifier and Type | Method and Description | 
|---|---|
| protected double | computeDensityDenominator(Graph<V,E> g) | 
| protected double | computeDensityNumerator(Graph<V,E> g) | 
| protected double | getEdgeWeightFromSourceToVertex(V v)Getter for network weights of edges su for u in V | 
| protected double | getEdgeWeightFromVertexToSink(V v)Getter for network weights of edges ut for u in V | 
calculateDensest, getDensitypublic GoldbergMaximumDensitySubgraphAlgorithm(Graph<V,E> graph, V s, V t, double epsilon, Function<Graph<V,DefaultWeightedEdge>,MinimumSTCutAlgorithm<V,DefaultWeightedEdge>> algFactory)
algFactory - factory to construct the algorithm to usegraph - input for computations - additional source vertext - additional target vertexepsilon - to use for internal computationpublic GoldbergMaximumDensitySubgraphAlgorithm(Graph<V,E> graph, V s, V t, double epsilon)
graph - input for computations - additional source vertext - additional target vertexepsilon - to use for internal computationprotected double getEdgeWeightFromSourceToVertex(V v)
getEdgeWeightFromSourceToVertex in class GoldbergMaximumDensitySubgraphAlgorithmBase<V,E>v - of Vprotected double getEdgeWeightFromVertexToSink(V v)
getEdgeWeightFromVertexToSink in class GoldbergMaximumDensitySubgraphAlgorithmBase<V,E>v - of Vprotected double computeDensityNumerator(Graph<V,E> g)
computeDensityNumerator in class GoldbergMaximumDensitySubgraphAlgorithmBase<V,E>g - the graph to compute the numerator density fromprotected double computeDensityDenominator(Graph<V,E> g)
computeDensityDenominator in class GoldbergMaximumDensitySubgraphAlgorithmBase<V,E>g - the graph to compute the denominator density fromCopyright © 2019. All rights reserved.