Skip to content

Commit 54aa73f

Browse files
Fixes bugs in graphs/dijkstra_algorithm.py (#10092)
* Fixes bug in PriorityQueue Algorithm; Fixes syntax in code for array. * Update dijkstra_algorithm.py * Update dijkstra_algorithm.py * Update dijkstra_algorithm.py * Update dijkstra_algorithm.py --------- Co-authored-by: Maxim Smolskiy <mithridatus@mail.ru>
1 parent 84f101c commit 54aa73f

File tree

1 file changed

+7
-19
lines changed

1 file changed

+7
-19
lines changed

graphs/dijkstra_algorithm.py

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -52,45 +52,33 @@ def min_heapify(self, idx):
5252
5353
>>> priority_queue_test.array = [(5, 'A'), (10, 'B'), (15, 'C')]
5454
>>> priority_queue_test.min_heapify(0)
55-
Traceback (most recent call last):
56-
...
57-
TypeError: 'list' object is not callable
5855
>>> priority_queue_test.array
5956
[(5, 'A'), (10, 'B'), (15, 'C')]
6057
6158
>>> priority_queue_test.array = [(10, 'A'), (5, 'B'), (15, 'C')]
6259
>>> priority_queue_test.min_heapify(0)
63-
Traceback (most recent call last):
64-
...
65-
TypeError: 'list' object is not callable
6660
>>> priority_queue_test.array
67-
[(10, 'A'), (5, 'B'), (15, 'C')]
61+
[(5, 'B'), (10, 'A'), (15, 'C')]
6862
6963
>>> priority_queue_test.array = [(10, 'A'), (15, 'B'), (5, 'C')]
7064
>>> priority_queue_test.min_heapify(0)
71-
Traceback (most recent call last):
72-
...
73-
TypeError: 'list' object is not callable
7465
>>> priority_queue_test.array
75-
[(10, 'A'), (15, 'B'), (5, 'C')]
66+
[(5, 'C'), (15, 'B'), (10, 'A')]
7667
7768
>>> priority_queue_test.array = [(10, 'A'), (5, 'B')]
7869
>>> priority_queue_test.cur_size = len(priority_queue_test.array)
7970
>>> priority_queue_test.pos = {'A': 0, 'B': 1}
8071
>>> priority_queue_test.min_heapify(0)
81-
Traceback (most recent call last):
82-
...
83-
TypeError: 'list' object is not callable
8472
>>> priority_queue_test.array
85-
[(10, 'A'), (5, 'B')]
73+
[(5, 'B'), (10, 'A')]
8674
"""
8775
lc = self.left(idx)
8876
rc = self.right(idx)
89-
if lc < self.cur_size and self.array(lc)[0] < self.array[idx][0]:
77+
if lc < self.cur_size and self.array[lc][0] < self.array[idx][0]:
9078
smallest = lc
9179
else:
9280
smallest = idx
93-
if rc < self.cur_size and self.array(rc)[0] < self.array[smallest][0]:
81+
if rc < self.cur_size and self.array[rc][0] < self.array[smallest][0]:
9482
smallest = rc
9583
if smallest != idx:
9684
self.swap(idx, smallest)
@@ -130,12 +118,12 @@ def extract_min(self):
130118
>>> priority_queue_test.extract_min()
131119
'C'
132120
>>> priority_queue_test.array[0]
133-
(15, 'B')
121+
(10, 'A')
134122
"""
135123
min_node = self.array[0][1]
136124
self.array[0] = self.array[self.cur_size - 1]
137125
self.cur_size -= 1
138-
self.min_heapify(1)
126+
self.min_heapify(0)
139127
del self.pos[min_node]
140128
return min_node
141129

0 commit comments

Comments
 (0)