第六章 并行算法基本设计策略
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2014-5-22
11
第六章 并行算法设计策略
4、算法复杂性分析
算法 Simple-String-Matching Begin i=1; while (i<=n-m+1) do begin j=1; while (j<=m) and (p[j]=t[i+j-1]) do j=j+1; if j>m then writeln('Matched,position:',i); i=i+1; end; End.
挖掘问题的固有特性与并行的关系; 设计全新的并行算法是一个挑战性和创造性的工作; 利用串的周期性的PRAM-CRCW算法是一个很好的 范例;
2014-5-22
6
第六章 并行算法设计策略
6.2.1 字符串匹配算法
模式匹配的定义
给定一个长度为n的字符串(通常称为正文)Text=t1t2…tn和一个 长度为m (m≤n)的另一个字符串(通常称为模式)Pattern=p1p2…pm, 要求查找出模式P在正文T中的首次出现或所有出现的起始位置(下 标)。
问题:
1.你所知道的字符串匹配 算法还有哪些?
2.在何种情况下需要高性 能字符串匹配算法?
最坏情形复杂性分析: t(n)=m(n-m+1)=O (mn)
2014-5-22
12
第六章 并行算法设计策略 56.2.3 并行串匹配算法的设计思路 研究串的数学性质是并行化的可能途径
周期性
2014-5-22
how ,ow
,w a ,ar ,are ,re ,e y ,yo ,ou!
2014-5-22
9
第六章 并行算法设计策略
2、算法形式描述
算法 Simple-String-Matching Begin i=1; while (i<=n-m+1) do begin j=1; while (j<=m) and (p[j]=t[i+j-1]) do j=j+1; if j>m then writeln('Matched,position:',i); i=i+1; end; End.
2014-5-22
14
第六章 并行算法设计策略
定义6.4 对于给定的 j(1 <j≤m/2) ,如果 pat[j:m] pat[1:m - j+1],则存在某个 w(1≤w≤m-j+1)使得 pat[w] pat[s] ,其 中s = j-1+w,则记WIT[j] = w。显然WIT[1] = 0。 1 j 1 s m m-j+1 m
A5>Af5=A1 RCf2=RC1 =5 i=5=RCf5= 5 exit
f5 LC5 RC5 1 6 6
A3 3 A4 2
构造的逻辑 二叉树
f1 LC1 RC1 1 2 5
f2 LC2 RC2 1 6 3
f3 LC3 RC3 2 6 6
f5 LC5 RC5 1 6 6
f1 LC1 RC1 1 2 5
end for
then
(2.1)LCfi=i (2.2)if i=LCfi then exit else fi=LCfi endif (2.3)RCfi=i (2.4)if i=RCfi then exit else fi=RCfi endif endif end repeat End
2014-5-22
3
2014-5-22
第六章 并行算法设计策略
5.1.2 快排序算法的并行化
算法5.2 PRAM-CRCW上的快排序二叉树构造算法
输入:序列(A1,…,An)和n个处理器 输出:供排序用的一棵二叉排序树 Begin (1)for each processor i do (2)repeat for each processor i<>root do (1.1)root=i if (Ai<Afi)∨(Ai=Afi∧i<fi) (1.2)fi=root (1.3)LCi=RCi=n+1
第六章 并行算法设计策略
串行算法实例: 1、算法思想
转化成以模式作为关键字的查找问题。它将长度n为的正文T划分成n-m+1个长度 为m的子 串,检查比较每个这样的子串是否与长度为m的模式相匹配。
简单的字符串匹配算法
示例
Text=how are you!
,Pattern=are n=12, m=3
Text=how are you!
13
第六章 并行算法设计策略
定义6.1 给定两个串 w 和 u ,对于某一正常数 k ,如果 w = uku , 其中 uk是u自身重复k次, u是u的前缀,则称u是 w的周 期。
例6.1
令w = ababababa,则u = abab是w的周期,因为w = u2a。w还 有如下周期: ab,因为w = u4a ababab,因为w = u2a abababab,因为w = ua 。
2014-5-22
18
第六章 并行算法设计策略
SIMD-CREW模型上的非周期串的匹配算法 1、dual(p,q)的计算 •为了以下的讨论,我们再引入WIT[i],它是一个一维数组,其 中每个分量均是匹配的见证者。 •即若pat在text的位置i不匹配,则定义WIT[i] 0,否则 WIT[i] = 0(1≤i≤n-m+1)。 •我们称WIT[i] = 0的分量是匹配的见证者。起始的WIT[i]均 为零
2014-5-22
10
第六章 并行算法设计策略
3、示例
Text=how are you!
,Pattern=are n=12, m=3
Text=how are you!
i=1 i=2 i=3 i=4
1 2 3 4 5 6 7 8 9101Baidu Nhomakorabea12
匹配
i=5 i=6 i=7 i=8
i=9 i=10
how ow w a ar are re e y yo you ou!
f2 LC2 RC2 1 6 3
f3 LC3 RC3 2 4 6
f4 LC4 RC4 3 6 6
f5 LC5 RC5 1 6 6
2014-5-22
5
第六章 并行算法设计策略 6.2 从问题描述开始设计并行算法 方法描述
从问题本身描述出发,不考虑相应的串行算法,设 计一个全新的并行算法。
注意
2014-5-22
19
第六章 并行算法设计策略
匹配算法的关键概念是正文中两个位置p和q之间的竞争 dual(p,q),其中,1≤p<q≤n = n-m+1,且q-p<m/2。我们 称,当pat为非周期串时,pat不会同时出现在text的位置p处和q 处。 证明:令 j = q -p+1 ,因为 pat 是非周期的,所以WIT[j] 0 , 不妨假设WIT[j] = w,则pat[w] pat[j+w-1]。 •假 定 pat 在 text 的 p 位 置 出 现 , 即 pat = text[p:p+m - 1] , pat[1:m]=text[p:p+m - 1], 则 pat[j+w - 1]=pat[1+j+w - 2]= text[p+ j+w - 2]=text[p+q - p+1+w - 2]= text[q+w - 1] 。由上 可知, pat[w] text[q+w - 1] ,即 pat 不会在 text 的位置 q 处出 现,此时可设置WIT[q] = w。 •同样,假定pat在特text的q位置出现,即pat[w] = text[q+w- 1] ,由此可知 text[q+w - 1] pat[j+w - 1] ,即 pat 不会出现在 20 text的位置p,此时可设置WIT[p] = w+q-p。 2014-5-22
w=3,j=4,s=4-1+3=6 pat[w] = pat[s]=a
w=4,j=4,s=4-1+4=7 pat[w] = a pat[s]=b
j:1<j≤m/2, w:1≤w≤m-j+1, s = j-1+w , pat[w] pat[s]
2014-5-22
16
第六章 并行算法设计策略
根据 WIT[j] 的定义,按如下方式来区分非周期串和周期串: ① 对于所有 2 ≤j≤m/2 ,当且仅当 WIT[j] 0 时,则称 pat 是 非周期的; ② 对于所有2≤j≤m/2,若存在某个j,使得WIT[j] = 0,则 称pat是周期的。 例5.3 令pat1 = abcaabcab,因为对于所有2≤j≤m/2,WIT[j]均不 为零,所以pat1是非周期的; 如令pat2 = abcabcab,则因为WIT[4] = 0,所以pat2是周期 的
1 12 n=12
Text=how are you!
示例 1 3
首次出现的起始位置=5
m=3
Pattern=are
第六章 并行算法设计策略
6.2.1 字符串匹配算法
问题
1.字符串匹配有哪些具体应用?(举例:一般计算机应用中) 2.字符串匹配在信息安全领域有哪些具体应用?(举例)
2014-5-22
8
后,才能运行
第六章 并行算法设计策略 6.1.1设计方法的描述
设计策略描述
发掘和利用现有串行算法中的并行性,直接将串行算法 改造为并行算法。
注意
由串行算法直接并行化的方法是并行算法设计的最常用 方法之一; 不是所有的串行算法都可以直接并行化的; 一个好的串行算法并不能并行化为一个好的并行算法; 许多数值串行算法可以并行化为有效的数值并行算法。
A1 4 A2 1
A5 5
f1 LC1 RC1 1 2 5
A2<Af2=A1 LCf2= LC1 =2 i=2=LCf2= 2 exit
f2 LC2 RC2 1 6 6
A3<Af3=A1 LCf3= LC1 =3 i=3≠LCf2= 2 f3 =LCf3 = LC1 =2
f3 LC3 RC3 2 6 6 A3>Af3=A2 RCf3=RC2 =3 i=3=RCf3=3 exit
第六章 并行算法设计策略
6.1 串行算法的直接并行化 6.2 从问题描述开始设计并行算法 6.3 借用已有算法求解新问题
第六章 并行算法设计策略
6.1串行算法的直接并行化
直接并行化的关键: •分析数据执行的相关性
任务图
T1 T2
•检测算法结构的固有串行性
T3
任务T1和T2可以并行 T3则需要等待T1, T2执行结束
4
else
第六章 并行算法设计策略 算法实例:A={4,1,3 ,2,5},设编号小的处理器写优先
P1 A1 4 P2 A2 1 P3 A3 3 P4 A4 2 f4 LC4 RC4 1 6 6 P5 A5 5 f1 LC1 RC1 1 6 6 f2 LC2 RC2 1 6 6 f3 LC3 RC3 1 6 6 f5 LC5 RC5 1 6 6
w
WIT[j] = w
2014-5-22
15
第六章 并行算法设计策略
例6.2 令pat = abaababa(m = 8), WIT[1] = 0,
WIT[2] = 1,w=1,j=2,s=2-1+1=2 pat[w] = a pat[s]=b
WIT[3] = 2,w=1,j=3,s=3-1+1=3 pat[w] = pat[s]=a w=2,j=3,s=3-1+2=4 pat[w] = b pat[s]=a WIT[4] = 4 w=1,j=4,s=4-1+1=4 pat[w] = pat[s]=a w=2,j=4,s=4-1+2=5 pat[w] = pat[s]=b
第六章 并行算法设计策略
可见dual(p,q)的意义是很明确的:即当pat为非周期串时, 取text中位置p和q(1≤p<q≤n)且q-p<m/2,则pat不会在p 和q处同时出现。因此可排除其中的一个位置,而剩下一个位置 作为可能发生匹配的候选者,令其为r,且置WIT[r] = 0。
A4<Af4=A1 LCf4= LC1 =4 i=4≠LCf2= 2 f4 =LCf4 = LC1 =2
f4 LC4 RC4 2 6 6 A4>Af4=A2 RCf4=RC2 =4 i=4 ≠ RCf3=3 f4 =RCf4 = RC2 =3 f4 LC4 RC4 3 6 6 A4<Af4=A3 LCf4= LC3 =4 i=4=LCf4= 4 exit
2014-5-22
17
第六章 并行算法设计策略
因为串匹配与模式串的周期性和非周期性有关 ,所以按照 Vishkin串匹配的算法, 先要定义串的周期性和非周期性,而判定串的周期性要利用不匹 配表WIT,所以求pat的WIT表是算法最关键而且也是最困难的部 分。 一旦求出了WIT表,就可分别研究非周期串的模式匹配和周期串 的模式匹配算法了。
11
第六章 并行算法设计策略
4、算法复杂性分析
算法 Simple-String-Matching Begin i=1; while (i<=n-m+1) do begin j=1; while (j<=m) and (p[j]=t[i+j-1]) do j=j+1; if j>m then writeln('Matched,position:',i); i=i+1; end; End.
挖掘问题的固有特性与并行的关系; 设计全新的并行算法是一个挑战性和创造性的工作; 利用串的周期性的PRAM-CRCW算法是一个很好的 范例;
2014-5-22
6
第六章 并行算法设计策略
6.2.1 字符串匹配算法
模式匹配的定义
给定一个长度为n的字符串(通常称为正文)Text=t1t2…tn和一个 长度为m (m≤n)的另一个字符串(通常称为模式)Pattern=p1p2…pm, 要求查找出模式P在正文T中的首次出现或所有出现的起始位置(下 标)。
问题:
1.你所知道的字符串匹配 算法还有哪些?
2.在何种情况下需要高性 能字符串匹配算法?
最坏情形复杂性分析: t(n)=m(n-m+1)=O (mn)
2014-5-22
12
第六章 并行算法设计策略 56.2.3 并行串匹配算法的设计思路 研究串的数学性质是并行化的可能途径
周期性
2014-5-22
how ,ow
,w a ,ar ,are ,re ,e y ,yo ,ou!
2014-5-22
9
第六章 并行算法设计策略
2、算法形式描述
算法 Simple-String-Matching Begin i=1; while (i<=n-m+1) do begin j=1; while (j<=m) and (p[j]=t[i+j-1]) do j=j+1; if j>m then writeln('Matched,position:',i); i=i+1; end; End.
2014-5-22
14
第六章 并行算法设计策略
定义6.4 对于给定的 j(1 <j≤m/2) ,如果 pat[j:m] pat[1:m - j+1],则存在某个 w(1≤w≤m-j+1)使得 pat[w] pat[s] ,其 中s = j-1+w,则记WIT[j] = w。显然WIT[1] = 0。 1 j 1 s m m-j+1 m
A5>Af5=A1 RCf2=RC1 =5 i=5=RCf5= 5 exit
f5 LC5 RC5 1 6 6
A3 3 A4 2
构造的逻辑 二叉树
f1 LC1 RC1 1 2 5
f2 LC2 RC2 1 6 3
f3 LC3 RC3 2 6 6
f5 LC5 RC5 1 6 6
f1 LC1 RC1 1 2 5
end for
then
(2.1)LCfi=i (2.2)if i=LCfi then exit else fi=LCfi endif (2.3)RCfi=i (2.4)if i=RCfi then exit else fi=RCfi endif endif end repeat End
2014-5-22
3
2014-5-22
第六章 并行算法设计策略
5.1.2 快排序算法的并行化
算法5.2 PRAM-CRCW上的快排序二叉树构造算法
输入:序列(A1,…,An)和n个处理器 输出:供排序用的一棵二叉排序树 Begin (1)for each processor i do (2)repeat for each processor i<>root do (1.1)root=i if (Ai<Afi)∨(Ai=Afi∧i<fi) (1.2)fi=root (1.3)LCi=RCi=n+1
第六章 并行算法设计策略
串行算法实例: 1、算法思想
转化成以模式作为关键字的查找问题。它将长度n为的正文T划分成n-m+1个长度 为m的子 串,检查比较每个这样的子串是否与长度为m的模式相匹配。
简单的字符串匹配算法
示例
Text=how are you!
,Pattern=are n=12, m=3
Text=how are you!
13
第六章 并行算法设计策略
定义6.1 给定两个串 w 和 u ,对于某一正常数 k ,如果 w = uku , 其中 uk是u自身重复k次, u是u的前缀,则称u是 w的周 期。
例6.1
令w = ababababa,则u = abab是w的周期,因为w = u2a。w还 有如下周期: ab,因为w = u4a ababab,因为w = u2a abababab,因为w = ua 。
2014-5-22
18
第六章 并行算法设计策略
SIMD-CREW模型上的非周期串的匹配算法 1、dual(p,q)的计算 •为了以下的讨论,我们再引入WIT[i],它是一个一维数组,其 中每个分量均是匹配的见证者。 •即若pat在text的位置i不匹配,则定义WIT[i] 0,否则 WIT[i] = 0(1≤i≤n-m+1)。 •我们称WIT[i] = 0的分量是匹配的见证者。起始的WIT[i]均 为零
2014-5-22
10
第六章 并行算法设计策略
3、示例
Text=how are you!
,Pattern=are n=12, m=3
Text=how are you!
i=1 i=2 i=3 i=4
1 2 3 4 5 6 7 8 9101Baidu Nhomakorabea12
匹配
i=5 i=6 i=7 i=8
i=9 i=10
how ow w a ar are re e y yo you ou!
f2 LC2 RC2 1 6 3
f3 LC3 RC3 2 4 6
f4 LC4 RC4 3 6 6
f5 LC5 RC5 1 6 6
2014-5-22
5
第六章 并行算法设计策略 6.2 从问题描述开始设计并行算法 方法描述
从问题本身描述出发,不考虑相应的串行算法,设 计一个全新的并行算法。
注意
2014-5-22
19
第六章 并行算法设计策略
匹配算法的关键概念是正文中两个位置p和q之间的竞争 dual(p,q),其中,1≤p<q≤n = n-m+1,且q-p<m/2。我们 称,当pat为非周期串时,pat不会同时出现在text的位置p处和q 处。 证明:令 j = q -p+1 ,因为 pat 是非周期的,所以WIT[j] 0 , 不妨假设WIT[j] = w,则pat[w] pat[j+w-1]。 •假 定 pat 在 text 的 p 位 置 出 现 , 即 pat = text[p:p+m - 1] , pat[1:m]=text[p:p+m - 1], 则 pat[j+w - 1]=pat[1+j+w - 2]= text[p+ j+w - 2]=text[p+q - p+1+w - 2]= text[q+w - 1] 。由上 可知, pat[w] text[q+w - 1] ,即 pat 不会在 text 的位置 q 处出 现,此时可设置WIT[q] = w。 •同样,假定pat在特text的q位置出现,即pat[w] = text[q+w- 1] ,由此可知 text[q+w - 1] pat[j+w - 1] ,即 pat 不会出现在 20 text的位置p,此时可设置WIT[p] = w+q-p。 2014-5-22
w=3,j=4,s=4-1+3=6 pat[w] = pat[s]=a
w=4,j=4,s=4-1+4=7 pat[w] = a pat[s]=b
j:1<j≤m/2, w:1≤w≤m-j+1, s = j-1+w , pat[w] pat[s]
2014-5-22
16
第六章 并行算法设计策略
根据 WIT[j] 的定义,按如下方式来区分非周期串和周期串: ① 对于所有 2 ≤j≤m/2 ,当且仅当 WIT[j] 0 时,则称 pat 是 非周期的; ② 对于所有2≤j≤m/2,若存在某个j,使得WIT[j] = 0,则 称pat是周期的。 例5.3 令pat1 = abcaabcab,因为对于所有2≤j≤m/2,WIT[j]均不 为零,所以pat1是非周期的; 如令pat2 = abcabcab,则因为WIT[4] = 0,所以pat2是周期 的
1 12 n=12
Text=how are you!
示例 1 3
首次出现的起始位置=5
m=3
Pattern=are
第六章 并行算法设计策略
6.2.1 字符串匹配算法
问题
1.字符串匹配有哪些具体应用?(举例:一般计算机应用中) 2.字符串匹配在信息安全领域有哪些具体应用?(举例)
2014-5-22
8
后,才能运行
第六章 并行算法设计策略 6.1.1设计方法的描述
设计策略描述
发掘和利用现有串行算法中的并行性,直接将串行算法 改造为并行算法。
注意
由串行算法直接并行化的方法是并行算法设计的最常用 方法之一; 不是所有的串行算法都可以直接并行化的; 一个好的串行算法并不能并行化为一个好的并行算法; 许多数值串行算法可以并行化为有效的数值并行算法。
A1 4 A2 1
A5 5
f1 LC1 RC1 1 2 5
A2<Af2=A1 LCf2= LC1 =2 i=2=LCf2= 2 exit
f2 LC2 RC2 1 6 6
A3<Af3=A1 LCf3= LC1 =3 i=3≠LCf2= 2 f3 =LCf3 = LC1 =2
f3 LC3 RC3 2 6 6 A3>Af3=A2 RCf3=RC2 =3 i=3=RCf3=3 exit
第六章 并行算法设计策略
6.1 串行算法的直接并行化 6.2 从问题描述开始设计并行算法 6.3 借用已有算法求解新问题
第六章 并行算法设计策略
6.1串行算法的直接并行化
直接并行化的关键: •分析数据执行的相关性
任务图
T1 T2
•检测算法结构的固有串行性
T3
任务T1和T2可以并行 T3则需要等待T1, T2执行结束
4
else
第六章 并行算法设计策略 算法实例:A={4,1,3 ,2,5},设编号小的处理器写优先
P1 A1 4 P2 A2 1 P3 A3 3 P4 A4 2 f4 LC4 RC4 1 6 6 P5 A5 5 f1 LC1 RC1 1 6 6 f2 LC2 RC2 1 6 6 f3 LC3 RC3 1 6 6 f5 LC5 RC5 1 6 6
w
WIT[j] = w
2014-5-22
15
第六章 并行算法设计策略
例6.2 令pat = abaababa(m = 8), WIT[1] = 0,
WIT[2] = 1,w=1,j=2,s=2-1+1=2 pat[w] = a pat[s]=b
WIT[3] = 2,w=1,j=3,s=3-1+1=3 pat[w] = pat[s]=a w=2,j=3,s=3-1+2=4 pat[w] = b pat[s]=a WIT[4] = 4 w=1,j=4,s=4-1+1=4 pat[w] = pat[s]=a w=2,j=4,s=4-1+2=5 pat[w] = pat[s]=b
第六章 并行算法设计策略
可见dual(p,q)的意义是很明确的:即当pat为非周期串时, 取text中位置p和q(1≤p<q≤n)且q-p<m/2,则pat不会在p 和q处同时出现。因此可排除其中的一个位置,而剩下一个位置 作为可能发生匹配的候选者,令其为r,且置WIT[r] = 0。
A4<Af4=A1 LCf4= LC1 =4 i=4≠LCf2= 2 f4 =LCf4 = LC1 =2
f4 LC4 RC4 2 6 6 A4>Af4=A2 RCf4=RC2 =4 i=4 ≠ RCf3=3 f4 =RCf4 = RC2 =3 f4 LC4 RC4 3 6 6 A4<Af4=A3 LCf4= LC3 =4 i=4=LCf4= 4 exit
2014-5-22
17
第六章 并行算法设计策略
因为串匹配与模式串的周期性和非周期性有关 ,所以按照 Vishkin串匹配的算法, 先要定义串的周期性和非周期性,而判定串的周期性要利用不匹 配表WIT,所以求pat的WIT表是算法最关键而且也是最困难的部 分。 一旦求出了WIT表,就可分别研究非周期串的模式匹配和周期串 的模式匹配算法了。