中科大算法设计与分析分布式算法部分作业部分答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
算法设计与分析 第二次作业
1. 分析在同步和异步模型下汇集算法的复杂性。 分析在同步和异步模型下பைடு நூலகம்集算法的复杂性。
解:与广播算法分析时间复杂性的步骤一致,一两句的说明 与广播算法分析时间复杂性的步骤一致, 不是分析。 不是分析。 <1> 同步模型 引理:在汇集算法的每个容许执行里, 引理:在汇集算法的每个容许执行里,树中每个高为 t 轮里收到所有孩子的msg。 子树根结点在第 t 轮里收到所有孩子的msg。 归纳证明。。。 归纳证明。。。 定理:当生成树高为 d 时,存在一个时间复杂度为O(d)的 定理: 存在一个时间复杂度为O(d)的 同步汇集算法。 同步汇集算法。 <2> 异步模型 引理:在汇集算法的每个容许的执行里, 引理:在汇集算法的每个容许的执行里,树中每个高为 t 收到所有孩子的msg。 的子树根结点在时刻 t 收到所有孩子的msg。 归纳证明。。。 归纳证明。。。 定理: 存在一个时间复杂度为O(d)的 定理:当生成树高为 d 时,存在一个时间复杂度为O(d)的 异步汇集算法。 异步汇集算法。
6.
证明同步环上不存在匿名的、 证明同步环上不存在匿名的、一致性的 Leader选举算法 Leader选举算法。 选举算法。
解:由Lemma3.1可得。 解:由Lemma3.1可得。 假设R是大小为n>1的环(非均匀),A 假设R是大小为n>1的环(非均匀),A是其上的一 个匿名算法,它选中某处理器为leader。因为环是 个匿名算法,它选中某处理器为leader。因为环是 同步的且只有一种初始配置,故在R 同步的且只有一种初始配置,故在R上A只有唯一的 合法执行。 Lemma3.1: 在环R上算法A Lemma3.1: 在环R上算法A的容许执行里,对于每 轮k,所有处理器的状态在第k轮结束时是相同的。 ,所有处理器的状态在第k Note:每个处理器同时宣布自己是Leader! Note:每个处理器同时宣布自己是Leader!
3. 证明Alg2.3构造一颗以Pr为根的DFS树。 证明Alg2.3构造一颗以 为根的 构造一颗以Pr为根的DFS树
解:类似引理2.6的证明过程。先证连通,再证无环(反 解:类似引理2.6的证明过程。先证连通,再证无环(反 证),再证DFS树。依据是算法2.3与DFS的定义。 证),再证DFS树。依据是算法2.3与DFS的定义。 可以证明:在有子结点与兄弟结点未访问时,子结点总是先 加入树中。根据alg2.3 xxx步证明这一点。 加入树中。根据alg2.3 的xxx步证明这一点。
5. 修改Alg2.3,使其时间复杂度为O(n)。 修改Alg2.3,使其时间复杂度为O(n)。 解:两种考虑方式: <1> 在每个处理器中维护一本地变量,同时添加一 消息类型,在处理器Pi转发M时,发送消息N 消息类型,在处理器Pi转发M时,发送消息N通知 其余的未访问过的邻居,这样其邻居在转发M 其余的未访问过的邻居,这样其邻居在转发M时 便不会向Pi转发。 便不会向Pi转发。 <2> 在消息M和<parent>中维护一发送数组,记录 在消息M <parent>中维护一发送数组,记录 已经转发过M 已经转发过M的处理器名称。 两种方式都是避免向已转发过M 两种方式都是避免向已转发过M的处理器发送消息 M,这样DFS树外的边不再耗时,时间复杂度也降 ,这样DFS树外的边不再耗时,时间复杂度也降 为O(n)。 O(n)。
祝大家考试顺利
谢谢!
4. 证明Alg2.3时间复杂度为O(m)。 证明Alg2.3时间复杂度为 时间复杂度为O(m)。
解: <1>同步模型:每一轮中,根据算法,有且只有一个消息( <1>同步模型:每一轮中,根据算法,有且只有一个消息(M or Parent or Reject)在传输,从算法的第6、14、16、20、 Reject)在传输,从算法的第6 14、16、20、 25行发送消息的语句中可以发现:消息只发往一个处理器 25行发送消息的语句中可以发现:消息只发往一个处理器 结点,除根结点外,所有的处理器都是收到消息后才被激 活,所以,不存在多个处理器在同一轮发送消息的情况, 所以时间复杂度与消息复杂度一致。 <2> 异步模型:在一个时刻内至多有一个消息在传输,因 此,时间复杂度也与消息复杂度一致。消息复杂度:对任 一边,可能传输的消息最多有4个,即2 一边,可能传输的消息最多有4个,即2个M,2个相应M 个相应M 的消息(Parent Reject),所以消息复杂度为O(m)。 的消息(Parent or Reject),所以消息复杂度为O(m)。 综上,该算法的时间复杂度为O(m)。 综上,该算法的时间复杂度为O(m)。
Note:考虑时间复杂度,任一节点可以在O(d)时间 Note:考虑时间复杂度,任一节点可以在O(d)时间 内将询问包发送到网络上的其它节点,但却可能需 要O(N)的时间接收其它节点发来的响应包。 O(N)的时间接收其它节点发来的响应包。
附2:算法3.2(同步Leader选举算法) :算法3.2(同步Leader选举算法) 为何非唤醒msg要延迟2^i 为何非唤醒msg要延迟2^i -1轮? 如何修改算法3.2来改善时间复杂性? 如何修改算法3.2来改善时间复杂性? 解: <1> 降低消息复杂度(Id最小的节点被选举为 降低消息复杂度(Id最小的节点被选举为 Leader,Leader节点消息的转发速度最快)。 Leader,Leader节点消息的转发速度最快)。 <2> 方案1:添加Relay变量,保证消息在转发节点 方案1:添加Relay变量,保证消息在转发节点 不延迟,时间复杂度由O(n*2^i)降为O(N*2^i+n-N), 不延迟,时间复杂度由O(n*2^i)降为O(N*2^i+n-N), N为自发唤醒的节点数。 方案2:原算法延迟函数为f(id)=2^id,时间复杂度 方案2:原算法延迟函数为f(id)=2^id,时间复杂度 为O(n*2^i)。通过重新定义延迟函数来降低时 n*2^i)。通过重新定义延迟函数来降低时 间复杂度,如f(id)=c*id等。消息复杂度提高? 间复杂度,如f(id)=c*id等。消息复杂度提高? Note:思考方案2 Note:思考方案2中消息复杂度和时间复杂度的关 系!!!
例如:echo协议,即应答协议,主要用于调 例如:echo协议,即应答协议,主要用于调 试和检测中,是路由也是网络中最常用的数 据包,可以通过发送echo包知道当前的连接 据包,可以通过发送echo包知道当前的连接 节点有哪些些路径,并且通过往返时间能得 出路径长度。echo算法的实现,如果转发消 出路径长度。echo算法的实现,如果转发消 息同步进行,则对应1 time时间复杂性,为 息同步进行,则对应1-time时间复杂性,为 O(D);如果不同步转发消息,网络路径可 O(D);如果不同步转发消息,网络路径可 能呈链状结构,即对应时间复杂度O(N)。 能呈链状结构,即对应时间复杂度O(N)。
2. 证明在引理2.6中,一个处理器在图G中是从Pr 证明在引理2.6中 一个处理器在图G中是从Pr 可达的,当且仅当它的parent变量曾被赋过值 变量曾被赋过值。 可达的,当且仅当它的parent变量曾被赋过值。
解: 引理2.6:在异步模型的每个容许执行中,算法2.2构造一棵 引理2.6:在异步模型的每个容许执行中,算法2.2构造一棵 以pr为根的生成树。 pr为根的生成树。 两个方向证明题目:依据是算法2.2和题目条件(异步模型的 两个方向证明题目:依据是算法2.2和题目条件(异步模型的 每个容许执行中),不是空口讨论。方法不一,原则是有理 有据,逻辑清楚。 <1> => pr可达,(因为图G是由parent与children确定的静 pr可达,(因为图G是由parent与children确定的静 止图)收到m才会加入图中,所以可达结点收到过m 止图)收到m才会加入图中,所以可达结点收到过m,执行 了alg2.2第5行。由于是容许执行,第7行,即parent:=j也 alg2.2第 行。由于是容许执行,第7行,即parent:=j也 会执行。也就是被赋值。 <2> <=当第7行执行过,由于是容许执行,第5行也执行过, <=当第7行执行过,由于是容许执行,第5 即收到过m,而m是由pr发出的,所以可达。 即收到过m,而m是由pr发出的,所以可达。
8.
若将环Rrev划分为长度为 若将环Rrev划分为长度为j(j为2的幂)的连 划分为长度为j 的幂) 续片段,则所有这些片段是次序等价的。 续片段,则所有这些片段是次序等价的。
解:。。。。
附1:“表面上,1-time复杂性至少等于时间复杂性, :“表面上,1 time复杂性至少等于时间复杂性, 因为T2假定下的最坏时间不会高于O2假定下的时间。 因为T2假定下的最坏时间不会高于O2假定下的时间。 但事实并非如此,而往往O1和O2假定之下的 但事实并非如此,而往往O1和O2假定之下的 1-time复杂性是前一种时间复杂性的一个下界。”为 time复杂性是前一种时间复杂性的一个下界。”为 什么one-time复杂性是时间复杂性的下界呢? 什么one-time复杂性是时间复杂性的下界呢?
7. 证明异步环系统中不存在匿名的Leader选举 证明异步环系统中不存在匿名的Leader选举 算法。 算法。 解: 每个处理器的初始状态相同,状态机相同,接收的消 息序列也相同(只有接收消息的时间可能不同),故 最终处理器的状态一致。由于处理一条消息的至多需 要1时间单位,若某时刻某个处理器宣布自己是Leader 时间单位,若某时刻某个处理器宣布自己是Leader (接收到m条消息),则在有限时间内(m (接收到m条消息),则在有限时间内(m时间单位) 其他处理器也会宣布自己是Leader。 其他处理器也会宣布自己是Leader。 所以。。。 Note:每个处理器陆续宣布自己是Leader! Note:每个处理器陆续宣布自己是Leader!
解:考虑运行在环上的分布式算法的1 time时间复杂性和时 解:考虑运行在环上的分布式算法的1-time时间复杂性和时 间复杂性。 <1> 1-time时间复杂性: 1-time时间复杂性: 满足条件O2:发送和接收一个msg之间的时间恰好是一个时 满足条件O2:发送和接收一个msg之间的时间恰好是一个时 间单位,每个阶段节点转发消息都是同步进行,从而1 间单位,每个阶段节点转发消息都是同步进行,从而1-time 时间复杂度仅与环直径相关,为O(D)。 时间复杂度仅与环直径相关,为O(D)。 <2> 时间复杂度: 满足条件T2:一个msg的发送和接收之间的时间至多为一个 满足条件T2:一个msg的发送和接收之间的时间至多为一个 时间单位,即为O(1)。节点转发消息并非同步进行,消息转 时间单位,即为O(1)。节点转发消息并非同步进行,消息转 发轨迹可能呈链状结构,时间复杂性与环节点个数相关,为 O(n)。 O(n)。
相关文档
最新文档