Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Algorithme de recherche best-first — Wikipédia
Algorithme de recherche best-first — Wikipédia 👆 Click Here! Read More..
Un article de Wikipédia, l'encyclopédie libre.

La recherche best-first (littéralement : le meilleur en premier) est un algorithme de recherche qui parcourt un graphe en explorant le nœud le plus "prometteur" selon une règle spécifique.

Judea Pearl décrit la recherche best-first comme l'estimation de la qualité d'un nœud n par une "fonction heuristique d'évaluation f ( n ) {\displaystyle f(n)} {\displaystyle f(n)} qui, en général, peut dépendre de la description de n, de l'état d'arrivée, des informations amassées par l'algorithme au moment de l'évaluation et, surtout, de connaissances supplémentaires à propos du problème"[1],[2].

Certains auteurs utilisent le terme best-first pour désigner spécifiquement une recherche dont l'heuristique essaie de prédire la distance entre la fin d'un chemin et la solution, de sorte à explorer en priorité le chemin le plus proche de la solution. Ce type précis de recherche est nommé best-first glouton[2].

La sélection du meilleur candidat à l'exploration est typiquement implémentée en utilisant une file à priorités.

L'algorithme A* est un exemple de recherche best-first. Ce type de recherche est souvent utilisée pour rechercher des chemins en optimisation combinatoire.

Algorithme

[modifier | modifier le code]
OUVERT = ensemble contenant uniquement l'état initial
Tant que OUVERT n'est pas vide
Répéter
	1. Retirer le meilleur élément de OUVERT. Soit N cet élément ;
	2. Si N est l'état d'arrivée, remonter le chemin depuis N (par parentés successives) et retourner le chemin ;
	3. Créer les successeurs de N ;
	4. Évaluer ces successeurs, les ajouter à OUVERT en mémorisant leur parent.
Fin Répéter

Noter que cette version de l'algorithme n'est pas complète : elle ne trouve pas toujours un chemin possible entre deux nœuds même s'il en existe un. Par exemple, l'algorithme boucle s'il arrive dans une impasse : un nœud dont le seul successeur est son parent. Dans ce cas, l'algorithme retourne vers le parent, ajoute le nœud-impasse à OUVERT, et ainsi de suite.

La version ci-dessous étend l'algorithme en utilisant un ensemble additionnel FERME, contenant tous les nœuds déjà évalués et qui ne seront plus explorés. On évite ainsi les boucles infinies en n'explorant pas deux fois un même nœud.

OUVERT = ensemble contenant uniquement l'état initial
FERME = ensemble vide
Tant que OUVERT n'est pas vide
Répéter
	1. Retirer le meilleur élément de OUVERT et l'ajouter à FERME. Soit N cet élément ;
	2. Si N est l'état d'arrivée, remonter le chemin depuis N (par parentés successives) et retourner le chemin ;
	3. Créer les successeurs de N ;
	4. Pour chaque successeur, faire :
		a. Si le successeur n'est pas dans FERME : l'évaluer, l'ajouter à OUVERT en mémorisant son parent ;
		b. Sinon : changer son parent si le nouveau chemin est meilleur que l'ancien.
Fin Répéter

Noter aussi que le pseudo-code des deux versions termine simplement si aucun chemin n'est trouvé. Une implémentation demanderait bien sûr un traitement spécial de ce cas.

Algorithme glouton

[modifier | modifier le code]

En utilisant un algorithme glouton, on explore le premier successeur du parent. Après génération du successeur[3] :

  • Si celui-ci est "meilleur" que son parent, il est placé au début de la file (et son parent est réinséré juste derrière lui), et la boucle reprend ;
  • Sinon, il est placé dans la file en fonction de sa valeur heuristique. La procédure évalue ensuite les autres successeurs du parent.

Voir aussi

[modifier | modifier le code]
  • Algorithme de recherche en faisceau
  • Algorithme A*
  • Algorithme de Dijkstra

Références

[modifier | modifier le code]
  • (en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « Best-first search » (voir la liste des auteurs).
  1. ↑ (en) Pearl, J. Heuristics: Intelligent Search Strategies for Computer Problem Solving. Addison-Wesley, 1984. p. 48.
  2. ↑ a et b (en) Stuart J. Russell et Peter Norvig, Artificial Intelligence : A Modern Approach, Upper Saddle River, New Jersey, Prentice Hall, 2003, 2e éd., 1080 p. (ISBN 978-0-13-790395-5, lire en ligne), p. 94-95 (note 3)
  3. ↑ (en) Greedy Best-First Search when EHC Fails, Carnegie Mellon
v · m
Algorithmes sur les graphes
Recherche
  • A*
  • D*
  • parcours en largeur
  • parcours en largeur lexicographique
  • parcours en profondeur
  • recherche arborescente Monte-Carlo
  • recherche best-first
  • recherche en faisceau
  • recherche jump point
Plus court chemin
  • Bellman-Ford
  • Dijkstra
  • Floyd-Warshall
  • Johnson
Arbre couvrant minimum
  • Borůvka
  • Kruskal
  • Prim
  • reverse-delete
Flot maximum
  • Dinic
  • Edmonds-Karp
  • Ford-Fulkerson
  • Goldberg-Tarjan
Coupe minimum
  • Karger
  • Stoer-Wagner
Composantes fortement connexes
  • Kosaraju
  • Tarjan
Coloration
  • DSATUR
  • Wigderson
  • icône décorative Portail de l'informatique théorique
Ce document provient de « https://fr.teknopedia.teknokrat.ac.id/w/index.php?title=Algorithme_de_recherche_best-first&oldid=213907968 ».
Catégorie :
  • Algorithme de recherche
Catégories cachées :
  • Portail:Informatique théorique/Articles liés
  • Portail:Informatique/Articles liés
  • Portail:Mathématiques/Articles liés
  • Portail:Sciences/Articles liés

  • indonesia
  • Polski
  • الرية
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • مصر
  • Nederlands
  • 本語
  • Português
  • Sinugboanong Binisaya
  • Svenska
  • Українска
  • Tiếng Việt
  • Winaray
  • 中文
  • Русски
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id