@@ -185,6 +185,46 @@ def _test_minimum_spanning_tree(func, ds, algorithm, *args):
185185 for k , v in mst .edge_weights .items ():
186186 assert (k , v .value ) in expected_mst
187187
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+
188228 fmst = minimum_spanning_tree
189229 fmstp = minimum_spanning_tree_parallel
190230 _test_minimum_spanning_tree (fmst , "List" , "kruskal" )
@@ -193,6 +233,7 @@ def _test_minimum_spanning_tree(func, ds, algorithm, *args):
193233 _test_minimum_spanning_tree (fmstp , "List" , "kruskal" , 3 )
194234 _test_minimum_spanning_tree (fmstp , "Matrix" , "kruskal" , 3 )
195235 _test_minimum_spanning_tree (fmstp , "List" , "prim" , 3 )
236+ _test_minimum_spanning_tree_cpp ("List" , "prim" )
196237
197238def test_strongly_connected_components ():
198239
0 commit comments