1、在一个由k个字母组成的字母表中考虑所有k^l个L-元组片段。对于基序发现问题而言k=n-l+1,而对于中间字符串而言则k=4。
2、ALLLEAVES给定一条L-元组片段,输出所有4元组片段。
NEXTLEAF(a,L,k)
FOR I<-l TO 1
IF ai<k
ai<-ai+1
return a
ai<-1
return a
ALLLEAVES(L,k)
a<-(1,...,1)
while forever
output a
a<-NEXTLEAF(a,L,k)
if a=(1,1,...,1)
return
3、为了列出基序发现问题中所有可能的起始位点,我们可以构建一个有L=t阶层的树,其中每个顶点都有k=n-l+1个子顶点。对于中间字符串问题,L=l而K=4,实际我们只需要检查树的叶子而忽略内部顶点
4、遍历完全树
NEXTVERTEX(a,i,L,k)
ifi<L
ai+1<-1
return(a,i+1)
else
forj<-L to1
if (aj<k)
aj<-aj+1
return(a,j)
return (a,0)