@@ -185,6 +185,46 @@ def _test_minimum_spanning_tree(func, ds, algorithm, *args):
185
185
for k , v in mst .edge_weights .items ():
186
186
assert (k , v .value ) in expected_mst
187
187
188
+ def _test_minimum_spanning_tree_cpp (ds , algorithm , * args ):
189
+ if (ds == 'List' and algorithm == "prim" ):
190
+ a1 = AdjacencyListGraphNode ('a' , 0 , backend = Backend .CPP )
191
+ b1 = AdjacencyListGraphNode ('b' , 0 , backend = Backend .CPP )
192
+ c1 = AdjacencyListGraphNode ('c' , 0 , backend = Backend .CPP )
193
+ d1 = AdjacencyListGraphNode ('d' , 0 , backend = Backend .CPP )
194
+ e1 = AdjacencyListGraphNode ('e' , 0 , backend = Backend .CPP )
195
+ g = Graph (a1 , b1 , c1 , d1 , e1 , backend = Backend .CPP )
196
+ g .add_edge (a1 .name , c1 .name , 10 )
197
+ g .add_edge (c1 .name , a1 .name , 10 )
198
+ g .add_edge (a1 .name , d1 .name , 7 )
199
+ g .add_edge (d1 .name , a1 .name , 7 )
200
+ g .add_edge (c1 .name , d1 .name , 9 )
201
+ g .add_edge (d1 .name , c1 .name , 9 )
202
+ g .add_edge (d1 .name , b1 .name , 32 )
203
+ g .add_edge (b1 .name , d1 .name , 32 )
204
+ g .add_edge (d1 .name , e1 .name , 23 )
205
+ g .add_edge (e1 .name , d1 .name , 23 )
206
+ mst = minimum_spanning_tree (g , "prim" , backend = Backend .CPP )
207
+ expected_mst = ["('a', 'd', 7)" , "('d', 'c', 9)" , "('e', 'd', 23)" , "('b', 'd', 32)" ,
208
+ "('d', 'a', 7)" , "('c', 'd', 9)" , "('d', 'e', 23)" , "('d', 'b', 32)" ]
209
+ assert str (mst .get_edge ('a' , 'd' )) in expected_mst
210
+ assert str (mst .get_edge ('e' , 'd' )) in expected_mst
211
+ assert str (mst .get_edge ('d' , 'c' )) in expected_mst
212
+ assert str (mst .get_edge ('b' , 'd' )) in expected_mst
213
+ assert mst .num_edges () == 8
214
+ a = AdjacencyListGraphNode ('0' , 0 , backend = Backend .CPP )
215
+ b = AdjacencyListGraphNode ('1' , 0 , backend = Backend .CPP )
216
+ c = AdjacencyListGraphNode ('2' , 0 , backend = Backend .CPP )
217
+ d = AdjacencyListGraphNode ('3' , 0 , backend = Backend .CPP )
218
+ g2 = Graph (a ,b ,c ,d ,backend = Backend .CPP )
219
+ g2 .add_edge ('0' , '1' , 74 )
220
+ g2 .add_edge ('1' , '0' , 74 )
221
+ g2 .add_edge ('0' , '3' , 55 )
222
+ g2 .add_edge ('3' , '0' , 55 )
223
+ g2 .add_edge ('1' , '2' , 74 )
224
+ g2 .add_edge ('2' , '1' , 74 )
225
+ mst2 = minimum_spanning_tree (g2 , "prim" , backend = Backend .CPP )
226
+ assert mst2 .num_edges () == 6
227
+
188
228
fmst = minimum_spanning_tree
189
229
fmstp = minimum_spanning_tree_parallel
190
230
_test_minimum_spanning_tree (fmst , "List" , "kruskal" )
@@ -193,6 +233,7 @@ def _test_minimum_spanning_tree(func, ds, algorithm, *args):
193
233
_test_minimum_spanning_tree (fmstp , "List" , "kruskal" , 3 )
194
234
_test_minimum_spanning_tree (fmstp , "Matrix" , "kruskal" , 3 )
195
235
_test_minimum_spanning_tree (fmstp , "List" , "prim" , 3 )
236
+ _test_minimum_spanning_tree_cpp ("List" , "prim" )
196
237
197
238
def test_strongly_connected_components ():
198
239
0 commit comments