public void find(Block b) { SpanningTree tree = new SpanningTree(b); List<Block> basis = CycleFinder.getCycleBasis(tree); int basisCounter = 0; for (Block cycle : basis) { System.out.println(basisCounter + "\t" + cycle); basisCounter++; } List<Block> all = new ArrayList<Block>(); CycleFinder.expand(basis, all, b); int fullCounter = 0; for (Block cycle : all) { System.out.println(fullCounter + "\t" + cycle.esize() + "\t" + cycle); fullCounter++; } // this assertion fails for disconnected graphs - does the CC number count in the formula? Assert.assertEquals((b.esize() - b.vsize() + 1), basisCounter); Assert.assertEquals((int) Math.pow(2, basisCounter), fullCounter); }
public void debugFind(Block b) { SpanningTree tree = new SpanningTree(b); List<Block> basis = CycleFinder.getCycleBasis(tree); List<BitSet> baseSets = new ArrayList<BitSet>(); int basisCounter = 0; for (Block cycle : basis) { baseSets.add(CycleFinder.cycleToBitSet(cycle, b)); System.out.println(basisCounter + "\t" + cycle); basisCounter++; } SubsetLister<BitSet> subsetLister = new SubsetLister<BitSet>(baseSets); int fullCounter = 0; for (List<BitSet> subSet : subsetLister) { if (!viable(subSet)) continue; BitSet bS = CycleFinder.combine(subSet); Block cycle = CycleFinder.toCycle(bS, b); System.out.println(fullCounter + "\t" + cycle.esize() + "\t" + cycle + "\t" + subSet); fullCounter++; } }