第二部分 分布式算法 第三次课 中国科学技术大学计算机系 国家高性能计算中心(合肥)

Slides:



Advertisements
Similar presentations
2.8 函数的微分 1 微分的定义 2 微分的几何意义 3 微分公式与微分运算法则 4 微分在近似计算中的应用.
Advertisements

第八章 第四节 机动 目录 上页 下页 返回 结束 一个方程所确定的隐函数 及其导数 隐函数的微分法.
阻塞操作. 在 linux 里,一个等待队列由一个 wait_queue_head_t 类型的结构来描述 等待队列的初始化: static wait_queue_head_t testqueue; init_waitqueue_head(&testqueue);
与优秀的人在一起
第五章 二次型. 第五章 二次型 知识点1---二次型及其矩阵表示 二次型的基本概念 1. 线性变换与合同矩阵 2.
常用逻辑用语复习课 李娟.
一、原函数与不定积分 二、不定积分的几何意义 三、基本积分公式及积分法则 四、牛顿—莱布尼兹公式 五、小结
第5章 定积分及其应用 基本要求 5.1 定积分的概念与性质 5.2 微积分基本公式 5.3 定积分的换元积分法与分部积分法
第三节 格林公式及其应用(2) 一、曲线积分与路径无关的定义 二、曲线积分与路径无关的条件 三、二元函数的全微分的求积 四、小结.
七 年 级 数 学 第二学期 (苏 科 版) 复习 三角形.
在PHP和MYSQL中实现完美的中文显示
第5章 §5.3 定积分的积分法 换元积分法 不定积分 分部积分法 换元积分法 定积分 分部积分法.
Kvm异步缺页中断 浙江大学计算机体系结构实验室 徐浩.
第七章 图 (Graph)
Ch.7 图 图是一种复杂的非线性结构 应用:AI、工程、数学、生物、计算机 结点间的逻辑关系:任两个结点都可能相关
图的遍历.
强连通分量 无向图 1、任意两顶点连通称该图为连通图 2、否则将其中的极大连通子图称为连通分量 A D C B E 有向图
矢量距离路由.
网络常用常用命令 课件制作人:谢希仁.
中国科学技术大学计算机系 国家高性能计算中心(合肥)
计算机数学基础 主讲老师: 邓辉文.
§2 求导法则 2.1 求导数的四则运算法则 下面分三部分加以证明, 并同时给出相应的推论和例题 .
第六章 基本检索与周游方法.
中国科学技术大学计算机系 国家高性能计算中心(合肥)
中国科学技术大学计算机系 国家高性能计算中心(合肥)
第二部分 分布式算法 汪炀 第二次课 中国科学技术大学计算机系 国家高性能计算中心(合肥)
中国科学技术大学计算机系 陈香兰(0551- ) Spring 2009
中国科学技术大学计算机系 国家高性能计算中心(合肥)
28.1 锐角三角函数(2) ——余弦、正切.
使用矩阵表示 最小生成树算法.
无向树和根树.
第 五 章 图 论 (第二部分) 1. 通路 2. 图的连通性.
第6章 图 本章中介绍下列主要内容: 图的定义 图的存储结构 图的遍历操作 图的几个典型问题.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
实数与向量的积.
复习 图的定义和术语 图(Graph)、有向图、无向图、子图、有向完全图 、完全图、稀疏图、稠密图、权、网、邻接点、相关边、度、路径、路径长度、回路、简单路径、简单回路、连通、连通图、连通分量、强连通图、强连通分量、生成树 图的存储方法 给定一个图,画出邻接矩阵、邻接表 图的邻接矩阵和邻接表的存储算法.
顺序表的删除.
概 率 统 计 主讲教师 叶宏 山东大学数学院.
线 性 代 数 厦门大学线性代数教学组 2019年4月24日6时8分 / 45.
5.2 常用统计分布 一、常见分布 二、概率分布的分位数 三、小结.
第4章 基本搜索和遍历方法.
定理 6.10(五色定理):任何平面图G是5-可着色的。
复习.
信号量(Semaphore).
复习: 若A(x1,y1,z1) , B(x2,y2,z2), 则 AB = OB - OA=(x2-x1 , y2-y1 , z2-z1)
正切函数的图象和性质 周期函数定义: 一般地,对于函数 (x),如果存在一个非零常数T,使得当x取定义域内的每一个值时,都有
定理21.9(可满足性定理)设A是P(Y)的协调子集,则存在P(Y)的解释域U和项解释,使得赋值函数v(A){1}。
第16讲 相似矩阵与方阵的对角化 主要内容: 1.相似矩阵 2. 方阵的对角化.
§8.3 不变因子 一、行列式因子 二、不变因子.
§6.7 子空间的直和 一、直和的定义 二、直和的判定 三、多个子空间的直和.
知识点回顾 图的深度优先和广度优先遍历思想 图的深度优先遍历算法(用邻接表作为存储结构) 图的广度优先遍历算法(用邻接矩阵作为存储结构)
1.2 子集、补集、全集习题课.
1.设A和B是集合,证明:A=B当且仅当A∩B=A∪B
树和图 tree and graph 蔡亚星.
第七、八次实验要求.
第15讲 特征值与特征向量的性质 主要内容:特征值与特征向量的性质.
中国科学技术大学计算机系 国家高性能计算中心(合肥)
第二部分 分布式算法 汪炀 第二次课 中国科学技术大学计算机系 国家高性能计算中心(合肥)
§2 方阵的特征值与特征向量.
WSAAsyncSelect 模型 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang
主讲教师 欧阳丹彤 吉林大学计算机科学与技术学院
基于列存储的RDF数据管理 朱敏
陪集 例:三次对称群S3={e,1, 2, 3, 4, 5}的所有非平凡子群是:
第二專長學分班第三次作業.
本节内容 1. 平衡二叉树的定义 2.平衡化旋转 3.平衡二叉排序树的插入操作 昆山爱达人信息技术有限公司
最小生成树 最优二叉树.
§2 自由代数 定义19.7:设X是集合,G是一个T-代数,为X到G的函数,若对每个T-代数A和X到A的函数,都存在唯一的G到A的同态映射,使得=,则称G(更严格的说是(G,))是生成集X上的自由T-代数。X中的元素称为生成元。 A变, 变 变, 也变 对给定的 和A,是唯一的.
3.3.2 两点间的距离 山东省临沂第一中学.
Cfc Zeilberger 算法 陈焕林 陈永川 付梅 臧经涛 2009年7月29日.
1.2.2 充要条件 高二数学 选修 1-1 第一章 常用逻辑用语.
Presentation transcript:

