1
2
3
4
5
6
7
8
9
10
11
12 package edu.uci.ics.jung.algorithms.scoring.util;
13
14 import com.google.common.base.Function;
15
16 import edu.uci.ics.jung.graph.Hypergraph;
17 import edu.uci.ics.jung.graph.util.EdgeType;
18
19
20
21
22
23
24
25
26
27
28
29
30 public class UniformDegreeWeight<V, E> implements
31 Function<VEPair<V, E>, Double>
32 {
33 private Hypergraph<V, E> graph;
34
35
36
37
38 public UniformDegreeWeight(Hypergraph<V, E> graph)
39 {
40 this.graph = graph;
41 }
42
43 public Double apply(VEPair<V, E> ve_pair)
44 {
45 E e = ve_pair.getE();
46 V v = ve_pair.getV();
47 EdgeType edge_type = graph.getEdgeType(e);
48 if (edge_type == EdgeType.UNDIRECTED)
49 return 1.0 / graph.degree(v);
50 if (edge_type == EdgeType.DIRECTED)
51 return 1.0 / graph.outDegree(graph.getSource(e));
52 throw new IllegalArgumentException("can't handle edge type: " + edge_type);
53 }
54
55 }