Алгоритм «первого наилучшего поиска» – это алгоритм поиска по графу, который использует эвристическую функцию оценки, чтобы определить, какой узел исследовать следующим. Вот пример реализации лучшего алгоритма первого поиска в Python:
from queue import PriorityQueue
def best_first_search(graph, start, goal, heuristic):
queue = PriorityQueue()
queue.put((0, start))
visited = set()
while not queue.empty():
cost, node = queue.get()
if node == goal:
return True
visited.add(node)
for neighbor in graph[node]:
if neighbor not in visited:
priority = heuristic(neighbor, goal)
queue.put((priority, neighbor))
return False
В этом примере параметр graphпредставляет граф или сеть, в которой выполняется поиск, start— начальный узел, цель— целевой узел, а heuristic — эвристическая функция оценки, которая оценивает стоимость пути от данного узла к цели.
Вот пример эвристической функции, которая вычисляет евклидово расстояние между двумя узлами в двумерном пространстве:
import math
def euclidean_distance(node1, node2):
x1, y1 = node1
x2, y2 = node2
return math.sqrt((x2 - x1) 2 + (y2 - y1) 2)
Эту эвристическую функцию можно использовать с функцией best_first_searchдля поиска кратчайшего пути между двумя узлами в 2D-пространстве.