Backward chainingは、目標(または仮説)のリストから始まり、結果から先行詞まで逆方向に動作して、これらの結果のいずれかをサポートするデータかどうかを確認します。 後方連鎖を使用する推論エンジンは、目的の目標に一致する結果(Then句)を持つ推論規則を見つけるまで推論規則を検索します。 そのルールの先行詞(If句)が真であることがわかっている場合、それは目標のリストに追加されます(目標を確認するには、この新しいルールを確認するデー
たとえば、新しいペット、Fritzが、Fritzに関する二つの事実と一緒に不透明な箱に配達されたとします:
- Fritz croaks
- Fritz eats flies
目標は、以下の四つのルールを含むルールベースに基づいて、Fritzが緑色であるかどうかを決定することです:
- xが鳴いてxがハエを食べる場合–Xはカエル
- Xが鳴いてxが歌う場合–xはカナリア
- xがカエルの場合–xは緑
- Xがカナリアの場合–Xは黄色
後方推論を使用すると、推論エンジンはフリッツが緑色であるかどうかを四つのステップで判断することができる。 開始するには、クエリは証明される目標アサーションとして表現されます:”Fritzは緑です”。
1. Fritzはルール#3のXに置き換えられて、その結果がゴールと一致するかどうかを確認するため、ルール#3は次のようになります:
If Fritz is a frog – Then Fritz is green
結果がゴールと一致するので(”Fritzは緑です”)、ルールエンジンは先行詞(”Fritzはカエルです”)が証明できるかどうかを確認する必要があります。 したがって、先行詞は新しい目標になります:
Fritz is a frog
2. 再びFritzをXに代入すると、rule#1は次のようになります:
If Fritz croaks and Fritz eats flies – Then Fritz is a frog
結果が現在の目標(”Fritz is a frog”)と一致するので、推論エンジンは先行詞(”Fritz croaks and eats flies”)が証明できるかどうかを確認する必要があります。 したがって、先行詞は新しい目標になります:
Fritz croaks and Fritz eats flies
3. この目標は2つの文の結合であるため、推論エンジンはそれを2つのサブ目標に分割しますが、どちらも証明する必要があります:
Fritz croaks Fritz eats flies
4. これらのサブ目標の両方を証明するために、推論エンジンは、これらのサブ目標の両方が初期事実として与えられたことを見る。 したがって、接続詞は真です:
Fritz croaks and Fritz eats flies
したがって、ルール#1の先行詞は真であり、結果は真でなければなりません:
Fritz is a frog
したがって、ルール#3の先行詞は真であり、結果は真でなければなりません:
Fritz is green
この導出は、したがって、推論エンジンがフリッツが緑色であることを証明することを可能にする。 ルール#2と#4は使用されませんでした。
目標は常に含意の結果の肯定されたバージョンと一致することに注意してください(modus tollensのように否定されたバージョンではありません)。
目標のリストによって、どのルールが選択され、使用されるかが決まるため、このメソッドは、データ駆動型の前方連鎖推論とは対照的に、目標駆動型と呼 バックワードチェーニングアプローチは、エキスパートシステムでよく採用されています。
Prolog、Knowledge Machine、ECLiPSeなどのプログラミング言語は、推論エンジン内で後方連鎖をサポートしています。