org.jgrapht.generate.SimpleWeightedGraphMatrixGenerator Maven / Gradle / Ivy
/* This program and the accompanying materials are dual-licensed under
* either
*
* (a) the terms of the GNU Lesser General Public License version 2.1
* as published by the Free Software Foundation, or (at your option) any
* later version.
*
* or (per the licensee's choosing)
*
* (b) the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation.
*/
package org.jgrapht.generate;
import java.util.*;
import org.jgrapht.*;
public class SimpleWeightedGraphMatrixGenerator
extends WeightedGraphGeneratorAdapter
{
protected List vertices;
///////////////////////////////////////////////////////////////////////////////////////////////
public static int [] range(final int from, final int to)
{
int [] range = new int[to - from];
for (int i = from; i < to; ++i) {
range[i - from] = i;
}
return range;
}
///////////////////////////////////////////////////////////////////////////////////////////////
public SimpleWeightedGraphMatrixGenerator vertices(List vertices)
{
this.vertices = vertices;
return this;
}
@Override public void generateGraph(
WeightedGraph target,
VertexFactory vertexFactory,
Map resultMap)
{
if (weights == null) {
throw new IllegalArgumentException(
"Graph may not be constructed without weight-matrix specified");
}
if (vertices == null) {
throw new IllegalArgumentException(
"Graph may not be constructed without vertex-set specified");
}
assert vertices.size() == weights.length;
for (V vertex : vertices) {
target.addVertex(vertex);
}
for (int i = 0; i < vertices.size(); ++i) {
assert vertices.size() == weights[i].length;
for (int j = 0; j < vertices.size(); ++j) {
if (i != j) {
target.setEdgeWeight(
target.addEdge(vertices.get(i), vertices.get(j)),
weights[i][j]);
}
}
}
}
}
// End SimpleWeightedGraphMatrixGenerator.java