in src/benchmarks/java/org/apache/commons/graph/spanning/MinimumSpanningTreeBenchmarkTestCase.java [60:115]
public static void setUp()
{
weightedEdges = new Mapper<BaseLabeledWeightedEdge<Double>, Double>()
{
public Double map( BaseLabeledWeightedEdge<Double> input )
{
return input.getWeight();
}
};
graph = newUndirectedMutableGraph( new AbstractGraphConnection<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>>()
{
Random r = new Random();
private boolean addEdge( BaseLabeledVertex src, BaseLabeledVertex dst )
{
try {
addEdge( new BaseLabeledWeightedEdge<Double>( format( "%s -> %s", src, dst ),
(double) r.nextInt(10) ) ).from( src ).to( dst );
return true;
} catch (GraphException e) {
// ignore duplicate edge exceptions
return false;
}
}
public void connect()
{
List<BaseLabeledVertex> vertices = new ArrayList<BaseLabeledVertex>();
for ( int i = 0; i < NODES; i++ )
{
BaseLabeledVertex v = new BaseLabeledVertex( valueOf( i ) );
addVertex( v );
vertices.add( v );
}
// form a connected graph
for ( int i = 0; i < NODES - 1; i++ )
{
addEdge( vertices.get( i ), vertices.get( i + 1 ) );
}
addEdge( vertices.get( NODES - 1 ) , vertices.get( 0 ) );
// we have already created #NODES edges
int maxEdges = Math.max(0, EDGES - NODES);
for ( int i = 0; i < maxEdges; i++)
{
while ( ! addEdge( vertices.get( r.nextInt(NODES) ), vertices.get( r.nextInt(NODES) ) ) ) {
// do nothing
}
}
}
} );
}