public class Centroid extends Object implements Algorithm
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).
This algorithm needs that APSP algorithm has been computed before its own computation.
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 } }
APSP.APSPInfo
Constructor and 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 result
|
Centroid(String centroidAttribute,
Object isInCentroid,
Object isNotInCentroid)
Build a new centroid as in
Centroid(String) but specifying
values of centroid membership. |
Centroid(String centroidAttribute,
Object isInCentroid,
Object isNotInCentroid,
String apspInfoAttribute)
Build a new centroid algorithm as in
Centroid(String, Object, Object) but specifying the name of the
attribute where the APSP informations are stored. |
Modifier and Type | Method and Description |
---|---|
void |
compute()
Run the algorithm.
|
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.
|
public Centroid()
public Centroid(String centroidAttribute)
centroidAttribute
- attribute name of the computation result.public Centroid(String centroidAttribute, Object isInCentroid, Object isNotInCentroid)
Centroid(String)
but specifying
values of centroid membership.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.public Centroid(String centroidAttribute, Object isInCentroid, Object isNotInCentroid, String apspInfoAttribute)
Centroid(String, Object, Object)
but specifying the name of the
attribute where the APSP informations are stored.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
storedpublic void init(org.graphstream.graph.Graph graph)
Algorithm
Algorithm.compute()
method to initialize or reset the algorithm according
to the new given graph.public void compute()
Algorithm
Algorithm.init(Graph)
method has to be called
before computing.compute
in interface Algorithm
Algorithm.init(Graph)
public String getAPSPInfoAttribute()
public void setAPSPInfoAttribute(String attribute)
attribute
- the name of the attribute where the APSP informations are
stored.public Object getIsInCentroidValue()
public void setIsInCentroidValue(Object value)
value
- the value of elements centroid attribute when this element is
in the centroid.public Object getIsNotInCentroidValue()
public void setIsNotInCentroidValue(Object value)
value
- the value of elements centroid attribute when this element is
not in the centroid.public String getCentroidAttribute()
getIsInCentroidValue()
if the element
is in the centroid, getIsNotInCentroidValue()
else.public void setCentroidAttribute(String centroidAttribute)
centroidAttribute
- the name of the element attribute where computation result is
stored.Copyright © 2015. All rights reserved.