Accueil🇫🇷Chercher

Problème de recherche

En 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:

  • Si x est tel qu'il existe un y vĂ©rifiant R(x, y) alors T accepte l'entrĂ©e x en produisant un rĂ©sultat  z tel que  R(x, z) (s'il y a plusieurs  y, T n'est astreint Ă  n'en trouver qu'un seul)
  • Si x est tel qu'il n'existe aucune  y tel que R(x, y) alors T rejette l'entrĂ©e x

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.

Ă€ noter que 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Ă©finition

Un problème de recherche est défini par [1] - [2] - [3]:

Objectif

Trouver 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

  • algorithme de recherche gĂ©nĂ©rique: soit un graphe, un ensemble de nĹ“uds de dĂ©part, et de nĹ“uds d'arrivĂ©e, on explore de manière incrĂ©mentale les chemins du graphe depuis les nĹ“uds de dĂ©part.
  • Maintenir une liste de chemin "frontière" depuis les nĹ“uds de dĂ©part qui ont dĂ©jĂ  Ă©tĂ© explorĂ©s.
  • Au fur et Ă  mesure, la frontière s’étend aux nĹ“uds non explorĂ©s jusqu'Ă  ce qu'un Ă©tat cible soit trouvĂ©.
  • La façon dont la frontière s'Ă©tend dĂ©pend du choix de la stratĂ©gie de recherche[4].
   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

  1. Kevin Leyton-Brown, « Graph Search »
  2. State-Space Search: Algorithms, Complexity, Extensions, and Applications, Weixiong Zhang
  3. Theoretical Aspects of Local Search, Wil Michiels, Emile Aarts,Jan Korst
  4. Kevin Leyton-Brown, « Graph Search », ubc (consulté le )

Voir aussi

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.