source: src/main/java/weka/clusterers/forMetisMQI/GraphAlgorithms.java @ 11

Last change on this file since 11 was 11, checked in by gnappo, 14 years ago

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

File size: 1.2 KB
Line 
1package weka.clusterers.forMetisMQI;
2
3import java.util.Stack;
4
5import weka.clusterers.forMetisMQI.coarse.Coarse;
6import weka.clusterers.forMetisMQI.coarse.CoarserGraphElement;
7import weka.clusterers.forMetisMQI.graph.Bisection;
8import weka.clusterers.forMetisMQI.graph.Node;
9import weka.clusterers.forMetisMQI.graph.UndirectedGraph;
10
11public class GraphAlgorithms {
12       
13        public Bisection KL(UndirectedGraph g) {
14                Bisection partition = new Bisection(g);
15                Bisection result = partition;
16                int bestEdgeCut = Integer.MAX_VALUE;
17                Node u = partition.getCandidate();
18                while(u != null) {
19                        partition.swap(u);
20                        if(partition.edgeCut() <=  bestEdgeCut) {
21                                bestEdgeCut = partition.edgeCut();
22                                result = partition.copy();
23                        }
24                        u = partition.getCandidate();
25                }
26                return result;
27        }
28       
29        public void METIS(UndirectedGraph g) {
30                MQI.viewGraph(g);
31                Bisection partition = null;
32                Coarse.setFinerSize(8);
33                Stack<CoarserGraphElement> stack = Coarse.coarse(g);
34                if(stack.size() > 0) {
35                        partition = KL(stack.peek().getContracted());
36                        System.out.println(partition.toString());
37                        partition = new Uncoarse().uncoarse(stack, partition);
38                        System.out.println(partition.toString());
39                }
40                System.out.println("AAAAAA");
41                System.out.println(MQI.mqi(partition).toString());
42               
43        }
44
45}
Note: See TracBrowser for help on using the repository browser.