2008-08-28 7 views
6

これまでは、ルールエバリュエーターとして機能するプログラムを開発しなければなりませんでした。先行者が実行された行為を真実と評価した場合、あなたは前例といくつかの連続(行動)を持っていました。パターン認識アルゴリズム

当時私は、先行パターンマッチングのために、RETE algorithmの改訂版を使用しました(RETEの3つのバージョンのみが公開されています)。ここでは、ルールごとに数百万の操作があり、いくつかのルールでいくつかの演算子が「繰り返される」という大きなシステムについて語っています。

私はこれを他の言語でやり直す必要があります。私はRETEで経験はありますが、他のパターンマッチングアルゴリズムを知っている人はいますか?どんな提案か、私はRETEを使用し続けるべきですか?

答えて

4

TREATアルゴリズムはRETEと似ていますが、部分一致は記録されません。その結果、特定の状況では、RETEより少ないメモリしか使用できません。また、既知の事実のかなりの数を変更すると、撤回に時間を費やす必要がないため、TREATの処理速度が大幅に向上します。

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

遅延評価スキームを使用し、RETEとTREATの両方の要素を組み込んだLEAPSをチェックしてみることもできます。

私はRETEで個人的な経験があるだけですが、RETE *やLEAPSのほうが優れていて、より柔軟な選択肢です。

+1

LEAPSリンク:ftp://ftp.cs.utexas.edu/pub/predator/tr-94-28.pdf – biziclop