Chaînage en arrière

Chaînage en arrière commence par une liste d’objectifs (ou une hypothèse) et fonctionne en arrière de la conséquence à l’antécédent pour voir si des données supportent l’une de ces conséquences. Un moteur d’inférence utilisant un chaînage arrière rechercherait les règles d’inférence jusqu’à en trouver une avec une clause conséquente (Then) qui correspond à un objectif souhaité. Si l’antécédent (clause If) de cette règle est connu pour être vrai, il est ajouté à la liste des objectifs (pour que son objectif soit confirmé, il faut également fournir des données confirmant cette nouvelle règle).

Par exemple, supposons qu’un nouvel animal de compagnie, Fritz, soit livré dans une boîte opaque avec deux faits sur Fritz:

  • Fritz croasse
  • Fritz mange des mouches

Le but est de décider si Fritz est vert, sur la base d’une base de règles contenant les quatre règles suivantes:

 Un exemple de Chaînage en arrière.
Un exemple de chaînage arrière.

  1. Si X croasse et X mange des mouches – Alors X est une grenouille
  2. Si X gazouille et X chante – Alors X est un canari
  3. Si X est une grenouille – Alors X est vert
  4. Si X est un canari – Alors X est jaune

Avec un raisonnement en arrière, un moteur d’inférence peut déterminer si Fritz est vert en quatre étapes. Pour commencer, la requête est formulée comme une affirmation d’objectif à prouver: « Fritz est vert ».

1. Fritz est substitué à X dans la règle #3 pour voir si sa conséquence correspond au but, donc la règle #3 devient:

 If Fritz is a frog – Then Fritz is green

Puisque le résultat correspond à l’objectif (« Fritz est vert »), le moteur de règles doit maintenant voir si l’antécédent (« Fritz est une grenouille ») peut être prouvé. L’antécédent devient donc le nouvel objectif:

 Fritz is a frog

2. En remplaçant à nouveau Fritz par X, la règle #1 devient:

 If Fritz croaks and Fritz eats flies – Then Fritz is a frog

Puisque la conséquence correspond à l’objectif actuel (« Fritz est une grenouille »), le moteur d’inférence doit maintenant voir si l’antécédent (« Fritz croasse et mange des mouches ») peut être prouvé. L’antécédent devient donc le nouvel objectif:

 Fritz croaks and Fritz eats flies

3. Puisque cet objectif est une conjonction de deux énoncés, le moteur d’inférence le divise en deux sous-objectifs, qui doivent tous deux être prouvés:

 Fritz croaks Fritz eats flies

4. Pour prouver ces deux sous-objectifs, le moteur d’inférence voit que ces deux sous-objectifs ont été donnés comme des faits initiaux. Par conséquent, la conjonction est vraie:

 Fritz croaks and Fritz eats flies

par conséquent, l’antécédent de la règle #1 est vrai et la conséquence doit être vraie:

 Fritz is a frog

par conséquent, l’antécédent de la règle #3 est vrai et la conséquence doit être vraie:

 Fritz is green

Cette dérivation permet donc au moteur d’inférence de prouver que Fritz est vert. Les règles #2 et #4 n’ont pas été utilisées.

Notez que les objectifs correspondent toujours aux versions affirmées des conséquences des implications (et non aux versions niées comme dans le modus tollens) et même alors, leurs antécédents sont alors considérés comme les nouveaux objectifs (et non les conclusions comme dans l’affirmation des conséquences), qui doivent finalement correspondre à des faits connus (généralement définis comme des conséquences dont les antécédents sont toujours vrais); ainsi, la règle d’inférence utilisée est le modus ponens.

Étant donné que la liste des objectifs détermine quelles règles sont sélectionnées et utilisées, cette méthode est appelée axée sur les objectifs, contrairement à l’inférence de chaînage vers l’avant axée sur les données. L’approche de chaînage en arrière est souvent utilisée par les systèmes experts.

Les langages de programmation tels que Prolog, Knowledge Machine et ECLiPSe prennent en charge le chaînage arrière dans leurs moteurs d’inférence.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.