第二部分 分布式算法 第三次课 中国科学技术大学计算机系 国家高性能计算中心(合肥) 第二部分 分布式算法 第三次课 中国科学技术大学计算机系 国家高性能计算中心(合肥)

§2.2.2 convergecast(汇集,敛播) 与广播问题相反,汇集是从所有结点收集信息至根。为简单起见,先考虑一个特殊的变种问题: 假定每个pi开始时有一初值xi,我们希望将这些值中最大者发送至根pr。

§2.2.2 convergecast(汇集,敛播) 算法 每个叶子结点pi发送xi至双亲。//启动者 对每个非叶结点pj,设pj有k个孩子pi1,…,pik,pj等待k个孩子的msg vi1,vi2,…,vik,当pj收到所有孩子的msg之后将vj=max{xj,vi1,…,vik}发送到pj的双亲。 换言之:叶子先启动,每个处理器pi计算以自己为根的子树里的最大值vi,将vi发送给pi的双亲。 复杂性 Th2.5 当生成树高为d时,存在一个异步的敛播方法,其msg复杂性为n-1,时间复杂度为d。(与Th2.2相同) 广播和敛播算法用途:初始化某一信息请求(广播发布),然后用敛播响应信息至根。

§2.3 构造生成树 上节算法均假设通信网的生成树已知。本节介绍生成树的构造问题。 1.Flooding算法(淹没) 算法 设pr是特殊处理器。从pr开始,发送M到其所有邻居。当pi第1次收到消息M(不妨设此msg来自于邻居pj)时,pi发送M到除pj外的所有邻居。

