26
26
27
27
28
28
class Graph :
29
- """Class Graph."""
30
-
31
29
def __init__ (self , num_of_nodes : int ) -> None :
32
30
"""
33
31
Arguments:
@@ -58,9 +56,7 @@ def find_component(self, u_node: int) -> int:
58
56
def set_component (self , u_node : int ) -> None :
59
57
"""Finds the component index of a given node"""
60
58
61
- if self .m_component [u_node ] == u_node :
62
- return
63
- else :
59
+ if self .m_component [u_node ] != u_node :
64
60
for k in self .m_component .keys ():
65
61
self .m_component [k ] = self .find_component (k )
66
62
@@ -79,8 +75,6 @@ def union(self, component_size: list, u_node: int, v_node: int) -> None:
79
75
component_size [u_node ] += component_size [v_node ]
80
76
self .set_component (v_node )
81
77
82
- print (self .m_component )
83
-
84
78
def boruvka (self ) -> None :
85
79
"""Performs Borůvka's algorithm to find MST."""
86
80
@@ -98,7 +92,8 @@ def boruvka(self) -> None:
98
92
num_of_components = self .m_v
99
93
100
94
while num_of_components > 1 :
101
- for i in range (len (self .m_edges )):
95
+ l_edges = len (self .m_edges )
96
+ for i in range (l_edges ):
102
97
103
98
u = self .m_edges [i ][0 ]
104
99
v = self .m_edges [i ][1 ]
@@ -119,13 +114,13 @@ def boruvka(self) -> None:
119
114
we're observing to it"""
120
115
121
116
if (
122
- minimum_weight_edge [u_component ] == - 1
123
- or minimum_weight_edge [u_component ][2 ] > w
117
+ minimum_weight_edge [u_component ] == - 1
118
+ or minimum_weight_edge [u_component ][2 ] > w
124
119
):
125
120
minimum_weight_edge [u_component ] = [u , v , w ]
126
121
if (
127
- minimum_weight_edge [v_component ] == - 1
128
- or minimum_weight_edge [v_component ][2 ] > w
122
+ minimum_weight_edge [v_component ] == - 1
123
+ or minimum_weight_edge [v_component ][2 ] > w
129
124
):
130
125
minimum_weight_edge [v_component ] = [u , v , w ]
131
126
@@ -172,31 +167,24 @@ def test_vector() -> None:
172
167
>>> g.add_edge(5, 7, 15)
173
168
>>> g.add_edge(6, 7, 4)
174
169
>>> g.boruvka()
175
- {0: 3, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7}
176
170
Added edge [0 - 3]
177
171
Added weight: 5
178
172
<BLANKLINE>
179
- {0: 3, 1: 3, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7}
180
173
Added edge [0 - 1]
181
174
Added weight: 10
182
175
<BLANKLINE>
183
- {0: 3, 1: 3, 2: 3, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7}
184
176
Added edge [2 - 3]
185
177
Added weight: 4
186
178
<BLANKLINE>
187
- {0: 3, 1: 3, 2: 3, 3: 3, 4: 7, 5: 5, 6: 6, 7: 7}
188
179
Added edge [4 - 7]
189
180
Added weight: 5
190
181
<BLANKLINE>
191
- {0: 3, 1: 3, 2: 3, 3: 3, 4: 7, 5: 7, 6: 6, 7: 7}
192
182
Added edge [4 - 5]
193
183
Added weight: 10
194
184
<BLANKLINE>
195
- {0: 3, 1: 3, 2: 3, 3: 3, 4: 7, 5: 7, 6: 7, 7: 7}
196
185
Added edge [6 - 7]
197
186
Added weight: 4
198
187
<BLANKLINE>
199
- {0: 7, 1: 7, 2: 7, 3: 7, 4: 7, 5: 7, 6: 7, 7: 7}
200
188
Added edge [3 - 4]
201
189
Added weight: 8
202
190
<BLANKLINE>
0 commit comments