当前位置:智城范文网>范文大全 > 征文 > 非数值问题的并行算法的研究及软件的实现

非数值问题的并行算法的研究及软件的实现

时间:2022-03-22 10:48:36 来源:网友投稿

【摘 要】本文采用mpich2这一并行处理的环境,并用mpich2并行处理串匹配问题,研究了随机算法的优点及用途,并用它解决串匹配,降低串匹配的时间复杂度。

【关键词】并行算法;随机算法1 串匹配问题提出

Kmp算法虽然能找到匹配位置,但是时间复杂度高,在某些领域还不能用,能否找到一种时间复杂度为对数数量级的匹配函数。

2 问题分析

我们在这里采用数据结构中散列函数的方法,它可提供较低的时间复杂度,把一个长的串映射到较小的范围,保证不同的串映射到相同的位置概率很小。所得到的指纹函数可在O(1)时间复杂度内进行比较。

3 问题解决

指纹函数:我们求串的匹配的基本策略是将串映射到某些小的整数上。令T是长度为n的正文串,P是长度为m的模式串,匹配的结果是识别P在T中出现的所有位置。考虑长度为m的T所有子串的集合B。这样的起始在位i的子串共n-m+1个。于是我们的问题可重新阐述为去识别与P相同的B中元素的位置。令A={fp}p∈s是函数集,使得fp将长度为的串映射到域D.A要满足下属三个性质:

性质(1) 对于任意串x∈B和每个p∈S,fp(x)由O(log m)位组成。

性质(2) 随机选择fp∈A,它将两个不等的串X和Y映射到到同一位置的机率非常小。

性质(3) 对于每个p∈S和B中的所有串,应能很容易计算fp(x)。

上述三个性质对于模式匹配问题的内涵应是清楚的:性质1隐含着fp(x)可在时间O(1)内比较,性质2是说如果两个串X和Y指纹相等,则X=Y的概率很高;性质3 的解释与利用集合A的并行算法实现有关。

因为确定的串匹配的时间复杂度为O(logn)时间和O(n)次操作,所以希望计算中诸串的指纹函数亦具有相同的时间复杂度。

3.1 一类指纹函数

试考虑下列函数:它将取值{0,1}上的串集合映射到取值整数环z上的2×2矩阵。此函数满足性质2,但不满足性质1,3。稍后修改它,使其满足所有性质。对于任意两个串行x和y定义为环z上矩阵集合的乘积。

引理(1) 函数f是一到一的,使得对于任意串x,f(X)的行列式为1。如果X的长度为m,则f(x)的每一项都是一个不大于Fm+1的整数,其中Fm+1是m+1个Fibonnacci数,F1=F1=1, Fm+1= Fm+1+Fm+1。

3.2 失配概率

令X和Y是两个长度各为m的串,且令fp∈A。当X≠Y但fp(X)=fp(Y)时就出现失配。注意此性质与特定的指纹函数fp有关。

定理 令fp是从集合A={fp}中随机选定的函数,其中p是区间[1,2…,M]中的某一素数,那么任意两个长度为m的不同串失配概率≦∏(2.776)/∏(m),如果m≧11。

引理(2) 如果素数的区间为(1,2…, mk)对于与给定的常数k>1,则两个长度为m的串的失配概率≦3.48k/mk-1。

区间[1,2…, M]中的一个素数p,对于固定的k要求O(logm+logt)位。对于t这样的串,指向它们特定位置的指针亦要求同数量级的位数,因此,能够假定两个的串的指纹可在O(1)时间内比较之。显然,此值与比较两串需要O(m)次操作是大不一样的。

这样,函数同时满足前述性质。在此基础上给出了分布式存储处体系结构上随机串匹配的并行算法。

随机串匹配算法

算法1.1(下转第140页)

(上接第170页)随机串匹配算法

输入: 数组T(1,n) P(1,m)和整数M

输出: 数组match ,其分量指明P在T中出现的匹配位置

(1)for i=1 to n-m+1 do

match[i]=0;

end for

(2)select a randon prime number in [1,2.....m],then count fp(p)

(3)for i=1 to n-m+1 do

Li=fp(T(i,i+m-1))

end for

(4)for i=1 to n-m+1 do

if Li=fp(p)then

match(i)=1

end if

end for

end

显然,在该算法中步骤(1)(4)的时间复杂度为O(n-m),步骤(2)(3)中求模式串和文本串各个子串指纹的时间复杂度分别为O(m),O(n-m)。

[责任编辑:王洪泽]

推荐访问: 并行 数值 算法 研究 软件

版权所有:智城范文网 2010-2025 未经授权禁止复制或建立镜像[智城范文网]所有资源完全免费共享

Powered by 智城范文网 © All Rights Reserved.。粤ICP备20058421号