MCPcopy Create free account
hub / github.com/subbarayudu-j/TheAlgorithms-Python / PriorityQueue

Class PriorityQueue

Graphs/multi_hueristic_astar.py:11–58  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

9
10
11class PriorityQueue:
12 def __init__(self):
13 self.elements = []
14 self.set = set()
15
16 def minkey(self):
17 if not self.empty():
18 return self.elements[0][0]
19 else:
20 return float('inf')
21
22 def empty(self):
23 return len(self.elements) == 0
24
25 def put(self, item, priority):
26 if item not in self.set:
27 heapq.heappush(self.elements, (priority, item))
28 self.set.add(item)
29 else:
30 # update
31 # print("update", item)
32 temp = []
33 (pri, x) = heapq.heappop(self.elements)
34 while x != item:
35 temp.append((pri, x))
36 (pri, x) = heapq.heappop(self.elements)
37 temp.append((priority, item))
38 for (pro, xxx) in temp:
39 heapq.heappush(self.elements, (pro, xxx))
40
41 def remove_element(self, item):
42 if item in self.set:
43 self.set.remove(item)
44 temp = []
45 (pro, x) = heapq.heappop(self.elements)
46 while x != item:
47 temp.append((pro, x))
48 (pro, x) = heapq.heappop(self.elements)
49 for (prito, yyy) in temp:
50 heapq.heappush(self.elements, (prito, yyy))
51
52 def top_show(self):
53 return self.elements[0][1]
54
55 def get(self):
56 (priority, item) = heapq.heappop(self.elements)
57 self.set.remove(item)
58 return (priority, item)
59
60def consistent_hueristic(P, goal):
61 # euclidean distance

Callers 1

multi_a_starFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected