并行分布式算法
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
i 1 i 1 k k
k k 1 k Cai y 1 Ca a 2 i 1 yv ji \{a ji } 2 i 1 j i
i j
其中,
I
i 1
k
ai
为内连接置换后变成外连接所增加的费用,
k
i 1 yv ji \{a ji }
cai y 为
由外连接变成内连接所减少的费用, Z 为不涉及置换结点的图 G 的其余部分的外
x
g( a, x )= 其中 ai ( a1
( l1 )
k
(c
i 1 j 1
k
k
(l ) ai i v j
( li ) I a( li ) ca aj i
i
(l j )
xij )
( li )
为第 i 个子图中第 li 个结点, ai
( li )
为第 j 个子图中第 li 个结点, a =
2.1 对所有的 v V 并行执行 如果 d (v) 0 ,那么,将 v 加入 I 且从 V 中删 除 v,否则,以 1/ 2d (v) 的概率将 v 标记。 2.2 对所有的 (u, v) E 并行执行 如果 u 和 v 都被标记,那么,将其中顶点
度较小的去掉其标记 2.3 对所有的 v V 并行执行 如果 v 被标记,那么,将 v 加入到 S 2.4 I I S 2.5 从 V 中删除 S (S ) ,从 E 中删除所有相关的边,直到 V 为止。 在图 G(V,E)中,寻找一个边集的子集 M E ,使得 M 中没有两条边有公共顶 点,则 M 即为图 G 的一个匹配,如果 M 中包含了 G 中所有的顶点,则 M 为 G 的一个完美匹配,如果 M 是 G 的匹配中边数最多的一个,则 M 是 G 的一个最大 匹配。 图的匹配与其独立集相对应, 将 G 中每一条边看作一个顶点,当且仅当两个顶点 对应地在 E 中的边有公共端点,这两个顶点之间才有边。因此,寻找匹配的问题 也是一种特殊的独立集问题。一个极大匹配也可以通过贪心算法来串行找到: 贪心 MIS 算法 输入:图 G(V,E) ,V={1,2, n} 输出:一个极大独立集 I V 1. I 2. 对 v =1 到 n,如果 I (V ) 则 I I {v} 。 与最大独立集的问题不同的是,寻找最大匹配的问题有一个多项式时间内的算 法。 目前已知寻找最大匹配的快速并行算法的基本组成部分中都有随机化,我们 先考虑在一个具有完美匹配的图中如何寻找完美匹配的问题。需要用到一个定 理:Tutte 定理。所谓的 Tutte 定理,即:令 A 为待定的按以下方式从图 G(V, E)得到的 n n 的 Tutte 矩阵:待定的数 xij 与边( vi , v j )有关,其中 i j ,且相 应位置上的矩阵元由 Aij xij 和 Aij xij 给出,即
ai( l ) xi
i j i
ai
vj
ai
(l j )
gij c ( l j ) I
ai vj
ai
(l j )
c ( l j ) ( li )
ai aj
i,j=1, k
G ( X ) gij xij
i 1 j 1
k
k
现在,只需求解满足上述约束条件的 X 使 G(X)最大,因此,上述问题又转化 成求解分配问题。 最优分配算法 最优分配有很多种,主要介绍下西北角法。它要用到一条重要的理论: 设 X=( xij )是一个分配方案,则对于任何问题满足
a1 ak a ji a jk
'
(π( a i)= a ji,当 i≠ l 时 a ji
a jl )得到 G 的另一 K 划
分{( Vi , Ei ) ,i=1, k },现要求置换前后总外连接费用之差 外连接费用
'
a i 的外连接费用 Eai 为:
图的最优划分 许多问题都能归结为图的形式,因此,首先要研究图的最优划分 数学模型——化为分配问题 1。 问题 (1)连通图 G=(V,E) ,其中 V=( a i)是结点集,︱V︱= nk ,E 是边的集合。 (2)费用矩阵 C (cij )nknk ,其中 cij 表示 a i 与 a j 之间连线的权,若 a i 与 a j 之间 有连线,则 cij =0。要将图 G 划分成 k 个子图,每个子图有 n 个结点使得各连通子 图之间的外连线之权的总和为最小。 而我们又已知图的最优划分可以通过子集交 换得到, 子集交换可以通过一些列元素置换得到。 因此, 在初始 k 划分的基础上, 最优划分可以通过一些列元素置换得到。 2。 数学模型的建立 设{(Vi,Ei) ,i=1, , k }是图 G 的一个任意 k 划分,C (cij )nknk 为费用矩阵, 分别从 Vi 中取出 a i 送到 Vji 中(i=1, , k ) ,即对( a 1, a k)作了置换
O(log n) 步内插入其中。将插入到邻近分离数之间的元素看作一个子问题,用同
样的方法解决那些规模超过 log n 的子问题。先讨论使用随机采样选取分离数的 作用。我们称落入到两个邻近分离数之间的数集为一个盒,通过调用 Chernoff 界(不是 Chebyshev 界) ,我们可以知道:假定用一棵树来描述盒排序算法的实 现,树的每个结点都是一个盒且随着算法的运行而增加,为此,我们也将 n 个输 入的数看作一个盒(大小为 n ) ,这个盒作为树的根结点,结点的孩子在该盒被 随机分离数划分的时候产生,每个叶子结点都是一个大小不超过 log n 的盒。 我们只要找树的根叶路径,求得沿着该路径运行时花了多少个 PRAM 并行步, 而不是根叶路径的长度, 因为盒到其孩子的运行时间是该盒大小的对数。需要讨 论在任意一个根叶路径的盒大小的对数和是否以很大的概率为 O(log n) ,由此也 就知道了总的运行时间是否为 O(log n) 。 极大独立集和完美匹配 我们令 G(V,E)为一个图,V 表示 n 个顶点的集合,E 表示 m 条边的集合。一个顶 点集的子集 I V ,若 I 中任意两个顶点都不相邻,则称 I 是图 G 中的独立集。 若 I 为独立集,但任意增加一个顶点,都会破坏其独立性,则称 I 为图 G 的极大 独立集。 (极大独立集并非最大独立集,最大独立集乃顶点数目最多的极大独立 集。 ) 并行 MIS 算法: 输入:图 G(V,E) 输出:一个极大独立集 I V 1. I 2. 重复
ui v j gij
, , ak(lk ) ) ,于是问题变为求满足约束条件
k j 1
xij xij 1
i 1
xij =0 或 1
a v v 1 k
求满足这一约束条件的( a, x )使 g( a, x )最大。 注意,g( a, x )不仅与置换 X 有关,而且与 a 的选择有关,不太好处理。 3。化为求近似解 为解上述问题, 要设法去掉 a , 于是采用近似算法。 设
虑一个更有效的算法, 这个算法在分离的时候消耗同样的步数,但在算法中将问 题分成几个部分,每部分的规模为 n1 ,其中∈为固定的常数。如果可以做到这 一点,则可以期待总体并行运算时间在 O(log n) 步内:在下一层递归中,分离时 间将为 n1 的对数,是第一次递归的分离时间的常数部分。因此,这次递归到下 一次递归的运行时间形成一个和为 O(log n) 的几何级数。但是,如果在 PRAM 模 型中拥有比待排序数多得多的处理器,则可以做到在 O(log n) 步内完成排序。 下面,我们来分析并行排序算法的各个步骤。在并行排序中,所使用的处理器个 数是固定的,只有并行步数为随机变量。它是一个盒排序,也就是说先从 n 个数 中取 n 个数,用 n 个处理器排好,将之视为分离数组,然后再将其他的数在
xij , ( vi , v j ) E 且 i j , Aij
- xij , ( vi , v j ) E 且 i j , 0, ( vi , v j ) E ,
当且仅当 det(A)不恒等于零时,G 有完美匹配。因此,在解决完美匹配问题的 时候,首先要构造一个矩阵 A,A 的每个待定的位置独立地从一个合适大小的整 数集中随机取值, 然后求出已确定的整数矩阵的行列式。 如果 G 有一个完美匹配, 则行列式以一个合适大小的概率不为零。另一方面,如果 G 没有完美匹配,则行 列式始终为零。
t i
由此,我们知道 PRAM 模型中一个分离的步骤能在 O(log n) 个并行步内完成,上 述算法以很大的概率在 O(log 2 n) 个并行步内终止。 上面算法的缺点是在第四步的分离工作,消耗了 O(log n) 个并行步,但获得较小 的利益——它将问题的规模从 n 缩减到 n 的一个常分数。为了改进这点,我们考
并行分布式算法——李终胜
程序并行理论
所谓并行分解, 也就是将一个问题说明分解成多个子问题说明,使该问题说明的 求解能归结为多个子问题说明的并行求解。 下面,我们分析下用 n 个处理器的 PRAM 模型为 n 个数进行排序的算法。为了方 便,我们假设要排序的数两两不同。 1>.若 n =1,停止 2>.从 n 个输入的数中随机选择一个分离元 3>.每个分离器决定她的元素比分离元大还是小 4>.令 j 代表分离元在 n 个数中的大小次序。若 j [n/4,3n/4],则断言这步 失败且回到上面 1>,若 j [n/4,3n/4],这步成功。将这个分离元移至第 j 个 处理器 Pj 。每个小于该分离元的数移至另一个处理器 Pi ,其中 i﹤j,每个大于 该分离元的数移至另一个处理器 Pk ,其中 k﹥j。 5>.我们递归的将处理器 P 1 至 Pj 1 中的数和处理器 Pj 1 至 P n 中的数排序。这些递 归排序相互之间独立。 我们研究上面每个步骤到底有多少 CREW PRAM 的并行步。在详细分析之前,我们 预测上述算法在 O(log n) 步内终止。我们能期待的最好情况是我们分离的时候取 得成功。如果幸运的话,每一个递归的分离都将在 O(log n) 各并行步内终止。即 使这样,为了算法在 O(log n) 步内终止,还要求每一次分离都在常数个并行步内 完成。但事实上,我们没办法做到这点。 上述方案的第 3 步可以用一个 PRAM 并行步完成,可忽略。考虑上述步骤 4,我 们的目的是确定有 i﹤j 的处理器 Pi 包含一个输入元不同的且次序小于 j 的数, 类似确定有 k﹥j 的处理器 Pk 包含一个与输入元不同的且次序大于 j 的数。这样 处理需要多少 PRAM 并行步? 处理器 Pi 从它的一个寄存器中建立一个比特 bi ,若它包含的数比分离元大,bi 取 值 0,其余情况取值 1。对所有的 i,令 Si bt 。
~ (l j ) ~ (l j )
I a( li ) ) (l )
i
vi
i
j
i
在点 a i 处取得极大值(注意, a i 只与 i 和 j 有关,与 a 无关) ,我们令
fij max(ca( li )v I a( l ) ) c ( l j ) I
连接费用,于是置换前后总外连接费用之差为: g=T-T′=
[(c
i 1
k
ai v ( i )
I ai ) cai a ( i ) ] , (i) ji
g 为费用减少函数,当 (i) i 时,g=0。 令 1 当 a(i) a (i ) X=( x ij)k×k 0 g 可以写成 当 a(i) a (i )
Eai
a i 的内连接费用 I ai 为
C
j 1 yv j j i
k
ai y
I ai =
置换前总外连接费用 T 为
c
yvi
i
ai y
1 k k T=Z+ Ea — cai a j 2 i 1 j i i 1
k
置换后总的外连接费用
T′=Z+ I ai Eai
k k 1 k Cai y 1 Ca a 2 i 1 yv ji \{a ji } 2 i 1 j i
i j
其中,
I
i 1
k
ai
为内连接置换后变成外连接所增加的费用,
k
i 1 yv ji \{a ji }
cai y 为
由外连接变成内连接所减少的费用, Z 为不涉及置换结点的图 G 的其余部分的外
x
g( a, x )= 其中 ai ( a1
( l1 )
k
(c
i 1 j 1
k
k
(l ) ai i v j
( li ) I a( li ) ca aj i
i
(l j )
xij )
( li )
为第 i 个子图中第 li 个结点, ai
( li )
为第 j 个子图中第 li 个结点, a =
2.1 对所有的 v V 并行执行 如果 d (v) 0 ,那么,将 v 加入 I 且从 V 中删 除 v,否则,以 1/ 2d (v) 的概率将 v 标记。 2.2 对所有的 (u, v) E 并行执行 如果 u 和 v 都被标记,那么,将其中顶点
度较小的去掉其标记 2.3 对所有的 v V 并行执行 如果 v 被标记,那么,将 v 加入到 S 2.4 I I S 2.5 从 V 中删除 S (S ) ,从 E 中删除所有相关的边,直到 V 为止。 在图 G(V,E)中,寻找一个边集的子集 M E ,使得 M 中没有两条边有公共顶 点,则 M 即为图 G 的一个匹配,如果 M 中包含了 G 中所有的顶点,则 M 为 G 的一个完美匹配,如果 M 是 G 的匹配中边数最多的一个,则 M 是 G 的一个最大 匹配。 图的匹配与其独立集相对应, 将 G 中每一条边看作一个顶点,当且仅当两个顶点 对应地在 E 中的边有公共端点,这两个顶点之间才有边。因此,寻找匹配的问题 也是一种特殊的独立集问题。一个极大匹配也可以通过贪心算法来串行找到: 贪心 MIS 算法 输入:图 G(V,E) ,V={1,2, n} 输出:一个极大独立集 I V 1. I 2. 对 v =1 到 n,如果 I (V ) 则 I I {v} 。 与最大独立集的问题不同的是,寻找最大匹配的问题有一个多项式时间内的算 法。 目前已知寻找最大匹配的快速并行算法的基本组成部分中都有随机化,我们 先考虑在一个具有完美匹配的图中如何寻找完美匹配的问题。需要用到一个定 理:Tutte 定理。所谓的 Tutte 定理,即:令 A 为待定的按以下方式从图 G(V, E)得到的 n n 的 Tutte 矩阵:待定的数 xij 与边( vi , v j )有关,其中 i j ,且相 应位置上的矩阵元由 Aij xij 和 Aij xij 给出,即
ai( l ) xi
i j i
ai
vj
ai
(l j )
gij c ( l j ) I
ai vj
ai
(l j )
c ( l j ) ( li )
ai aj
i,j=1, k
G ( X ) gij xij
i 1 j 1
k
k
现在,只需求解满足上述约束条件的 X 使 G(X)最大,因此,上述问题又转化 成求解分配问题。 最优分配算法 最优分配有很多种,主要介绍下西北角法。它要用到一条重要的理论: 设 X=( xij )是一个分配方案,则对于任何问题满足
a1 ak a ji a jk
'
(π( a i)= a ji,当 i≠ l 时 a ji
a jl )得到 G 的另一 K 划
分{( Vi , Ei ) ,i=1, k },现要求置换前后总外连接费用之差 外连接费用
'
a i 的外连接费用 Eai 为:
图的最优划分 许多问题都能归结为图的形式,因此,首先要研究图的最优划分 数学模型——化为分配问题 1。 问题 (1)连通图 G=(V,E) ,其中 V=( a i)是结点集,︱V︱= nk ,E 是边的集合。 (2)费用矩阵 C (cij )nknk ,其中 cij 表示 a i 与 a j 之间连线的权,若 a i 与 a j 之间 有连线,则 cij =0。要将图 G 划分成 k 个子图,每个子图有 n 个结点使得各连通子 图之间的外连线之权的总和为最小。 而我们又已知图的最优划分可以通过子集交 换得到, 子集交换可以通过一些列元素置换得到。 因此, 在初始 k 划分的基础上, 最优划分可以通过一些列元素置换得到。 2。 数学模型的建立 设{(Vi,Ei) ,i=1, , k }是图 G 的一个任意 k 划分,C (cij )nknk 为费用矩阵, 分别从 Vi 中取出 a i 送到 Vji 中(i=1, , k ) ,即对( a 1, a k)作了置换
O(log n) 步内插入其中。将插入到邻近分离数之间的元素看作一个子问题,用同
样的方法解决那些规模超过 log n 的子问题。先讨论使用随机采样选取分离数的 作用。我们称落入到两个邻近分离数之间的数集为一个盒,通过调用 Chernoff 界(不是 Chebyshev 界) ,我们可以知道:假定用一棵树来描述盒排序算法的实 现,树的每个结点都是一个盒且随着算法的运行而增加,为此,我们也将 n 个输 入的数看作一个盒(大小为 n ) ,这个盒作为树的根结点,结点的孩子在该盒被 随机分离数划分的时候产生,每个叶子结点都是一个大小不超过 log n 的盒。 我们只要找树的根叶路径,求得沿着该路径运行时花了多少个 PRAM 并行步, 而不是根叶路径的长度, 因为盒到其孩子的运行时间是该盒大小的对数。需要讨 论在任意一个根叶路径的盒大小的对数和是否以很大的概率为 O(log n) ,由此也 就知道了总的运行时间是否为 O(log n) 。 极大独立集和完美匹配 我们令 G(V,E)为一个图,V 表示 n 个顶点的集合,E 表示 m 条边的集合。一个顶 点集的子集 I V ,若 I 中任意两个顶点都不相邻,则称 I 是图 G 中的独立集。 若 I 为独立集,但任意增加一个顶点,都会破坏其独立性,则称 I 为图 G 的极大 独立集。 (极大独立集并非最大独立集,最大独立集乃顶点数目最多的极大独立 集。 ) 并行 MIS 算法: 输入:图 G(V,E) 输出:一个极大独立集 I V 1. I 2. 重复
ui v j gij
, , ak(lk ) ) ,于是问题变为求满足约束条件
k j 1
xij xij 1
i 1
xij =0 或 1
a v v 1 k
求满足这一约束条件的( a, x )使 g( a, x )最大。 注意,g( a, x )不仅与置换 X 有关,而且与 a 的选择有关,不太好处理。 3。化为求近似解 为解上述问题, 要设法去掉 a , 于是采用近似算法。 设
虑一个更有效的算法, 这个算法在分离的时候消耗同样的步数,但在算法中将问 题分成几个部分,每部分的规模为 n1 ,其中∈为固定的常数。如果可以做到这 一点,则可以期待总体并行运算时间在 O(log n) 步内:在下一层递归中,分离时 间将为 n1 的对数,是第一次递归的分离时间的常数部分。因此,这次递归到下 一次递归的运行时间形成一个和为 O(log n) 的几何级数。但是,如果在 PRAM 模 型中拥有比待排序数多得多的处理器,则可以做到在 O(log n) 步内完成排序。 下面,我们来分析并行排序算法的各个步骤。在并行排序中,所使用的处理器个 数是固定的,只有并行步数为随机变量。它是一个盒排序,也就是说先从 n 个数 中取 n 个数,用 n 个处理器排好,将之视为分离数组,然后再将其他的数在
xij , ( vi , v j ) E 且 i j , Aij
- xij , ( vi , v j ) E 且 i j , 0, ( vi , v j ) E ,
当且仅当 det(A)不恒等于零时,G 有完美匹配。因此,在解决完美匹配问题的 时候,首先要构造一个矩阵 A,A 的每个待定的位置独立地从一个合适大小的整 数集中随机取值, 然后求出已确定的整数矩阵的行列式。 如果 G 有一个完美匹配, 则行列式以一个合适大小的概率不为零。另一方面,如果 G 没有完美匹配,则行 列式始终为零。
t i
由此,我们知道 PRAM 模型中一个分离的步骤能在 O(log n) 个并行步内完成,上 述算法以很大的概率在 O(log 2 n) 个并行步内终止。 上面算法的缺点是在第四步的分离工作,消耗了 O(log n) 个并行步,但获得较小 的利益——它将问题的规模从 n 缩减到 n 的一个常分数。为了改进这点,我们考
并行分布式算法——李终胜
程序并行理论
所谓并行分解, 也就是将一个问题说明分解成多个子问题说明,使该问题说明的 求解能归结为多个子问题说明的并行求解。 下面,我们分析下用 n 个处理器的 PRAM 模型为 n 个数进行排序的算法。为了方 便,我们假设要排序的数两两不同。 1>.若 n =1,停止 2>.从 n 个输入的数中随机选择一个分离元 3>.每个分离器决定她的元素比分离元大还是小 4>.令 j 代表分离元在 n 个数中的大小次序。若 j [n/4,3n/4],则断言这步 失败且回到上面 1>,若 j [n/4,3n/4],这步成功。将这个分离元移至第 j 个 处理器 Pj 。每个小于该分离元的数移至另一个处理器 Pi ,其中 i﹤j,每个大于 该分离元的数移至另一个处理器 Pk ,其中 k﹥j。 5>.我们递归的将处理器 P 1 至 Pj 1 中的数和处理器 Pj 1 至 P n 中的数排序。这些递 归排序相互之间独立。 我们研究上面每个步骤到底有多少 CREW PRAM 的并行步。在详细分析之前,我们 预测上述算法在 O(log n) 步内终止。我们能期待的最好情况是我们分离的时候取 得成功。如果幸运的话,每一个递归的分离都将在 O(log n) 各并行步内终止。即 使这样,为了算法在 O(log n) 步内终止,还要求每一次分离都在常数个并行步内 完成。但事实上,我们没办法做到这点。 上述方案的第 3 步可以用一个 PRAM 并行步完成,可忽略。考虑上述步骤 4,我 们的目的是确定有 i﹤j 的处理器 Pi 包含一个输入元不同的且次序小于 j 的数, 类似确定有 k﹥j 的处理器 Pk 包含一个与输入元不同的且次序大于 j 的数。这样 处理需要多少 PRAM 并行步? 处理器 Pi 从它的一个寄存器中建立一个比特 bi ,若它包含的数比分离元大,bi 取 值 0,其余情况取值 1。对所有的 i,令 Si bt 。
~ (l j ) ~ (l j )
I a( li ) ) (l )
i
vi
i
j
i
在点 a i 处取得极大值(注意, a i 只与 i 和 j 有关,与 a 无关) ,我们令
fij max(ca( li )v I a( l ) ) c ( l j ) I
连接费用,于是置换前后总外连接费用之差为: g=T-T′=
[(c
i 1
k
ai v ( i )
I ai ) cai a ( i ) ] , (i) ji
g 为费用减少函数,当 (i) i 时,g=0。 令 1 当 a(i) a (i ) X=( x ij)k×k 0 g 可以写成 当 a(i) a (i )
Eai
a i 的内连接费用 I ai 为
C
j 1 yv j j i
k
ai y
I ai =
置换前总外连接费用 T 为
c
yvi
i
ai y
1 k k T=Z+ Ea — cai a j 2 i 1 j i i 1
k
置换后总的外连接费用
T′=Z+ I ai Eai