§2.3 构造生成树 msg复杂性 因为每个结点在任一信道上发送M不会多于1次,所以每个信道上M至多被发送两次(使用该信道的每个处理器各1次)。 在最坏情况下:M除第1次接收的那些信道外,所有其他信道上M被传送2次。因此,有可能要发送2m-(n-1)个msgs。这里m是系统中信道总数,它可能多达n(n-1)/2。 时间复杂性:O(D) D—网直径 2.构造生成树 对于flooding稍事修改即可得到求生成树的方法。

§2.3 构造生成树 ①基本思想 首先,pr发送M给所有邻居,pr为根 当pi从某邻居pj收到的M是第1个来自邻居的msg时,pj是pi的双亲;若pi首次收到的M同时来自多个邻居,则用一个comp事件处理自上一comp事件以来的所有已收到的msgs,故此时,pi可在这些邻居中任选一个邻居pj做双亲。 当pi确定双亲是pj时,发送<parent>给pj,并向此后收到发来M的处理器发送<reject>msg

§2.3 构造生成树 ①基本思想 因为pi收到pj的M是第1个M,就不可能已收到其他结点的M,当然可能同时收到(说明pi与这些邻居间不是父子关系,或说它们不是生成树中的边);同时pi将M转发给其余邻居,这些邻居尚未发M给pi,或虽然已发M给pi,但pi尚未收到。 pi向那些尚未发M给pi(或已发M但尚未到达pi)的邻居转发M之后,等待这些邻居发回响应msg:<parent>或<reject>。那些回应<parent>的邻居是pi的孩子。 当pi发出M的所有接收者均已回应(<parent>或<reject>),则pi终止。将parent和children边保留即为生成树。

§2.3 构造生成树 ②图示 pi若认为pj是其双亲,则pi向pr发出M,而pr仍会向pi发reject,但因为此前pr向pi发出过M,故pi收到M时仍会向pr发reject。(可以改进?)

