1

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

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

在这些函数的主体中是ifs,它们将查询 DB 以比较数据,最后返回 turn 或 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 算法。它力求最小化要评估的规则数量。诀窍在于,除非至少一个相关事实发生了变化,否则对规则的重新评估是没有意义的。

一般来说,应该首先查询那些承诺最大信息增益的规则。这有助于在尽可能少的问题中确定相应的案例。鉴别诊断的医生总是将他/她的问题从一般到具体排序。在信息论中,这被称为最大熵原理

于 2012-12-25T20:52:19.433 回答