View Javadoc
1   /**
2    * Copyright (c) 2008, The JUNG Authors 
3    *
4    * All rights reserved.
5    *
6    * This software is open-source under the BSD license; see either
7    * "license.txt" or
8    * https://github.com/jrtom/jung/blob/master/LICENSE for a description.
9    * Created on Sep 17, 2008
10   * 
11   */
12  package edu.uci.ics.jung.algorithms.scoring;
13  
14  import junit.framework.TestCase;
15  
16  import com.google.common.base.Function;
17  
18  import edu.uci.ics.jung.graph.DirectedSparseGraph;
19  import edu.uci.ics.jung.graph.Graph;
20  
21  /**
22   *
23   */
24  public class TestBetweennessCentrality extends TestCase 
25  {
26  //    public void testUndirected() {
27  //        UndirectedGraph<Integer,Integer> graph = 
28  //        	new UndirectedSparseGraph<Integer,Integer>();
29  //        for(int i=0; i<9; i++) {
30  //        	graph.addVertex(i);
31  //        }
32  //
33  //		int edge = 0;
34  //		graph.addEdge(edge++, 0,1);
35  //		graph.addEdge(edge++, 0,6);
36  //		graph.addEdge(edge++, 1,2);
37  //		graph.addEdge(edge++, 1,3);
38  //		graph.addEdge(edge++, 2,4);
39  //		graph.addEdge(edge++, 3,4);
40  //		graph.addEdge(edge++, 4,5);
41  //		graph.addEdge(edge++, 5,8);
42  //		graph.addEdge(edge++, 7,8);
43  //		graph.addEdge(edge++, 6,7);
44  //
45  //        BetweennessCentrality<Integer,Integer> bc = 
46  //        	new BetweennessCentrality<Integer,Integer>(graph);
47  //        
48  ////        System.out.println("scoring");
49  ////        for (int i = 0; i < graph.getVertexCount(); i++) 
50  ////        	  System.out.println(String.format("%d: %f", i, bc.getVertexScore(i)));
51  //
52  //        Assert.assertEquals(bc.getVertexScore(0),6.000,.001);
53  //        Assert.assertEquals(bc.getVertexScore(1),7.833,.001);
54  //        Assert.assertEquals(bc.getVertexScore(2),2.500,.001);
55  //        Assert.assertEquals(bc.getVertexScore(3),2.500,.001);
56  //        Assert.assertEquals(bc.getVertexScore(4),7.833,.001);
57  //        Assert.assertEquals(bc.getVertexScore(5),6.000,.001);
58  //        Assert.assertEquals(bc.getVertexScore(6),4.666,.001);
59  //        Assert.assertEquals(bc.getVertexScore(7),4.000,.001);
60  //        Assert.assertEquals(bc.getVertexScore(8),4.666,.001);
61  //
62  //        Assert.assertEquals(bc.getEdgeScore(graph.findEdge(0,1)),10.666,.001);
63  //        Assert.assertEquals(bc.getEdgeScore(graph.findEdge(0,6)),9.333,.001);
64  //        Assert.assertEquals(bc.getEdgeScore(graph.findEdge(1,2)),6.500,.001);
65  //        Assert.assertEquals(bc.getEdgeScore(graph.findEdge(1,3)),6.500,.001);
66  //        Assert.assertEquals(bc.getEdgeScore(graph.findEdge(2,4)),6.500,.001);
67  //        Assert.assertEquals(bc.getEdgeScore(graph.findEdge(3,4)),6.500,.001);
68  //        Assert.assertEquals(bc.getEdgeScore(graph.findEdge(4,5)),10.666,.001);
69  //        Assert.assertEquals(bc.getEdgeScore(graph.findEdge(5,8)),9.333,.001);
70  //        Assert.assertEquals(bc.getEdgeScore(graph.findEdge(6,7)),8.000,.001);
71  //        Assert.assertEquals(bc.getEdgeScore(graph.findEdge(7,8)),8.000,.001);
72  //    }
73  //    
74  //    public void testDirected() 
75  //    {
76  //    	DirectedGraph<Integer,Integer> graph = new DirectedSparseGraph<Integer,Integer>();
77  //    	for(int i=0; i<5; i++) 
78  //    		graph.addVertex(i);
79  //
80  //    	int edge=0;
81  //    	graph.addEdge(edge++, 0,1);
82  //    	graph.addEdge(edge++, 1,2);
83  //    	graph.addEdge(edge++, 3,1);
84  //    	graph.addEdge(edge++, 4,2);
85  //
86  //    	BetweennessCentrality<Integer,Integer> bc = 
87  //    		new BetweennessCentrality<Integer,Integer>(graph);
88  //
89  //    	Assert.assertEquals(bc.getVertexScore(0),0,.001);
90  //    	Assert.assertEquals(bc.getVertexScore(1),2,.001);
91  //    	Assert.assertEquals(bc.getVertexScore(2),0,.001);
92  //    	Assert.assertEquals(bc.getVertexScore(3),0,.001);
93  //    	Assert.assertEquals(bc.getVertexScore(4),0,.001);
94  //
95  //    	Assert.assertEquals(bc.getEdgeScore(graph.findEdge(0,1)),2,.001);
96  //    	Assert.assertEquals(bc.getEdgeScore(graph.findEdge(1,2)),3,.001);
97  //    	Assert.assertEquals(bc.getEdgeScore(graph.findEdge(3,1)),2,.001);
98  //    	Assert.assertEquals(bc.getEdgeScore(graph.findEdge(4,2)),1,.001);
99  //    }
100     
101     public void testWeighted()
102     {
103     	Graph<Integer, Character> graph = new DirectedSparseGraph<Integer, Character>();
104     	
105     	for(int i=0; i<5; i++) 
106     		graph.addVertex(i);
107 
108     	char edge='a';
109     	graph.addEdge(edge++, 0,1);
110     	graph.addEdge(edge++, 0,2);
111     	graph.addEdge(edge++, 2,3);
112     	graph.addEdge(edge++, 3,1);
113     	graph.addEdge(edge++, 1,4);
114 
115     	final int weights[] = {1, 1, 1, 1, 1};
116     	
117     	Function<Character, Integer> edge_weights = new Function<Character, Integer>()
118     	{
119 			public Integer apply(Character arg0) { return weights[arg0 - 'a']; }
120     	};
121     	
122     	BetweennessCentrality<Integer,Character> bc = 
123     		new BetweennessCentrality<Integer,Character>(graph, edge_weights);
124 
125 //    	System.out.println("scoring");
126 //    	System.out.println("(weighted)");
127 //    	System.out.println("vertices:");
128 //    	for (int i = 0; i < graph.getVertexCount(); i++) 
129 //    		System.out.println(String.format("%d: %f", i, bc.getVertexScore(i)));
130 //    	System.out.println("edges:");
131 //    	for (int i = 0; i < graph.getEdgeCount(); i++) 
132 //    	{
133 //    		char e = (char)(i + 'a');
134 //    		System.out.println(String.format("%c: (weight: %d), %f", e, 
135 //    				edge_weights.apply(e), bc.getEdgeScore(e)));
136 //    	}
137     }
138 }