web-dev-qa-db-fra.com

Chaînage avant vs chaînage arrière

À quoi sert l'un pour que l'autre ne soit pas en pratique? Je comprends la théorie de ce qu'ils font, mais quelles sont leurs limites et leurs capacités d'utilisation pratique? J'envisage Drools vs un Java pour un nouveau projet d'IA, mais ouvert à d'autres suggestions. Quelles sont les approches populaires pour déduire un ensemble de données relationnelles compliqué ou des alternatives?

47
gtrak

Le chaînage vers l'arrière (à la Prolog) ressemble plus à trouver quelles conditions initiales forment un chemin vers votre objectif. À un niveau très basique, c'est une recherche en arrière de votre objectif pour trouver les conditions qui le rempliront.

Le chaînage vers l'arrière est utilisé pour les demandes d'interrogation (recherche d'éléments répondant à certains critères) - un exemple commercial d'une application de chaînage vers l'arrière pourrait être de trouver les polices d'assurance couvertes par un contrat de réassurance particulier.

Le chaînage avant (à la CLIPS) correspond aux conditions, puis génère des inférences à partir de ces conditions. Ces conditions peuvent à leur tour correspondre à d'autres règles. Fondamentalement, cela prend un ensemble de conditions initiales et tire ensuite toutes les inférences qu'il peut de ces conditions.

Les inférences (si elles sont affirmées) peuvent également être des actions ou des événements qui peuvent déclencher des actions externes. Ceci est utile dans les systèmes pilotés par les événements, car les ensembles de règles peuvent être configurés pour (par exemple) lancer un flux de travail ou une autre action. Ce type de moteur de règles est le plus couramment utilisé dans les applications commerciales.

Les systèmes pilotés par les événements sont une application courante des moteurs de règles de chaînage direct. Un exemple d'application de chaînage direct peut être un moteur d'approvisionnement de plan de télécommunications (généralement utilisé pour administrer les plans de téléphonie mobile). La saisie d'un utilisateur particulier avec un plan particulier déclenchera une gamme d'éléments à configurer dans divers commutateurs téléphoniques, systèmes de facturation, finances, systèmes CRM, etc.

46

La réponse de Concerned est très bonne. Lorsqu'on me demande de réduire la différence à une morsure saine, je dis généralement quelque chose comme:

Beaucoup d'hypothèses de sortie + beaucoup de données à l'avance => Utiliser le chaînage direct

Moins d'hypothèses de sortie + doit interroger les données => Utiliser le chaînage arrière

Mais ce n'est qu'une règle d'or, pas un commandement.

20
TechNeilogy

Dans les vieux vieux vieux systèmes experts, ils disaient que le chaînage avant était bon pour regarder autour (vérifier ce qui pouvait être) tandis que le chaînage arrière était bon pour confirmer (vérifier si "c'était" vraiment).

Penser la configuration (chaînage avant, XCON [1]) et le diagnostic médical (MYCIN) [2]

  1. http://www.aaai.org/Papers/AAAI/1980/AAAI80-076.pdf
  2. https://www.Amazon.com/Rule-Based-Expert-Systems-Addison-Wesley/dp/0201101726
5
Tim Menzies

Le chaînage avant est concerné par la question "que va-t-il se passer ensuite?", Tandis que le chaînage arrière se penche sur la question "pourquoi est-ce arrivé?".

Un exemple de chaînage à terme consiste à prédire si le statut du marché des actions a un effet sur les variations des taux d'intérêt.

Un exemple de chaînage en arrière est le diagnostic de cancer du sang chez l'homme.

En termes simples, le chaînage vers l'avant est principalement utilisé pour prédire les résultats futurs tandis que le chaînage vers l'arrière est principalement utilisé pour analyser les données historiques.

2