Untitled
unknown
plain_text
2 years ago
945 B
6
Indexable
from queue import PriorityQueue
def best_first_search(graph, start, goal):
visited = set()
priority_queue = PriorityQueue()
priority_queue.put((0, start))
while not priority_queue.empty():
cost, current_node = priority_queue.get()
if current_node in visited:
continue
print("Visiting:", current_node)
visited.add(current_node)
if current_node == goal:
print("Goal reached!")
break
for neighbor, neighbor_cost in graph[current_node]:
if neighbor not in visited:
priority_queue.put((neighbor_cost, neighbor))
# Example graph represented as an adjacency list
graph = {
'A': [('B', 3), ('C', 6)],
'B': [('A', 3), ('D', 2)],
'C': [('A', 6), ('D', 1)],
'D': [('B', 2), ('C', 1)]
}
start_node = 'A'
goal_node = 'D'
best_first_search(graph, start_node, goal_node)
Editor is loading...
Leave a Comment