Ignore:
Timestamp:
Sep 14, 2010, 2:11:28 PM (14 years ago)
Author:
gnappo
Message:

Migrato il resto del codice verso Jung.

File:
1 edited

Legend:

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

    r8 r9  
    11package weka.clusterers.forMetisMQI;
    22
    3 import java.util.ArrayList;
     3import java.util.HashSet;
    44import java.util.Iterator;
    5 import java.util.List;
     5import java.util.Set;
    66
    77
     
    1212        private Subgraph b = null;
    1313       
    14         private List<Integer> marked = null;
     14        private Set<Node> marked = null;
    1515
    1616        private KLPartition() {
     
    1818       
    1919        public KLPartition(Subgraph s) {
    20                 Graph g  = s.getGraph();
     20                UndirectedGraph g  = s.getGraph();
    2121                a = s;
    2222                b = new Subgraph(g);
    23                 Iterator<Integer> graphIterator =  g.iterator();
     23                Iterator<Node> graphIterator =  g.getVertices().iterator();
    2424                while(graphIterator.hasNext()) {
    25                         int u = graphIterator.next();
     25                        Node u = graphIterator.next();
    2626                        if(!s.contains(u))
    27                                 b.addNode(u);
     27                                b.addVertex(u);
    2828                }
    29                 marked = new ArrayList<Integer>();
     29                marked = new HashSet<Node>();
    3030        }
    3131       
    32         public KLPartition(Graph g){
     32        public KLPartition(UndirectedGraph g){
    3333                a = new Subgraph(g);
    3434                b = new Subgraph(g);
    35                 Iterator<Integer> graph = g.vtxsPermutation().iterator();
     35                Iterator<Node> graph = g.vtxsPermutation().iterator();
    3636                int i = 0;
    3737                while(graph.hasNext()) {
    38                         int u = graph.next();
     38                        Node u = graph.next();
    3939                        if((i%2)==0)
    40                                 a.addNode(u);
     40                                a.addVertex(u);
    4141                        else
    42                                 b.addNode(u);
     42                                b.addVertex(u);
    4343                        i++;
    4444                }
    45                 marked = new ArrayList<Integer>();
     45                marked = new HashSet<Node>();
    4646        }
    4747       
    4848        /**
    49          * Returns the node marked as candidate for swapping or -1 if there aren't node available
     49         * Returns the node marked as candidate for swapping or <code>null</code> if there aren't node available
    5050         * for swapping.
    5151         * @return
    5252         */
    53         public int getCandidate() {
    54                 int u;
    55                 if(a.size() > b.size()) {
     53        public Node getCandidate() {
     54                Node u;
     55                if(a.getVertexCount() > b.getVertexCount()) {
    5656                        u = a.getCandidate(marked);
    57                         if(u == -1)
     57                        if(u == null)
    5858                                u = b.getCandidate(marked);
    5959                } else {
    6060                        u = b.getCandidate(marked);
    61                         if(u == -1)
     61                        if(u == null)
    6262                                u = a.getCandidate(marked);
    6363                }
    64                 if(u != -1) {
     64                if(u != null) {
    6565                        marked.add(u);
    6666                }
     
    6868        }
    6969       
    70         public void swap(int u) {
     70        public void swap(Node u) {
    7171                Subgraph from = fromSubgraph(u);
    7272                Subgraph to = toSubgraph(u);
    73                 from.remove(u);
    74                 to.addNode(u);
     73                from.removeVertex(u);
     74                to.addVertex(u);
    7575        }
    7676       
    77         private Subgraph fromSubgraph(int u) {
     77        private Subgraph fromSubgraph(Node u) {
    7878                Subgraph ret = null;
    7979                if(a.contains(u))
     
    8484        }
    8585       
    86         private Subgraph toSubgraph(int u) {
     86        private Subgraph toSubgraph(Node u) {
    8787                Subgraph ret = null;
    8888                if(!a.contains(u))
     
    106106        }
    107107       
    108         @Override
    109         public KLPartition clone(){
     108        public KLPartition copy(){
    110109                KLPartition clone = new KLPartition();
    111110                clone.a = (Subgraph) a.clone();
    112111                clone.b = (Subgraph) b.clone();
    113                 clone.marked = new ArrayList<Integer>();
    114                 for(int i = 0; i < marked.size(); i++) {
    115                         clone.marked.add(marked.get(i));
    116                 }
     112                clone.marked = new HashSet<Node>();
    117113                return clone;
    118114        }
Note: See TracChangeset for help on using the changeset viewer.