9

以前は、ルール評価器として機能するプログラムを開発する必要がありました。前件といくつかの後件 (アクション) があるため、前件が true と評価された場合、アクションが実行されます。

当時、私は前提条件のパターン マッチングにRETE アルゴリズムの修正バージョンを使用しました (最初のバージョンだけが公開されている RETE には 3 つのバージョンがあります)。ここでは、ルールごとに数百万の操作があり、一部の演算子がいくつかのルールで「繰り返される」大規模なシステムについて話しています。

他の言語でもう一度実装しなければならない可能性があります。私は RETE の経験がありますが、他のパターン マッチング アルゴリズムを知っている人はいますか? 何か提案がありますか、それとも RETE を使い続ける必要がありますか?

4

1 に答える 1

5

TREAT アルゴリズムは RETE に似ていますが、部分一致は記録しません。その結果、特定の状況では RETE よりもメモリ使用量が少なくなる場合があります。また、かなりの数の既知の事実を修正する場合、撤回に時間を費やす必要がないため、TREAT ははるかに高速になります。

RETE*もあり、使用するメモリ量に応じてジョイン ノードの状態を保存することで RETE と TREAT のバランスをとります。したがって、アサーション時間はいくらか節約できますが、システムのチューニング方法によっては、メモリとリトラクト時間も節約できます。

また、遅延評価スキームを使用し、RETE と TREAT の両方の要素を組み込んだLEAPSも確認してください。

私は RETE について個人的な経験しかありませんが、RETE* または LEAPS がより適切で、より柔軟な選択肢のようです。

于 2008-08-29T00:42:18.040 に答える