public double getChi2(Graph g) { double chi2 = Double.MAX_VALUE; for (int i = 0; i < components.length; i++) { chi2 = Math.min(chi2, -2 * Math.log(weights[i]) + components[i].getChi2(g)); } return chi2; }
public Linearization linearize(Graph g, Linearization lin) { double bestChi2 = Double.MAX_VALUE; GEdge bestEdge = null; int besti = -1; for (int i = 0; i < components.length; i++) { double thisChi2 = -2 * Math.log(weights[i]) + components[i].getChi2(g); if (thisChi2 < bestChi2) { bestChi2 = thisChi2; bestEdge = components[i]; besti = i; } System.out.printf("%d %15f\n", i, thisChi2); } System.out.println("besti: " + besti); return bestEdge.linearize(g, lin); }