1
+ < html >
2
+ < head >
3
+ < title >
4
+ Minimum Spanning Tree Weighted Graph (Eager Prim)
5
+ </ title >
6
+ < script src ="../third-party-libs/vis/vis.js " type ="text/javascript "> </ script >
7
+ < script src ="../src/jsgraphs.js " type ="text/javascript "> </ script >
8
+ < link href ="../third-party-libs/vis/vis.css " type ="text/css " />
9
+ </ head >
10
+
11
+ < body >
12
+ < h2 > Minimum Spanning Tree Weighted Graph (Eager Prim)</ h2 >
13
+ < div id ="mynetwork "> </ div >
14
+
15
+ < script type ="text/javascript ">
16
+ ( function ( ) {
17
+ var g = new jsgraphs . WeightedGraph ( 8 ) ;
18
+
19
+ g . addEdge ( new jsgraphs . Edge ( 0 , 7 , 0.16 ) ) ;
20
+ g . addEdge ( new jsgraphs . Edge ( 2 , 3 , 0.17 ) ) ;
21
+ g . addEdge ( new jsgraphs . Edge ( 1 , 7 , 0.19 ) ) ;
22
+ g . addEdge ( new jsgraphs . Edge ( 0 , 2 , 0.26 ) ) ;
23
+ g . addEdge ( new jsgraphs . Edge ( 5 , 7 , 0.28 ) ) ;
24
+ g . addEdge ( new jsgraphs . Edge ( 1 , 3 , 0.29 ) ) ;
25
+ g . addEdge ( new jsgraphs . Edge ( 1 , 5 , 0.32 ) ) ;
26
+ g . addEdge ( new jsgraphs . Edge ( 2 , 7 , 0.34 ) ) ;
27
+ g . addEdge ( new jsgraphs . Edge ( 4 , 5 , 0.35 ) ) ;
28
+ g . addEdge ( new jsgraphs . Edge ( 1 , 2 , 0.36 ) ) ;
29
+ g . addEdge ( new jsgraphs . Edge ( 4 , 7 , 0.37 ) ) ;
30
+ g . addEdge ( new jsgraphs . Edge ( 0 , 4 , 0.38 ) ) ;
31
+ g . addEdge ( new jsgraphs . Edge ( 6 , 2 , 0.4 ) ) ;
32
+ g . addEdge ( new jsgraphs . Edge ( 3 , 6 , 0.52 ) ) ;
33
+ g . addEdge ( new jsgraphs . Edge ( 6 , 0 , 0.58 ) ) ;
34
+ g . addEdge ( new jsgraphs . Edge ( 6 , 4 , 0.93 ) ) ;
35
+
36
+ var prim = new jsgraphs . EagerPrimMST ( g ) ;
37
+ var mst = prim . mst ;
38
+
39
+
40
+ var g_nodes = [ ] ;
41
+ var g_edges = [ ] ;
42
+ for ( var v = 0 ; v < g . V ; ++ v ) {
43
+ g . node ( v ) . label = 'Node ' + v ; // assigned 'Node {v}' as label for node v
44
+ g_nodes . push ( {
45
+ id : v ,
46
+ label : g . node ( v ) . label
47
+ } ) ;
48
+ }
49
+
50
+ for ( var i = 0 ; i < mst . length ; ++ i ) {
51
+ var e = mst [ i ] ;
52
+ var v = e . either ( ) ;
53
+ var w = e . other ( v ) ;
54
+ e . highlighted = true ;
55
+ console . log ( '(' + v + ', ' + w + '): ' + e . weight ) ;
56
+ g_edges . push ( {
57
+ from : v ,
58
+ to : w ,
59
+ length : e . weight ,
60
+ label : '' + e . weight ,
61
+ color : '#ff0000' ,
62
+ value : 2
63
+ } ) ;
64
+ }
65
+
66
+ for ( var v = 0 ; v < g . V ; ++ v ) {
67
+
68
+ var adj_v = g . adj ( v ) ;
69
+ for ( var i = 0 ; i < adj_v . length ; ++ i ) {
70
+ var e = adj_v [ i ] ;
71
+ var w = e . other ( v ) ;
72
+ if ( w > v ) continue ; // make sure only one edge between w and v since the graph is undirected
73
+ if ( e . highlighted ) continue ;
74
+
75
+ g_edges . push ( {
76
+ from : v ,
77
+ to : w ,
78
+ length : e . weight ,
79
+ label : '' + e . weight
80
+ } ) ;
81
+ } ;
82
+ }
83
+
84
+ console . log ( g . V ) ; // display 6, which is the number of vertices in g
85
+ console . log ( g . adj ( 0 ) ) ; // display [5, 1, 2], which is the adjacent list to vertex 0
86
+
87
+ var nodes = new vis . DataSet ( g_nodes ) ;
88
+
89
+ // create an array with edges
90
+ var edges = new vis . DataSet ( g_edges ) ;
91
+
92
+ // create a network
93
+ var container = document . getElementById ( 'mynetwork' ) ;
94
+ var data = {
95
+ nodes : nodes ,
96
+ edges : edges
97
+ } ;
98
+ var options = { } ;
99
+ var network = new vis . Network ( container , data , options ) ;
100
+ } ) ( ) ;
101
+ </ script >
102
+ </ body >
103
+ </ html >
0 commit comments