1.一种部分字符串位置检测装置,以长度n的文本t的秘文〔t〕、长度m的模式p的秘文〔p〕、长度m的向量c的秘文〔c〕及m行n列的矩阵E的秘文〔E〕为输入,输出m行n列的矩阵H的秘文〔H〕,其中,
p[i]为所述模式p的第i个要素,t[i]为所述文本t的第i个要素,c[i]为所述向量c的第i个要素,E[i][j]为所述矩阵E的第i行j列的要素,H[i][j]为所述矩阵H的第i行j列的要素,
所述向量c为,在p[i]不是表示任意长度的字符串的无限长度间隔的情况下,设定c[i]=1,否则设定c[i]=0的向量,
所述矩阵E为,如果c[i]=0或p[i]=t[j],则设定E[i][j]=1,否则设定E[i][j]=0的矩阵,
所述矩阵H为,p[i]是以所述无限长度间隔分割了所述模式p的部分字符串的先头的要素、且如果所述部分字符串在所述文本t的第j个位置出现,则设定H[i][j]=1,如果除此以外,则设定H[i][j]=0的矩阵,
所述部分字符串位置检测装置包含:
第一矩阵生成单元,其生成成为F[i][j]=E[i][j+i mod n+1]的m行(n+1)列的矩阵F的秘文〔F〕,其中,认为E[i][n]=¬c[i];
第二矩阵生成单元,其生成m行(n+1)列的矩阵F'的秘文〔F'〕,该秘文〔F'〕在c[i]=0的情况或c[i]=1且关于将k从i逐次加上1时连续为c[k]=1的所有的k为F[k][j]=1的情况下,设定F'[i][j]=1,如果除此以外,则设定F'[i][j]=0;
第三矩阵生成单元,其计算〔H[i][j]〕=〔F'[i][j-i mod n+1]〕∧〔c[i]〕∧¬〔c[i-1]〕,生成所述秘文〔H〕。
2.如权利要求1所述的部分字符串位置检测装置,其中,
将⊕
设为由
定义的二项运算,设为pi:=(c[i],ej[i]),
所述第二矩阵生成单元将通过下式计算的Si的第1个要素作为e’j[i]:
Si:=(((((pi⊕pi+1)⊕pi+2)⊕pi+3)…)⊕pm-1)。
3.一种部分字符串位置检测方法,以长度n的文本t的秘文〔t〕、长度m的模式p的秘文〔p〕、长度m的向量c的秘文〔c〕及m行n列的矩阵E的秘文〔E〕为输入,输出m行n列的矩阵H的秘文〔H〕,其中,
p[i]为所述模式p的第i个要素,t[i]为所述文本t的第i个要素,c[i]为所述向量c的第i个要素,E[i][j]为所述矩阵E的第i行j列的要素,H[i][j]为所述矩阵H的第i行j列的要素,
所述向量c为,在p[i]不是表示任意长度的字符串的无限长度间隔的情况下,设定c[i]=1,否则设定c[i]=0的向量,
所述矩阵E为,如果c[i]=0或p[i]=t[j],则设定E[i][j]=1,否则设定E[i][j]=0的矩阵,
所述矩阵H为,p[i]是以所述无限长度间隔分割了所述模式p的部分字符串的先头的要素、且如果所述部分字符串在所述文本t的第j个位置出现,则设定H[i][j]=1,如果除此以外,则设定H[i][j]=0的矩阵,
所述部分字符串位置检测方法包含:
第一矩阵生成步骤,第一矩阵生成单元生成成为F[i][j]=E[i][j+i mod n+1]的m行(n+1)列的矩阵F的秘文〔F〕,其中,认为E[i][n]=¬c[i];
第二矩阵生成步骤,第二矩阵生成单元生成m行(n+1)列的矩阵F'的秘文〔F'〕,该秘文〔F'〕在c[i]=0的情况或c[i]=1且关于将k从i逐次加上1时连续为c[k]=1的所有的k为F[k][j]=1的情况下,设定F'[i][j]=1,如果除此以外,则设定F'[i][j]=0;
第三矩阵生成步骤,第三矩阵生成单元计算〔H[i][j]〕=〔F'[i][j-i mod n+1]〕∧〔c[i]〕∧¬〔c[i-1]〕,生成所述秘文〔H〕。
4.如权利要求3所述的部分字符串位置检测方法,其中,
将⊕
设为由
定义的二项运算,设为pi:=(c[i],ej[i]),
所述第二矩阵生成步骤将通过下式计算的Si的第1个要素作为e’j[i]:
Si:=(((((pi⊕pi+1)⊕pi+2)⊕pi+3)…)⊕pm-1)。
5.一种程序,用于使计算机起到权利要求1或2所述的部分字符串位置检测装置的作用。