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>
This commit is contained in:
Praful Katare
2025-08-28 04:15:05 +05:30
committed by GitHub
parent 84f101ca6e
commit 54aa73fdf0

View File

@@ -52,45 +52,33 @@ class PriorityQueue:
>>> priority_queue_test.array = [(5, 'A'), (10, 'B'), (15, 'C')] >>> priority_queue_test.array = [(5, 'A'), (10, 'B'), (15, 'C')]
>>> priority_queue_test.min_heapify(0) >>> priority_queue_test.min_heapify(0)
Traceback (most recent call last):
...
TypeError: 'list' object is not callable
>>> priority_queue_test.array >>> priority_queue_test.array
[(5, 'A'), (10, 'B'), (15, 'C')] [(5, 'A'), (10, 'B'), (15, 'C')]
>>> priority_queue_test.array = [(10, 'A'), (5, 'B'), (15, 'C')] >>> priority_queue_test.array = [(10, 'A'), (5, 'B'), (15, 'C')]
>>> priority_queue_test.min_heapify(0) >>> priority_queue_test.min_heapify(0)
Traceback (most recent call last):
...
TypeError: 'list' object is not callable
>>> priority_queue_test.array >>> priority_queue_test.array
[(10, 'A'), (5, 'B'), (15, 'C')] [(5, 'B'), (10, 'A'), (15, 'C')]
>>> priority_queue_test.array = [(10, 'A'), (15, 'B'), (5, 'C')] >>> priority_queue_test.array = [(10, 'A'), (15, 'B'), (5, 'C')]
>>> priority_queue_test.min_heapify(0) >>> priority_queue_test.min_heapify(0)
Traceback (most recent call last):
...
TypeError: 'list' object is not callable
>>> priority_queue_test.array >>> priority_queue_test.array
[(10, 'A'), (15, 'B'), (5, 'C')] [(5, 'C'), (15, 'B'), (10, 'A')]
>>> priority_queue_test.array = [(10, 'A'), (5, 'B')] >>> priority_queue_test.array = [(10, 'A'), (5, 'B')]
>>> priority_queue_test.cur_size = len(priority_queue_test.array) >>> priority_queue_test.cur_size = len(priority_queue_test.array)
>>> priority_queue_test.pos = {'A': 0, 'B': 1} >>> priority_queue_test.pos = {'A': 0, 'B': 1}
>>> priority_queue_test.min_heapify(0) >>> priority_queue_test.min_heapify(0)
Traceback (most recent call last):
...
TypeError: 'list' object is not callable
>>> priority_queue_test.array >>> priority_queue_test.array
[(10, 'A'), (5, 'B')] [(5, 'B'), (10, 'A')]
""" """
lc = self.left(idx) lc = self.left(idx)
rc = self.right(idx) rc = self.right(idx)
if lc < self.cur_size and self.array(lc)[0] < self.array[idx][0]: if lc < self.cur_size and self.array[lc][0] < self.array[idx][0]:
smallest = lc smallest = lc
else: else:
smallest = idx smallest = idx
if rc < self.cur_size and self.array(rc)[0] < self.array[smallest][0]: if rc < self.cur_size and self.array[rc][0] < self.array[smallest][0]:
smallest = rc smallest = rc
if smallest != idx: if smallest != idx:
self.swap(idx, smallest) self.swap(idx, smallest)
@@ -130,12 +118,12 @@ class PriorityQueue:
>>> priority_queue_test.extract_min() >>> priority_queue_test.extract_min()
'C' 'C'
>>> priority_queue_test.array[0] >>> priority_queue_test.array[0]
(15, 'B') (10, 'A')
""" """
min_node = self.array[0][1] min_node = self.array[0][1]
self.array[0] = self.array[self.cur_size - 1] self.array[0] = self.array[self.cur_size - 1]
self.cur_size -= 1 self.cur_size -= 1
self.min_heapify(1) self.min_heapify(0)
del self.pos[min_node] del self.pos[min_node]
return min_node return min_node