Changeset 8


Ignore:
Timestamp:
Sep 11, 2010, 4:12:16 PM (14 years ago)
Author:
gnappo
Message:

Aggiunta la libreria Jung per lavorare con i grafi. Primi esperimenti. A breve riorganizzazione completa del codice per usufruire della libreria.

Files:
21 added
4 edited

Legend:

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

    r7 r8  
    1313        private static boolean debug = true;
    1414        private static PrintStream debugStream = System.err;
    15         private static int nodesContracted = 5;
     15        private static int finerSize = 5;
    1616
    1717        /**
     
    6161                                        map.set(g.getIndex(matchedNode), labelCounter);
    6262                                        if(debug) debugStream.println("Contracting node " + u + " with " + matchedNode + ". Node id: " + getMappedNode(g, map, u));
    63                                 } else
     63                                } else {
    6464                                        map.set(g.getIndex(u), labelCounter);
     65                                        if(debug) debugStream.println("Node " + u + " with " + " new node id: " + getMappedNode(g, map, u));
     66                                }
    6567                                labelCounter++;
    6668                        }
     
    106108                //calcolo dei pesi del nuovo grafo: per ogni arco (u,v) && u < v.
    107109                //w(map(u),map(v)) += w(u,v).
    108                 for(int u=0; u < g.size(); u++) {
     110                for(int i=0; i < g.size(); i++) {
     111                        int u = g.getLabel(i);
    109112                        Iterator<Integer> it = g.getNeighbors(u).iterator();
    110113                        while(it.hasNext()) {
     
    115118                        }
    116119                }
    117                 for(int u = 0; u < g.size(); u++) {
     120                for(int i=0; i < g.size(); i++) {
     121                        int u = g.getLabel(i);
    118122                        if(isMatched(g,match,u)) {
    119123                                int v = getMatchedNode(g,match,u);
     
    159163                if(debug)
    160164                        debugStream.println("-----------------------------------------------------");
    161             } while(e.getProjected().size() > e.getContracted().size() && e.getContracted().size() > nodesContracted);
     165            } while(e.getProjected().size() > e.getContracted().size() && e.getContracted().size() > finerSize);
    162166            return stack;
    163167        }
     168
     169        public static void setFinerSize(int i) {
     170                finerSize = i;
     171        }
    164172}
  • src/main/java/weka/clusterers/forMetisMQI/GraphAlgorithms.java

    r7 r8  
    2323        public void METIS(Graph g) {
    2424                KLPartition partition = null;
     25                Coarse.setFinerSize(10);
    2526                Stack<CoarserGraphElement> stack = Coarse.coarse(g);
    2627               
     
    3233                }
    3334               
     35                MQI.start(partition);
     36               
    3437        }
    3538
  • src/main/java/weka/clusterers/forMetisMQI/KLPartition.java

    r7 r8  
    3333                a = new Subgraph(g);
    3434                b = new Subgraph(g);
    35                 Random r = Random.instance();
    36                 for(int i=0;i<g.size();i++) {
    37                         if(r.nextBoolean())
    38                                 a.addNode(g.getLabel(i));
     35                Iterator<Integer> graph = g.vtxsPermutation().iterator();
     36                int i = 0;
     37                while(graph.hasNext()) {
     38                        int u = graph.next();
     39                        if((i%2)==0)
     40                                a.addNode(u);
    3941                        else
    40                                 b.addNode(g.getLabel(i));
     42                                b.addNode(u);
     43                        i++;
    4144                }
    4245                marked = new ArrayList<Integer>();
  • src/main/java/weka/clusterers/forMetisMQI/Subgraph.java

    r7 r8  
    99import java.util.TreeSet;
    1010import java.util.Map.Entry;
    11 
    12 import weka.clusterers.forMetisMQI.Graph.NodeInfo;
    1311
    1412public class Subgraph {
     
    134132        }
    135133       
     134        public int getWeight(int u, int v) {
     135                int ret = -1;
     136                if(isEdge(u,v))
     137                        ret = g.getWeight(u, v);
     138                return ret;
     139        }
     140       
    136141        public Iterator<Integer> iterator() {
    137142                return listOfNodes.iterator();
Note: See TracChangeset for help on using the changeset viewer.