用于优化的数据结构

时间:2012-09-27 13:53:45

标签: c++ design-patterns database-design

我正在考虑一种更有效地处理数据的方法。让我解释一下:

目前,有一个名为Rules的类,它有很多成员函数,如Rules::isForwardEligible()Rules::isCurrentNumberEligible() ....所以这些函数用于检查具体的情况(当其他进程调用它们时),它们都返回bool值。

在这些函数的主体中是if s,它将查询DB以比较数据,最后返回turn或false。

所以整个事情就像if(Rules::isCurrentNumberEligible()) --->检查Rules::isCurrentNumberEligible() ---> if(xxxx)中的内容(xxxx将再次成为另一个函数,查询数据库),I认为这种方式并不好。我想改进它。

我想象的是使用更少的代码,但查询更多信息。

所以我可以在第一步if(Rules::isCurrentNumberEligible())查询,我可以为查询设置不同的表,所以像if(xxx){if(xx){if(xx)....}}这样的东西会更少。一个解决方案是建立一个类,其角色就像一个协调员,每次问他不同的查询。它适合吗?

我不确定这是控制它的好方法,或者可能有一些好的解决方案。请帮助我,谢谢!

1 个答案:

答案 0 :(得分:1)

基于规则的系统的经典算法是RETE algorithm。它致力于最大限度地减少要评估的规则数量。诀窍在于,除非至少有一个相关事实发生变化,否则重新评估规则是没有意义的。

一般而言,应首先查询这些规则,以保证最大程度的信息获取。这有助于在尽可能少的问题中确定相应的案例。 鉴别诊断的医生总是将他/她的问题从一般到特定。在信息理论中,这被称为principle of maximum entropy