Problème de rechercheEn informatique théorique, et plus particulièrement en théorie de la complexité et en théorie de la calculabilité, un problème de recherche est un problème algorithmique associé à une relation binaire. Si R est une relation binaire telle que pour tout (R) ⊆ Γ+ et T une machine de Turing, alors T implante R si:
De manière intuitive, un problème de recherche consiste à trouver, s'il existe, un objet "y" associé à un objet "x". On considère qu'un algorithme résout le problème si pour tout x, pour lequel un résultat existe, une occurrence est produite en résultat. De tels problèmes se rencontrent fréquemment en théorie des graphes, en cherchant par exemple certains couplage, cliques, ensemble indépendant, etc. Le graphe d'une fonction est une relation binaire. Toute relation R peut être vue comme un problème de recherche et on dit qu'une machine de Turing qui implante R résout le problème de recherche. Tout problème de décision est la restriction d'un problème de recherche qui consiste à assimiler "oui" à "un résultat existe" et "non" à "aucun résultat n'existe": La définition d'un problème de recherche peut être généralisée à des relations n-aires en utilisant un encodage adéquat. DéfinitionUn problème de recherche est défini par [1],[2],[3]:
ObjectifTrouver une solution lorsqu’un algorithme n'est pas fourni, mais lorsqu'on a que la spécification de la solution[4]. Méthode de recherche
Entrée: un graphe, un ensemble d'états de départ, Une fonction booléenne goal(n) qui renvoie si n est un état cible. frontière := {s : s est un nœud de départ}; Tant que frontière n'est pas vide: sélectionner et retirer le chemin <n0, ..., nk> de la frontière; Si goal(nk) renvoyer <n0, ..., nk>; Pour tous les voisins n de nk rajouter <n0, ..., nk, n> à la frontière; Fin Tant que Notes et références
Voir aussiInformation related to Problème de recherche |