web-dev-qa-db-fra.com

Quelle est la différence entre la meilleure recherche en premier et la recherche A *?

Dans mon manuel, j'ai remarqué que ces deux algorithmes fonctionnent presque exactement de la même façon. J'essaie de comprendre ce qui est la principale différence entre eux.

 Example from the textbook

Le manuel a parcouru cet exemple en utilisant A * de la même manière que pour meilleure recherche en premier.

Toute aide serait appréciée.

12
Computerphile

Meilleure première recherche _ L'algorithme visite l'état suivant en fonction de la fonction heuristique f(n) = h avec la valeur heuristique la plus basse (souvent appelée gourmande). Cela ne prend pas en compte le coût du chemin menant à cet état particulier. Tout ce qui lui importe, c’est ce qui fait que l’état suivant de l’état actuel a la plus faible des heuristiques.

A * recherche l'algorithme visite l'état suivant basé sur l'heristique f(n) = h + gh composant est identique à l'heuristique appliquée comme dans la recherche par ordre de priorité, mais Le composant g est le chemin entre l'état initial et l'état particulier. Par conséquent, il ne choisit pas l'état suivant uniquement avec la valeur heuristique la plus basse, mais une valeur donnant la valeur la plus basse lorsque l'on considère ses heuristiques et le coût d'obtention de cet état.

Dans l'exemple ci-dessus, lorsque vous partez d'Arad, vous pouvez choisir l'une ou l'autre tout droit à Sibiu (253 km) ou à la Zerind (374 km) ou Timisoara (329 km) . Dans ce cas, les deux algorithmes choisissent Sibiu car sa valeur est inférieure f(n) = 253.

Maintenant, vous pouvez étendre votre choix à Arad (366 km) ou Oradea (380 km) ou Faragas (178 km) ou Rimnicu Vilcea (193 km). Pour le meilleur. Premier. La recherche, Faragas aura le plus bas f(n) = 178 mais A * sera ont Rimnicu Vilcea f(n) = 220 + 193 = 413 où 220 est le coût de arriver à Rimnicu à partir d'Arad (140 + 80) et 193 est de Rimnicu à Bucarest mais pour Faragas ce sera plus comme f(n) = 239 + 178 = 417.

Alors maintenant, vous pouvez clairement voir que (best-first} est un algorithme glouton, car il choisirait un état avec une heuristique plus basse, mais un coût global plus élevé, car il ne prend pas en compte le coût d'obtention de cet état à partir de l'état initial

25
MichaelDD

A * réalise de meilleures performances en utilisant des méthodes heuristiques pour guider sa recherche. A * combine les avantages de la recherche Best-First et de la recherche uniforme des coûts: vous assurer de trouver le chemin optimisé tout en augmentant l'efficacité de l'algorithme en utilisant des méthodes heuristiques. Une fonction * serait f(n) = g(n) + h(n), h(n) étant la distance estimée entre tout sommet aléatoire n et sommet cible, g(n) étant la distance réelle entre le point de départ et tout sommet n. Si g (n) = 0, le A * s’avère être la meilleure recherche en premier. Si h (n) = 0, alors A * s'avère être une recherche à coût uniforme.

0
Jianqiang Chen