Package org.graphstream.algorithm
Class Centroid
java.lang.Object
org.graphstream.algorithm.Centroid
- All Implemented Interfaces:
Algorithm
public class Centroid extends Object implements Algorithm
Compute the centroid of a connected graph.
In a graph G, if d(u,v) is the shortest length between two nodes u and v (ie the number of edges of the shortest path) let m(u) be the sum of d(u,v) for all nodes v of G. Centroid of a graph G is a subgraph induced by vertices u with minimum m(u).
Requirements
This algorithm needs that APSP algorithm has been computed before its own computation.
Example
import java.io.StringReader; import java.io.IOException; import org.graphstream.algorithm.APSP; import org.graphstream.algorithm.Centroid; import org.graphstream.graph.Graph; import org.graphstream.graph.Node; import org.graphstream.graph.implementations.DefaultGraph; import org.graphstream.stream.file.FileSourceDGS; // +--- E // A --- B --- C -- D -|--- F // +--- G public class CentroidTest { static String my_graph = "DGS004\n" + "my 0 0\n" + "an A \n" + "an B \n" + "an C \n" + "an D \n" + "an E \n" + "an F \n" + "an G \n" + "ae AB A B \n" + "ae BC B C \n" + "ae CD C D \n" + "ae DE D E \n" + "ae DF D F \n" + "ae DG D G \n"; public static void main(String[] args) throws IOException { Graph graph = new DefaultGraph("Centroid Test"); StringReader reader = new StringReader(my_graph); FileSourceDGS source = new FileSourceDGS(); source.addSink(graph); source.readAll(reader); APSP apsp = new APSP(); apsp.init(graph); apsp.compute(); Centroid centroid = new Centroid(); centroid.init(graph); centroid.compute(); for (Node n : graph.getEachNode()) { Boolean in = n.getAttribute("centroid"); System.out.printf("%s is%s in the centroid.\n", n.getId(), in ? "" : " not"); } // Output will be : // // A is not in the centroid // B is not in the centroid // C is not in the centroid // D is in the centroid // E is not in the centroid // F is not in the centroid // G is not in the centroid } }
- See Also:
APSP.APSPInfo
- Computational Complexity :
- O(n2)
- Scientific Reference :
- F. Harary, Graph Theory. Westview Press, Oct. 1969. [Online]. Available: http://www.amazon.com/exec/obidos/ redirect?tag=citeulike07-20\&path=ASIN/ 0201410338
-
Constructor Summary
Constructors Constructor Description Centroid()
Build a new centroid algorithm with default parameters.Centroid(String centroidAttribute)
Build a new centroid algorithm, specifying the attribute name of the computation resultCentroid(String centroidAttribute, Object isInCentroid, Object isNotInCentroid)
Build a new centroid as inCentroid(String)
but specifying values of centroid membership.Centroid(String centroidAttribute, Object isInCentroid, Object isNotInCentroid, String apspInfoAttribute)
Build a new centroid algorithm as inCentroid(String, Object, Object)
but specifying the name of the attribute where the APSP informations are stored. -
Method Summary
Modifier and Type Method Description void
compute()
Run the algorithm.String
defaultResult()
String
getAPSPInfoAttribute()
Get the APSP info attribute name.String
getCentroidAttribute()
Get the name of the attribute where computation result is stored.Object
getIsInCentroidValue()
Get the value of the centroid attribute when element is in the centroid.Object
getIsNotInCentroidValue()
Get the value of the centroid attribute when element is not in the centroid.void
init(org.graphstream.graph.Graph graph)
Initialization of the algorithm.void
setAPSPInfoAttribute(String attribute)
Set the APSP info attribute name.void
setCentroidAttribute(String centroidAttribute)
Set the name of the attribute where computation result is stored.void
setIsInCentroidValue(Object value)
Set the value of the centroid attribute when element is in the centroid.void
setIsNotInCentroidValue(Object value)
Set the value of the centroid attribute when element is not in the centroid.
-
Constructor Details
-
Centroid
public Centroid()Build a new centroid algorithm with default parameters. -
Centroid
Build a new centroid algorithm, specifying the attribute name of the computation result- Parameters:
centroidAttribute
- attribute name of the computation result.
-
Centroid
Build a new centroid as inCentroid(String)
but specifying values of centroid membership.- Parameters:
centroidAttribute
- attribute name of the computation result.isInCentroid
- the value of elements centroid attribute when this element is in the centroid.isNotInCentroid
- the value of elements centroid attribute when this element is not in the centroid.
-
Centroid
public Centroid(String centroidAttribute, Object isInCentroid, Object isNotInCentroid, String apspInfoAttribute)Build a new centroid algorithm as inCentroid(String, Object, Object)
but specifying the name of the attribute where the APSP informations are stored.- Parameters:
centroidAttribute
- attribute name of the computation result.isInCentroid
- the value of elements centroid attribute when this element is in the centroid.isNotInCentroid
- the value of elements centroid attribute when this element is not in the centroid.apspInfoAttribute
- the name of the attribute where the APSP informations are stored
-
-
Method Details
-
init
public void init(org.graphstream.graph.Graph graph)Description copied from interface:Algorithm
Initialization of the algorithm. This method has to be called before theAlgorithm.compute()
method to initialize or reset the algorithm according to the new given graph. -
compute
public void compute()Description copied from interface:Algorithm
Run the algorithm. TheAlgorithm.init(Graph)
method has to be called before computing.- Specified by:
compute
in interfaceAlgorithm
- See Also:
Algorithm.init(Graph)
-
getAPSPInfoAttribute
Get the APSP info attribute name.- Returns:
- the name of the attribute where the APSP informations are stored.
-
setAPSPInfoAttribute
Set the APSP info attribute name.- Parameters:
attribute
- the name of the attribute where the APSP informations are stored.
-
getIsInCentroidValue
Get the value of the centroid attribute when element is in the centroid. Default value is Boolean.TRUE.- Returns:
- the value of elements centroid attribute when this element is in the centroid.
-
setIsInCentroidValue
Set the value of the centroid attribute when element is in the centroid. On computation, this value is used to set the centroid attribute.- Parameters:
value
- the value of elements centroid attribute when this element is in the centroid.
-
getIsNotInCentroidValue
Get the value of the centroid attribute when element is not in the centroid. Default value is Boolean.FALSE.- Returns:
- the value of elements centroid attribute when this element is not in the centroid.
-
setIsNotInCentroidValue
Set the value of the centroid attribute when element is not in the centroid. On computation, this value is used to set the centroid attribute.- Parameters:
value
- the value of elements centroid attribute when this element is not in the centroid.
-
getCentroidAttribute
Get the name of the attribute where computation result is stored. Value of this attribute can begetIsInCentroidValue()
if the element is in the centroid,getIsNotInCentroidValue()
else.- Returns:
- the centroid attribute name.
-
setCentroidAttribute
Set the name of the attribute where computation result is stored.- Parameters:
centroidAttribute
- the name of the element attribute where computation result is stored.
-
defaultResult
-