Untitled
unknown
python
3 years ago
775 B
3
Indexable
import queue as Q
graph = {
"P": {'Q': 1, 'R': 4},
"Q": {'T': 12, 'S': 5, 'R': 2},
"R": {'S': 2},
"S": {'T': 3},
"T": {}
}
start = 'P'
end = 'T'
if start not in graph or end not in graph:
print('Please check start and end node in graph !')
else:
queue = Q.PriorityQueue()
queue.put((0, [start]))
while not queue.empty():
node = queue.get()
current = node[1][len(node[1]) - 1]
if end in node[1]:
print("Path found: " + str(node[1]) + ", Cost = " + str(node[0]))
break
cost = node[0]
for neighbor in graph[current]:
temp = node[1][:]
temp.append(neighbor)
queue.put((cost + graph[current][neighbor], temp))
Editor is loading...