1、有一部分起始位点在没对其进行迭代前,可根据它们得分的最优估计,简单而迅速地将它们排除在外。
如:若t个起始位点中的前i个位点[即:(s1,s2,...,si)]构成了一个弱序列谱,没必要考虑序列i+1,i+2,....,t中的任一起始位点。
2、给定一组起始位点s=(s1,s2,..,st),定义部分一致得分Score(s,i,DNA)为i*l阶联矩阵的一致得分,且该矩阵仅涉及与起始位点S的DNA前i行相应部分。对于s1,s2,..,si,我们有部分一致得分,甚至在最佳情况下,余下的t-i行只能对一致得分作(t-i)*l的改进。任一前i个起始位点为(s1,s2,..,si)的联配矩阵的得分最多可能是score(s,i,DNA)+(t-i)*l
3、算法
BYPASS算法略过以顶点(a,i)为根的子树,直接进入同层的下一个顶点。
NEXTVERTEX算法当i<l时,进入下一层,i=l时,即在最底层时,移动到同层的下一顶点,遍历完成后,返回i=0。
BRANCHANDBOUNDMOTIFSEARCH(DNA,t,n,l)
s<-(1,...,1)
bestscore<-0
i<-1
whilei>0
if i<t
optimisticscore<-Score(s,i,DNA)+(t-i)*l
if optimisticscore<bestscore
(s,i)<-BYPASS(s,i,t,n-l+1)
//当前顶点及子树的最佳得分比bestscore小则放弃继续向该顶点子树的寻找。
else
(s,i)<-NEXTVERTEX(s,i,t,n-l+1)
else//到达底层
ifscore(s,DNA)>bestscore
bestscore<-score(s)
bestMotif<-(s1,s2,..,st)
(s,i)<-NEXTVERTEX(s,i,t,n-l+1)
returnbestMotif