Algorithme d'escalade de colline simple exemple
Je suis un peu confus avec l'Escalade de l'algorithme.
Je veux "run" de l'algorithme jusqu'à ce que j'ai trouvé la première solution, à savoir que l'arbre ( "a" est l'initiale et h et k sont les états finaux ) et il dit que les numéros de près les états-unis sont l'heuristique de valeurs. Voici l'arborescence:
Ma question :
je suis en train de lancer l'escalade sur l'arbre, alors ok, nous commençons une-> f-> g et puis quoi ??finition(sans résultat) , mais j'ai lu que l'escalade peut pas revenir en arrière et faire un nouveau choix(exemple j ou e) ? Est-ce exact ?
Si je peux revenir en arrière, alors comment ? je veux dire, où nous changeons notre choix initial exemple, nous choisissons e au lieu de g ou j au lieu de f
Désolé si ma question est trop simple .
source d'informationauteur Iakob Fokas
Vous devez vous connecter pour publier un commentaire.
Un bon moyen d'éviter d'être coincé dans les maxima locaux avec l'Escalade est d'utiliser aléatoire redémarre. Dans votre exemple, si G est un maximum local, l'algorithme s'arrête pas là, et puis choisir un autre nœud aléatoire pour redémarrer à partir de. Donc, si J ou C ont été pris (ou peut-être A, B ou D), vous trouverez la mondiale maxima en H ou K. Rincer et répéter un nombre de fois suffisant et vous trouverez le mondial maxima ou quelque chose d'approchant; selon l'heure/les ressources limitées et le problème de l'espace.
Noter que la Recherche Locale comme l'Escalade n'est pas complète et ne peut pas garantir de trouver le mondial maxima. L'avantage, bien sûr, est qu'il ne nécessite qu'une fraction des ressources. Dans la pratique et appliquée à la droite de problèmes, c'est une solution très efficace.
Vous pouvez essayer d'utiliser une technique appelée le recuit simulé pour empêcher votre recherche pour obtenir coincé sur à des minimums locaux. Essentiellement, dans le recuit simulé, il y a un paramètre
T
qui contrôle votre probabilité de faire un geste pour les sous-optimale quartier unis. SiT
est élevé, vous êtes plus susceptible de faire un sous-optimale de passer à un état voisin et ainsi échapper à un minimum local lorsque coincé là-bas, vous n'auriez pas si vous avez utilisé normale d'escalade la colline.Escalade la colline a pas de garantie contre le fait d'être coincé dans un local minima/maxima.
Toutefois, seule la forme la plus pure de l'escalade n'est pas vous permettre de revenir en arrière.
Un simple riff sur la colline d'escalade qui permettra d'éviter les minima locaux problème (au détriment de plus de temps et de la mémoire) est une recherche tabou, où vous vous rappelez précédente de mauvais résultats et de manière ciblée les éviter.
un des problèmes de l'escalade la colline est coincé dans les minima locaux & c'est ce qui arrive lorsque vous atteignez F. Une version améliorée de l'escalade (qui est en fait utilisé pratiquement) est de redémarrer l'ensemble du processus en sélectionnant un nœud aléatoire dans l'arbre de recherche & continuer à nouveau en vue de trouver une solution optimale. Si une fois de plus vous êtes coincé à certains minima locaux, vous devez redémarrer à nouveau avec un autre nœud aléatoire. Généralement il y a une limite sur le pas de. de temps, vous pouvez re-faire de ce processus de trouver la solution optimale. Une fois que vous atteignez cette limite, vous sélectionnez le moins parmi toutes les minimas vous atteint au cours du processus. Si elle n'est pas encore complète, mais celui-ci a plus de chances de trouver le global solution optimale.
Fait de l'Escalade, vous n'avez généralement pas de revenir en arrière, parce que vous n'êtes pas garder la trace de l'etat (recherche locale) et vous éloigner de la maxima. Ni retour en arrière ou la Recherche Tabou aider à répondre à la question: l'ancien passe juste à vous éloigner d'un maximum local et ce dernier vous permet de revisiter les mêmes maxima locaux. Ni vous aider à frapper un mondial des maxima. – Tyson 16 Oct '12 à 22:59
"où vous vous rappelez précédente de mauvais résultats et de manière ciblée les éviter" je ne peux pas d'accord, vous marque comme un tabou aussi de bonnes solutions, mais Vous ne voulez pas suivre le même chemin nouveau. –
Voici la solution:
A -> F, avec le moins de frais possible F -> G avec un coût de 3, mais il n'y a pas de chemin.
Recommencer depuis le moins de frais possible autre que G, eh bien, c'est E car E est déjà insérée dans la file d'attente//pile, file d'attente de priorité ou quelle que soit la structure de données que vous utilisez.
Donc E -> mais je a le plus de coûts que de d, donc vous êtes coincé :S
De redémarrer à partir du moins de coûts autres que les F E & G, donc nous chercher parce que J J a coût inférieur à celui de B avec une différence de 2 i.e. J = 8 B = 10
J->K avec un coût de 0 donc K est le but
REMARQUE: La modification proposée de l'escalade de choisir un point au hasard, mais le choix le moins coûteux autre que le déjà visité nœuds est mieux que de choisir au hasard.
Une AUTRE REMARQUE: c'est que lorsque le nœud E n'ai pas de visite que j'ai parce que je possède une plus grande valeur de E, l'algorithme déjà inséré dans la structure de données, donc ramasser le moins de coûts autres que le déjà visité serait de créer un nouveau chemin d'accès de moi car je n'ai jamais été visité et donc il y a moins de valeur que J, c'est le seul chemin que j'ai sauté.
le chemin selon pure hill climb sera
a-> J -> k
si vous développez des enfants, de gauche à droite,
si vous développez de la droite vers la gauche, puis vous obtiendrez dans cette minima locaux, A -> F -> G,
mais en général, nous développer à partir de la gauche vers la droite.