③算法: Alg2.2 构造生成树(code for pi 0≤i≤n-1) §2.3 构造生成树 ③算法: Alg2.2 构造生成树(code for pi 0≤i≤n-1) 初值:parent=nil;集合children和other均为φ upon receiving no message: if i=r and parent=nil then { //根尚未发送M send M to all neighbors; parent:=i;} //根的双亲置为自己 upon receiving M from neighbor pj: if parent=nil then {//pi此前未收到过M,M是pi收到的第1个msg parent:=j; send <parent> to pj; //pj是pi的双亲 send M to all neighbors except pj; }else //pj不可能是pi的双亲,pi收到的M不是第1个msg send<reject> to pj; upon receiving <parent> from neighbor pj: children:=children∪{ j }; //pj是pi的孩子,将j加入孩子集 if children∪other 包含了除parent外的所有邻居 then terminate; upon receiving <reject> from neighbor pj: other:=other∪{ j }; //将j加入other,通过非树边发送的msg。 if children∪other包含了除pi的双亲外的所有邻居 then terminate;

§2.3 构造生成树 ④分析 Lemma2.6 在异步模型的每个容许执行中,算法2.2构造一棵根为pr的生成树。(正确性) Pf:算法代码告诉我们两个重要事实 一旦处理器设置了parent变量,它绝不改变,即它只有一个双亲 处理器的孩子集合决不会减小。 因此,最终由parent和children确定的图结构G是静止的,且parent和children变量在不同结点上是一致的,即若pj是pi的孩子,则pi是pj的双亲。 下述证明结果图G是根为pr的有向生成树。

§2.3 构造生成树 为何从根能到达每一结点?(连通) 反证:假设某结点在G中从pr不可达,因网络是连通的,若存在两个相邻的结点pi和pj使得pj在G中是从pr可达的(以下简称pj可达),但pi不可达。因为G里一结点从pr可达当且仅当它曾设置过自己的parent变量(Ex 证明),所以pi的parent变量在整个执行中仍为nil,而pj在某点上已设置过自己的parent变量,于是pj发送M到pi(line9),因该执行是容许的,此msg必定最终被pi接收,使pi将自己的parent变量设置为j。矛盾!

§2.3 构造生成树 为何无环?(无环) 假设有一环,pi1,…pikpi1,若pi是pj的孩子,则pi在pj第1次收到M之后第1次收到M。因每个处理器在该环上是下一处理器的双亲,这就意味着pi1在pi1第1次接收M之前第1次接收M。矛盾! 复杂性 显然,此方法与淹没算法相比,增加了msg复杂性,但只是一个常数因子。在异步通信模型里,易看到在时刻t,消息M到达所有与pr距离小于等于t的结点。因此有: Th2.7 对于具有m条边和直径D的网络,给定一特殊结点,存在一个msg复杂性为O(m),时间复杂性为O(D)的异步算法找到该网络的一棵生成树。

§2.3 构造生成树 Alg2.2在同步模型下仍可工作。其分析类似于异步情形。然而,与异步不同的是,它所构造的生成树一定是一棵广度优先搜索(BFS)树。 Lemma2.8 在同步模型下,Alg2.2的每次容许执行均构造一棵根为pr的BFS树。 Pf:对轮t进行归纳。即要证明:在第t轮开始时刻 ①根据parent变量构造的图G是一棵包括所有与pr距离至多为t-1结点的BFS树; ②而传输中的消息M仅来自于与pr距离恰为t-1的结点。 由此构造的树是一棵根为pr的BFS

§2.3 构造生成树 当t=1时,所有parent初值为nil,M从pr传出。 假设引理对第t-1≥1轮为真,在该轮里,从距离 t-2的结点传出的M被接收,任何接收M的结点与pr的距离不超过t-1(恰为t-1或更短),那些parent值非空的接收结点显然与pr的距离不超过t-2,他们既不改变parent的值也不转发M;而与pr距离为t-1的结点在t-1轮里收到M,因为它们的parent为nil,故将其置为合适的双亲并转发M。距离pr大于t-1的结点不会收到M,因此也不会转发M。因此有如下定理: Th2.9 对于具有m条边直径为D的网络,给定一个特殊结点,存在一个同步算法在msg复杂性为O(m),时间复杂性为O(D)内找到一棵BFS树。

§2.3 构造生成树 异步系统里,Alg2.2能构造BFS树? 例如,考虑5个顶点的完全连通图 P0为根,假定M消息按P0到p1,P1到P2,P2到P3,P3到P4的次序快速传播,而M在其它路径上传播较慢。结果生成树是从P0到P4的链,它不是BFS树 虽然此图直径D=1,生成树的高度d=4,但是算法的运行时间仍然为O(D)而不是O(d)。 理解:P0到P4的M在1个时间内到达,即P0->P1->P2->P3->P4的时间之和不超过1。

§2.3 构造生成树 信息的请求和收集 将算法2.2(求生成树)和汇集算法组合即可完成。组合算法的时间复杂性在同步和异步模型中不同,设网是完全图 求生成树算法:同步和异步均为 消息复杂性O(m) 时间复杂性O(D) 汇集算法:同步和异步均有 msg n-1 time d //生成树高 组合算法 ①同步:组合算法的msg复杂性O(m+n);BFS树中, d=1, d≤D,故时间复杂性O(D+d)=O(D)=O(1)。 ②异步:组合算法的msg复杂性O(m+n);生成树高 d=n-1,所以时间复杂性O(D+d)=O(d)=O(n)。 1-time复杂性的组合算法T(n)=O(D)。

§2.4 构造DFS生成树(指定根) 回忆无向图的深度优先搜索问题: 方法: 2 3 1 A B C 7 D E 5 F 4 8 9 G H 若无未访问过的邻接点,则后退寻找,直至全部被访问为止 2 3 1 A B C 7 D E 5 F 4 8 9 G H I 6

§2.4 构造DFS生成树(指定根) 2 3 1 A B C 7 D E 5 F 4 8 9 G H I 6 基本思想: 设定Pr为指定的根节点,Pr从还未向其发送消息<m>的邻接节点中任选一个节点发送消息<m>。 当Pi从Pj收到的消息<m>是第一个来自于邻接节点的消息时,Pj为Pi的双亲,向其发送<parent>消息,并向此后向自己发送消息的邻居发送<reject>消息。 Pi从还未发送过消息的邻居中任选一个,发送消息<m>,然后等待<parent>或者<reject>消息,并将回应<parent>的节点加到自己的孩子集合中。 当Pi向所有的邻居都转发过消息后,Pi终止。 2 3 1 A B C 7 D E 5 F 4 8 9 G H I 6

§2.4 构造DFS生成树(指定根) 构造DFS树时每次加一个结点,而不像Alg2.2那样,试图在树上同时增加同一层的所有结点。 Alg2.3 构造DFS生成树,为Pr为根 Code for processor Pi, 0≤i ≤ n-1 var parent: init nil; children: init φ; unexplored: init all the neighbors of Pi //未访问过的邻居集 1: upon receiving no msg: 2: if (i=r) and (parent=nil) then { //当Pi为根且未发送M时 3: parent := i; //将parent置为自身的标号 4: Pj ∈ unexplored; 5: 将Pj从unexplored中删去; //若Pr是孤立结点,4-6应稍作修改 6: send M to Pj; }//endif

§2.4 构造DFS生成树(指定根) 7: upon receiving M from neighbor Pj: 8: if parent=nil then { //Pi此前未收到M 9: parent := j; //Pj是Pi的父亲 10: 从unexplored中删Pj 11: if unexplored ≠φthen { 12: Pk ∈ unexplored; 13: 将Pk从unexplored中删去; 14: send M to Pk; 15: } else send <parent> to parent; //当Pi的邻居均已访问过,返回到父亲 16: }else send <reject> to Pj; //当Pi已访问过时

§2.4 构造DFS生成树(指定根) 17: upon receiving <parent> or <reject> from neighbor Pj: 18: if received <parent> then add j to children; //Pj是Pi的孩子 19: if unexplored = φ then { //Pi的邻居均已访问 20: if parent ≠ i then send <parent> to parent; //Pi非根,返回至双亲 21: terminate; //以Pi为根的DFS子树已构造好! 22: }else { //选择Pi的未访问过的邻居访问之 23: Pk ∈ unexplored; 24: 将Pk从unexplored中删去; 25: send M to Pk; }

§2.4 构造DFS生成树(指定根) 引理2.10 在异步模型里的每个容许执行,Alg2.3构造一棵以Pr为根的DFS树。证明留作练习。 Th2.11 对于一个具有m条边,n个结点的网络,以及给定的特殊顶点,存在一个时间复杂性和消息复杂性均为O(m)的异步算法找到一棵DFS树。 Pf:每个结点在其邻接边上至多发送M一次,每个结点至多生成一个msg(<reject>或<parent>)作为对每个邻接边上收到的M的响应。因此Alg2.3至多发送4m个消息(其实大部分没有4倍),即算法的msg复杂性为O(m)。 时间复杂性证明留作练习。 如何改进使msg的复杂性不是4m? 注意:上述算法msg复杂性较好,但时间复杂性太差。可降至O(n)。

下次继续!