Comment une heuristique admissible assure-t-elle une solution optimale?

16

Lorsque nous utilisons A * (ou tout autre meilleur algorithme de recherche de chemin), nous disons que l'heuristique utilisée doit être admissible , c'est-à-dire qu'elle ne doit jamais surestimer la longueur (ou les déplacements) réels du chemin de la solution.

Comment une heuristique admissible assure-t-elle une solution optimale? Je recherche de préférence une explication intuitive.

Si vous le souhaitez, vous pouvez expliquer en utilisant l' heuristique de distance de Manhattan du 8-puzzle.

Ashwin
la source
2
@Ashwin Intuitivement parce que lorsque l'algorithme trouve un chemin de longueur , il a déjà essayé tous les autres chemins qui peuvent éventuellement être de longueur au plus k . C'est pourquoi votre fonction heuristique ne doit jamais surestimer le coût de l'objectif. Essayez-le vous-même en créant une fonction heuristique qui pourrait surestimer. kk
Pål GD

Réponses:

7

Alors que la réponse d'Anton est absolument parfaite, permettez-moi d'essayer de fournir une réponse alternative: être admissible signifie que l'heuristique ne surestime pas l'effort pour atteindre le but, c'est-à-dire pour tout n dans l'espace d'état (dans le casse-tête 8, cela signifie juste pour toute permutation des tuiles et l'objectif que vous envisagez actuellement) où h ( n ) est le coût optimal pour atteindre la cible.h(n)h(n)nh(n)

Je pense que la réponse la plus logique pour voir pourquoi fournit des solutions optimales si h ( n ) est admissible est parce qu'il trie tous les nœuds en OUVERT dans l'ordre croissant de f ( n ) = g ( n ) + h ( n ) et, aussi , car il ne s'arrête pas lors de la génération de l'objectif mais lors de son expansion:Ah(n)f(n)=g(n)+h(n)

  1. Comme les nœuds sont développés dans l'ordre croissant de vous savez qu'aucun autre nœud n'est plus prometteur que le nœud actuel. Rappelez-vous: h ( n ) est admissible de sorte que le fait d'avoir le plus bas f ( n ) signifie qu'il a la possibilité d'atteindre l'objectif par un chemin moins cher que les autres nœuds d'OPEN n'ont pas. Et cela est vrai, sauf si vous pouvez prouver le contraire, c'est-à-dire en développant le nœud actuel.f(n)h(n)f(n)
  2. Étant donné que ne s'arrête que lorsqu'il développe le nœud cible (comme opposé à l'arrêt lors de sa génération), vous êtes sûr (du premier point ci-dessus) qu'aucun autre nœud ne mène à un chemin moins cher.A

Et c'est essentiellement tout ce que vous trouverez dans la preuve originale de Nilsson et al.

J'espère que cela t'aides,

Carlos Linares López
la source
3
Merci. Ça m'a aidé. Vous parliez d'une preuve de Nilsson et al. Qui est-ce? Et où puis-je trouver la preuve?
Ashwin
1
@Ashwin Voir le livre " Principles of Artificial Intelligence " (vers la page 80) de Nils J. Nilsson (1982).
nbro
11

Si la fonction heuristique n'est pas admissible, alors nous pouvons avoir une estimation qui est plus grande que le coût réel du trajet d'un nœud à un nœud cible. Si cette estimation de coût de chemin plus élevé se trouve sur le chemin de moindre coût (que nous recherchons), l'algorithme ne l'explorera pas et il peut trouver un autre chemin (pas le moindre coût) vers l'objectif.

Regardez cet exemple simple.

entrez la description de l'image ici

Soit et G respectivement les nœuds de départ et de but . Soit h ( N ) une estimation de la longueur du chemin du nœud N à G , N dans le graphique. De plus, soit c ( N , X i ) la fonction de coût de pas du nœud N à son voisin X i , N et i = 1 .. m , où mAGh(N)NGNc(N,Xi)NXiNi=1..mmest le nombre de voisins de (c'est-à-dire une fonction qui renvoie le coût du bord entre le nœud NNN et l'un de ses voisins).

Que l'heuristique soit

  • h(B)=3

  • h(C)=4

Cette fonction heuristique n'est pas admissible, car h ( C ) = 4 > c ( C , G ) = 2H

h(C)=4>c(C,G)=2

AABGABG4ACG3

Anton
la source
1
D'accord. Mais comment une heuristique admissible assure-t-elle une solution optimale?
Ashwin
Il peut arriver que - h (b) <h (c) avec h (b) et h (c) étant admissibles, mais actual_cost (b)> actual_cost (c) non? Donc b sera choisi comme chemin suivant alors qu'en réalité c aurait donné le meilleur chemin.
Ashwin
Pour le 1er commentaire: l'heuristique admissible assure de trouver le chemin le plus court. La solution elle-même est optimale si l'heuristique est cohérente .
Anton
Pour le 2ème commentaire: si l'heuristique est admissible, A-> B peut être choisi pour le prochain nœud à développer, mais après cela, A * choisira A-> C et non A-> B-> G. Et à la fin, il se retrouvera avec A-> C-> G.
Anton
1
Parce que A * fonctionne comme ça. Il étend le nœud avec la plus petite somme de distance à ce nœud + estimation heuristique de ce nœud. d (A, G) + h (G) = 4 + 0 = 4 et d (A, C) + h (C) = 1 + quelque chose <= 2 (car c'est admissible). Donc C a une somme inférieure et l'A * la choisira. De la même manière, il s'agira de développer G et de trouver le moins de chemin.
Anton