1

データをより効率的に処理する方法を考えています。説明させてください:

現在、 と呼ばれるクラスがあり、 などのRules多くのメンバー関数があります。これらの関数は、特定の状況 (他のプロセスが呼び出すとき) をチェックするために使用され、すべて bool 値を返します。Rules::isForwardEligible()Rules::isCurrentNumberEligible()

これらの関数の本体にはif、DB にクエリを実行してデータを比較し、最終的にターンまたは false を返す があります。

全体的にif(Rules::isCurrentNumberEligible())--->Check content in Rules::isCurrentNumberEligible()---> if(xxxx)(xxxx はまた別の関数になります、DB に問い合わせます) のようなものですが、このような方法は良くないと思います。改善したいです。

私が想像しているのは、より少ないコードを使用して、より多くの情報を照会することです。

したがって、最初のステップif(Rules::isCurrentNumberEligible())でクエリを実行できます。クエリ用にさまざまなテーブルを設定できるため、次のようなif(xxx){if(xx){if(xx)....}}ことが少なくなります。解決策は、役割がコーディネーターのようなクラスを構築し、毎回異なるクエリを尋ねることです。それは適切ですか?

これを制御するのが良い方法であるかどうかはわかりません。または、別の良い解決策があるかもしれません。助けてください、ありがとう!

4

1 に答える 1

1

ルールベースのシステムの古典的なアルゴリズムはRETE アルゴリズムです。評価するルールの数を最小限に抑えようとします。トリックは、少なくとも 1 つの関連する事実が変更されない限り、ルールの再評価は意味をなさないということです。

一般に、最大の情報取得を約束するルールを最初に照会する必要があります。これにより、できるだけ少ない質問でそれぞれのケースを突き止めることができます。鑑別診断の医師は、常に質問を一般的なものから具体的なものへと順序付けます。情報理論では、これを最大エ​​ントロピーの原則と呼びます。

于 2012-12-25T20:52:19.433 に答える