Ignore:
Timestamp:
Oct 9, 2010, 12:24:38 PM (14 years ago)
Author:
gnappo
Message:

Aggiunto output in formato XML dei dati; modificato MQI (adesso cerca nella partizione piu` grande).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/main/java/weka/clusterers/forMetisMQI/MQI.java

    r25 r26  
    1616import weka.clusterers.forMetisMQI.graph.Node;
    1717import weka.clusterers.forMetisMQI.graph.Subgraph;
     18import weka.clusterers.forMetisMQI.graph.UndirectedGraph;
    1819import edu.uci.ics.jung.algorithms.flows.EdmondsKarpMaxFlow;
    1920import edu.uci.ics.jung.graph.DirectedGraph;
     
    8384
    8485        static private DirectedGraph<Node, Edge> prepareDirectedGraph(
    85                         Bisection bisection, Node source, Node sink, boolean forConductance) {
    86                 Subgraph B = bisection.getLargerSubgraph();
    87                 Subgraph A = bisection.getSmallerSubgraph();
     86                        Subgraph A, Node source, Node sink, boolean forConductance) {
     87                Bisection bisection = new Bisection(A);
     88                Subgraph B = bisection.getComplement();
    8889                int a = 0;
    8990                if (!forConductance)
     
    161162        static public Set<Node> mqi(Bisection partition, boolean forConductance) {
    162163//              System.out.println("INITIAL BISECTION: " + partition.toString());
     164                UndirectedGraph startingGraph = partition.getGraph();
    163165                boolean finished = false;
    164166                Bisection bisection = partition;
    165                 Set<Node> cluster = new HashSet<Node>(partition.getSmallerSubgraph()
     167                Set<Node> cluster = new HashSet<Node>(partition.getLargerSubgraph()
    166168                                .createInducedSubgraph().getVertices());
    167169//              System.out.println("IMPROVING SUBGRAPH: " + cluster);
     
    170172                        Node source = new Node("$$$$S");
    171173                        Node sink = new Node("$$$$T");
    172                         DirectedGraph<Node, Edge> directedGraph = prepareDirectedGraph(
    173                                         bisection, source, sink, true);
     174                        Subgraph A = new Subgraph(startingGraph,cluster);
     175                        DirectedGraph<Node, Edge> directedGraph = prepareDirectedGraph(A, source, sink, true);
    174176                        Transformer<Edge, Number> capTransformer = new Transformer<Edge, Number>() {
    175177                                public Double transform(Edge e) {
     
    191193
    192194                        if (!forConductance)
    193                                 maxFlowThreshold = bisection.getLargerSubgraph()
    194                                                 .getVertexCount()
     195                                maxFlowThreshold = A.getVertexCount()
    195196                                                * bisection.edgeCut() / 2;
    196197                        else {
    197198//                              maxFlowThreshold = Math.min(bisection.getLargerSubgraph().totalDegree(), bisection.getSmallerSubgraph().totalDegree());
    198                                 maxFlowThreshold = bisection.getSmallerSubgraph().totalDegree();
     199                                maxFlowThreshold = A.totalDegree();
    199200                                maxFlowThreshold = maxFlowThreshold
    200201                                                * (bisection.edgeCut() / 2);
     
    216217//                              System.out.println("REFINED BISECTION: " + bisection.toString());
    217218                                if(Configuration.instance().getVerboseLevel() > 1)
    218                                         GraphsFrame.instance().addPanel(Util.panelCluster(bisection.getGraph(), cluster));
     219                                        GraphsFrame.instance().addPanel(Util.panelCluster(bisection.getGraph().clone(), cluster));
    219220                        } else
    220221                                finished = true;
Note: See TracChangeset for help on using the changeset viewer.