正反馈算法

正反馈算法

 

 

我最近设计了一个这样的算法:有一个算法的总体框架,抽象了共同的部分;把各个差异的部分放在具体的类里面实现。具体的子类要实现好多的特殊情况,有的情况很罕见,有的情况很常见;但是为了正确,必须涵盖所有的情况。

具体的代码类似下面:

template<class ConcreteClass>

bool wholeAlgo(ConcreteClass& cc)

{

  init();

  while(cc.go()){

     cc.doAllCases();

     doSomething();

  }

  return cc.result();

}

 

 

class CClass1

{

public:

  bool go()

  {

     //return true;

  }

  void doAllCases()

  {

     switch(x)

     {

     case 0:

         doCase0();

         break;

     case 1:

         doCase1();

         break;

         // more case here

     default:

         break;

     }

  }

  bool result()

  {

     //return true;

  }

};

如果对这个算法进行测试,可能会有一些特殊的情况没有考虑到;但是可以修改CClass1doAllCases()来包含这种情况,但同时保证:对这种特殊情况的增加不会影响其他的情况的代码;对这种特殊情况的增加不会影响总体的算法框架wholeAlgo的实现。也就是说,各种情况之间是相互独立的,并且独立于整个算法框架。

符合这种特点的算法称之为正反馈算法。反之,如果对一种特殊情况的处理会影响其他情况的代码,或者影响算法的整体框架,那么这个算法就不是正反馈算法。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部