double[][] tWeights = { { 40, 10, 1 }, { 10, 70, 60 }, { 40 }, { 40 },
{ 50, 1, 10, 20 }, { 40 }, { 10 }, { 10 }, { 10 } };
double[] tSmooth = { 1.1, 2, 2, 2, 2, 2, 2, 2, 2 };
NodeLabel[] tLabels = { new NodeLabel("h"), new NodeLabel("d"),
new NodeLabel("c"), new NodeLabel("g"), new NodeLabel("b"),
new NodeLabel("a"), new NodeLabel("e"), new NodeLabel("f"),
new NodeLabel("i"), };
Tree t = new Tree(tEdges, tWeights, tSmooth, tLabels);
int[][] sEdges = { { 3 }, { 2, 8 }, { 3, 1 }, { 0, 4, 2 },
{ 3, 6, 5, 7 }, { 4 }, { 4 }, { 4 }, { 1 } };
double[][] sWeights = { { 30 }, { 20, 1 }, { 30, 10 }, { 10, 40, 20 },
{ 30, 60, 1, 70 }, { 40 }, { 40 }, { 40 }, { 10 } };
double[] sSmooth = { 2, 2, 1.2, 2, 2, 2, 2, 2, 2 };
NodeLabel[] sLabels = { new NodeLabel("a"), new NodeLabel("c"),
new NodeLabel("j"), new NodeLabel("b"), new NodeLabel("d"),
new NodeLabel("i"), new NodeLabel("e"), new NodeLabel("f"),
new NodeLabel("k"), };
CostFunction w = new CostFunction() {
@Override
public double cost(NodeLabel l1, NodeLabel l2) {