Ignore:
Timestamp:
Sep 16, 2010, 10:44:40 AM (14 years ago)
Author:
gnappo
Message:

Un po' di refactoring e implementazione dell'algoritmo di raffinamento.

Location:
src/main/java/weka/clusterers/forMetisMQI/graph
Files:
1 added
5 moved

Legend:

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

    r10 r11  
    1 package weka.clusterers.forMetisMQI;
     1package weka.clusterers.forMetisMQI.graph;
    22
    33import java.util.HashSet;
     
    66
    77
    8 public class KLPartition {
     8
     9public class Bisection {
    910       
    1011        private Subgraph a = null;
     
    1314       
    1415        private Set<Node> marked = null;
     16       
     17        private UndirectedGraph g = null;
    1518
    16         private KLPartition() {
     19        private Bisection() {
    1720        }
    1821       
    19         public KLPartition(Subgraph s) {
    20                 UndirectedGraph g  = s.getGraph();
     22        /**
     23         * Initialize the bisection with a given subgraph.
     24         * @param s
     25         */
     26        public Bisection(Subgraph s) {
     27                g  = s.getGraph();
    2128                a = s;
    2229                b = new Subgraph(g);
     
    3037        }
    3138       
    32         public KLPartition(UndirectedGraph g){
     39        /**
     40         * Creates a bisection choosing randomly the nodes for each subgraph.
     41         * @param g
     42         */
     43        public Bisection(UndirectedGraph g){
     44                this.g = g;
    3345                a = new Subgraph(g);
    3446                b = new Subgraph(g);
     
    4456                }
    4557                marked = new HashSet<Node>();
     58        }
     59       
     60        public UndirectedGraph getGraph() {
     61                return g;
    4662        }
    4763       
     
    106122        }
    107123       
    108         public KLPartition copy(){
    109                 KLPartition clone = new KLPartition();
     124        public Bisection copy(){
     125                Bisection clone = new Bisection();
    110126                clone.a = (Subgraph) a.clone();
    111127                clone.b = (Subgraph) b.clone();
  • src/main/java/weka/clusterers/forMetisMQI/graph/Edge.java

    r10 r11  
    1 package weka.clusterers.forMetisMQI;
     1package weka.clusterers.forMetisMQI.graph;
    22
    33public class Edge {
     
    4848        @Override
    4949        public String toString() {
    50                 return "E" + id + " w:" + weight;
     50                return Integer.toString(capacity);
    5151        }
    5252
  • src/main/java/weka/clusterers/forMetisMQI/graph/Node.java

    r10 r11  
    1 package weka.clusterers.forMetisMQI;
     1package weka.clusterers.forMetisMQI.graph;
    22
    33
  • src/main/java/weka/clusterers/forMetisMQI/graph/Subgraph.java

    r9 r11  
    1 package weka.clusterers.forMetisMQI;
     1package weka.clusterers.forMetisMQI.graph;
    22
    33import java.util.ArrayList;
     
    1111import java.util.Map.Entry;
    1212
     13import edu.uci.ics.jung.algorithms.filters.FilterUtils;
     14
     15
    1316public class Subgraph {
    1417       
     
    1720        private Set<Node> nodes = null;
    1821       
    19 //      private BitSet nodes = null;
    20 //      private List<Integer> listOfNodes = null;
    2122        private HashMap<Node,Integer> ID = null;
    2223        private HashMap<Node,Integer> ED = null;
     
    3435        }
    3536       
     37        public Subgraph(UndirectedGraph g, Set<Node> nodes) {
     38                this.g = g;
     39                this.nodes = new HashSet<Node>();
     40                this.ID = new HashMap<Node,Integer>();
     41                this.ED = new HashMap<Node,Integer>();
     42                this.bucketGain = new HashMap<Integer, List<Node>>();
     43                this.gainSet = new TreeSet<Integer>();
     44                Iterator<Node> nodesIterator = nodes.iterator();
     45                while(nodesIterator.hasNext()) {
     46                        addVertex(nodesIterator.next());
     47                }
     48        }
     49       
    3650        public UndirectedGraph getGraph() {
    3751                return g;
    3852        }
    3953       
     54        /**
     55         * Adds to the subgraph the node u iff u belongs to the graph.
     56         * @param u
     57         */
    4058        public void addVertex(Node u) {
    41                 nodes.add(u);
    42                 ID.put(u, 0);
    43                 ED.put(u, 0);
    44                 recomputeGain = true;
     59                if(g.containsVertex(u)) {
     60                        nodes.add(u);
     61                        ID.put(u, 0);
     62                        ED.put(u, 0);
     63                        recomputeGain = true;
     64                }
    4565        }
    4666       
     
    233253                return clone;
    234254        }
     255       
     256        public UndirectedGraph createInducedSubgraph() {
     257                return FilterUtils.createInducedSubgraph(nodes,g);
     258        }
    235259}
  • src/main/java/weka/clusterers/forMetisMQI/graph/UndirectedGraph.java

    r10 r11  
    1 package weka.clusterers.forMetisMQI;
     1package weka.clusterers.forMetisMQI.graph;
    22
    33import java.util.ArrayList;
     
    66import java.util.List;
    77
     8import weka.clusterers.forMetisMQI.Random;
    89import weka.core.Attribute;
    910import weka.core.Instance;
     
    8990                        g.addVertex(nodesIterator.next().clone());
    9091                }
    91                
    9292                Iterator<Edge> edgesIterator = getEdges().iterator();
    9393                while(edgesIterator.hasNext()) {
Note: See TracChangeset for help on using the changeset viewer.