aboutsummaryrefslogtreecommitdiff
path: root/src/uk/ac/ox/cs/pagoda/summary/EstimatedFeatureComparator.java
diff options
context:
space:
mode:
authoryzhou <yujiao.zhou@gmail.com>2015-04-21 10:34:27 +0100
committeryzhou <yujiao.zhou@gmail.com>2015-04-21 10:34:27 +0100
commit9ce65c5a963b03ee97fe9cb6c5aa65a3c04a80a8 (patch)
tree47511c0fb89dccff0db4b5990522e04f294d795b /src/uk/ac/ox/cs/pagoda/summary/EstimatedFeatureComparator.java
parentb1ac207612ee8b045244253fb94b866104bc34f2 (diff)
downloadACQuA-9ce65c5a963b03ee97fe9cb6c5aa65a3c04a80a8.tar.gz
ACQuA-9ce65c5a963b03ee97fe9cb6c5aa65a3c04a80a8.zip
initial version
Diffstat (limited to 'src/uk/ac/ox/cs/pagoda/summary/EstimatedFeatureComparator.java')
-rw-r--r--src/uk/ac/ox/cs/pagoda/summary/EstimatedFeatureComparator.java53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/uk/ac/ox/cs/pagoda/summary/EstimatedFeatureComparator.java b/src/uk/ac/ox/cs/pagoda/summary/EstimatedFeatureComparator.java
new file mode 100644
index 0000000..59fdf7f
--- /dev/null
+++ b/src/uk/ac/ox/cs/pagoda/summary/EstimatedFeatureComparator.java
@@ -0,0 +1,53 @@
1package uk.ac.ox.cs.pagoda.summary;
2
3import java.util.Comparator;
4import java.util.HashMap;
5import java.util.HashSet;
6import java.util.Map;
7
8public class EstimatedFeatureComparator implements Comparator<Node> {
9
10 Graph graph;
11 Map<Node, EstimatedFeature> node2features = new HashMap<Node, EstimatedFeature>();
12
13 public EstimatedFeatureComparator(Graph graph) {
14 this.graph = graph;
15 EstimatedFeature feature;
16 for (Node node: graph.getNodes()) {
17 feature = new EstimatedFeature(graph, node);
18 node2features.put(node, feature);
19 }
20 }
21
22 @Override
23 public int compare(Node o1, Node o2) {
24 EstimatedFeature f1 = node2features.get(o1), f2 = node2features.get(o2);
25 int result;
26 if ((result = o1.getLabel().compareTo(o2.getLabel())) != 0) return result;
27 if ((result = f1.outGoingNodeCount - f2.outGoingNodeCount) != 0) return result;
28 if ((result = f1.inComingNodeCount - f2.inComingNodeCount) != 0) return result;
29 if ((result = Edge.compareLabels(graph.getOutGoingEdges(o1), graph.getOutGoingEdges(o2))) != 0) return result;
30 result = Edge.compareLabels(graph.getInComingEdges(o1), graph.getInComingEdges(o2));
31 return result;
32 }
33
34}
35
36class EstimatedFeature {
37
38 int outGoingNodeCount, inComingNodeCount;
39
40 public EstimatedFeature(Graph graph, Node node) {
41 HashSet<String> neighbours = new HashSet<String>();
42 for (Edge edge: graph.getOutGoingEdges(node))
43 neighbours.add(edge.getToNodeName());
44 outGoingNodeCount = neighbours.size();
45
46 neighbours.clear();
47 for (Edge edge: graph.getInComingEdges(node))
48 neighbours.add(edge.getFromNodeName());
49 inComingNodeCount = neighbours.size();
50 }
51}
52
53