https://mp.weixin.qq.com/s/W1cS9sgwLFjOOm86d05NIA

 
介绍各类型节点如何确定星型绑定所包含的连接数。
 
 
1. 定义
 
resoveStar方法以抽象方法的形式定义于抽象类MixedNode中,用于确定星型绑定所包含的连接数。
 
其参数说明如下:
a. iKnow:输入侧已知边的个数;
b. oKnow:输出侧已知边的个数;
c. iStar:输入侧星号的个数;
d. oStar:输出侧星号的个数;
 
 
2. SourceNode
 
SourceNode只能作为上游节点,没有输入边。
a. iStars = iKnown = 0:没有输入边;
b. oStars <= 1:输出侧最多只能有一个星型绑定;
c. po.size == oKnown即所有的边都是已知的,或者oStars = 1即必须有一个星型绑定;
d. po.size >= oKnown:po.size为全部输出边的数量;
 
所以返回值:
a. iStar = 0:没有输入边;
b. oStar = po.size - oKnown:输出边总数减去已知的输出边数量,即是星型绑定所包含的连接数;
 
 
3. SinkNode
 
参考SourceNode。
 
 
4. MixedAdapterNode
 
 
因为是一个Mixed节点,所以可以同时有输入边和输出边。
 
1) oStars+iStars <= 1
 
输入星和输出星的总数不能超过1;也就是说,要么输入侧有一个星号,要么输出侧有一个星号,要么都没有。
 
2) oStars > 0
 
意味着oStars = 1, iStars = 0。也就是说所有输入边已知,需要确定一个输出星所包含的连接数。所以返回值为iStar = 0, oStar = iKnown - oKnown;
 
这里直接使用iKnown - oKnown进行计算,包含一个假设,即在星号确定之后,输入边的数量与输出边的数量是相等的。
 
也可以得出另一个结论,mapParamsD和mapParamsU只是进行映射,不改变参数的个数:
 
注意里面的require(n == p.size),其中的n即是本节点另一侧边的个数:
 
即oPorts.size == diParams.size。
 
3) iStars > 0
 
如2)。
 
4) oStars = iStars = 0
 
没有星号,所以返回值都是0:(0, 0)
 
 
5. MixedNexusNode
 
 
1) !outputRequiresInput || oKnown == 0 || iStars + iKnown != 0
 
这个判断为假需同时满足如下三个条件:
a. outputRequiresInput = true:输出边依赖于输入边;
b. oKnown > 0:有输出边;
c. iStars + iKnown = 0:没有输入边;
 
也就是说有输出边,并且输出依赖于输入边,但却没有输入,只能报错。
 
2) !inputRequiresOutput || iKnown == 0 || oStars + oKnown != 0
 
如1)。
 
3) iKnown = oKnown = 0
 
既没有已知输入边,也没有已知输出边。无论是否有星型绑定,都认为其包含0条连接。
 
4) iKnown != 0 || oKnown != 0
 
有已知输入边或已知输出边。无论是否有星型绑定,都认为其包含1条连接。如果没有星型连接,这个1则不会被统计,总连接数目并不会增加。
 
5) 输入边的数目和输出边的数目并不一定相同,取决于实际的连接数:

 
6) 总结
 
可以看到MixedNexusNode极力想把星型绑定包含的连接数最小化,最好是不出现在图中。若非要出现在图中,则以最少的连接出现。
 
可能是因为不知道连接总数信息。
 
理解有限,暂且如此。

Rocket - diplomacy - resolveStar的更多相关文章

  1. Rocket - diplomacy - LazyModule的组织方式

    https://mp.weixin.qq.com/s/vaDUekxkFkOJLmzg5jCngw 简单介绍LazyModule/LazyModuleImp的组织方式. 1. LazyModule L ...

  2. Rocket - diplomacy - LazyModule的实例化(补)

    https://mp.weixin.qq.com/s/rgCRorjPYyyD6i7moIzbZg   介绍LazyModule和Node构造方法的执行过程,即实例化过程.     1. NullIn ...

  3. Rocket - diplomacy - LazyModule的实例化

    https://mp.weixin.qq.com/s/9PsBt4_4qHx4i6C5XtuiUw   介绍LazyModule和Node构造方法的执行过程,即实例化过程.     1. NullIn ...

  4. Rocket - diplomacy - LazyModule

    https://mp.weixin.qq.com/s/FBU8fE4u9-UK6mRGQOlvbQ   介绍LazyModule的实现.     ​​   1. children   LazyModu ...

  5. Rocket - diplomacy - MixedNode

    https://mp.weixin.qq.com/s/zgeAI2n-2cHJi7-Ra5rYZA   介绍MixedNode的实现.     1. 类定义   ​​ ​​   2. inner/ou ...

  6. Rocket - diplomacy - ValName

    https://mp.weixin.qq.com/s/so-2x5KLfYF0IMCCqNThwQ   简单调试ValName实现:   1. 使用     ​​   Desugar之后如下: ​​ ...

  7. Rocket - diplomacy - NodeHandle相关类

    https://mp.weixin.qq.com/s/GWL41P1G1BXm2sTeLmckdA   介绍NodeHandle相关的类.     ​​   1. NoHandle   顶层类(tra ...

  8. Rocket - diplomacy - DUEB参数模型的设计

    https://mp.weixin.qq.com/s/9PEEpe1pkQDN9RWpOGSUCQ   介绍DUEB参数模型的设计,不包含实现(实现对设计做了简化).     1. DUEB   di ...

  9. Rocket - diplomacy - 模块结构信息

    https://mp.weixin.qq.com/s/cTRxXwWNEeb4-XX_t4bRcg   讨论模块结构信息的来源及使用方式.     ​​   1. diplomacy   diplom ...

随机推荐

  1. SpringMVC源码学习:容器初始化+MVC初始化+请求分发处理+参数解析+返回值解析+视图解析

    目录 一.前言 二.初始化 1. 容器初始化 根容器查找的方法 容器创建的方法 加载配置文件信息 2. MVC的初始化 文件上传解析器 区域信息解析器 handler映射信息解析 3. Handler ...

  2. 【Hadoop离线基础总结】Apache Hadoop的三种运行环境介绍及standAlone环境搭建

    Apache Hadoop的三种运行环境介绍及standAlone环境搭建 三种运行环境 standAlone环境 单机版的hadoop运行环境 伪分布式环境 主节点都在一台机器上,从节点分开到其他机 ...

  3. matlab 提示 Continuous sample time is not supported by discrete derivative 错误的解决办法

    Simulink仿真的时候,出行错误提示:Continuous sample time is not supported by discrete derivative 中文意思是:连续采样时间不支持离 ...

  4. .NET分离exe和dll在不同的目录让你的程序更整洁

    1.引言 在一个项目开发中一般都是把引用的dll放在根目录下,随着项目的日益增大,根目录下的dll文件就会越来越多,合理规划这些dll的存放地址,可以使整个项目更加的规范与美观.这篇文章就为大家介绍关 ...

  5. 5.7.17版本mysqlbinlog实时拉取的二进制日志不完整的原因分析

    问题描述: 同事使用mysqlbinlog工具的--read-from-remote-server --raw选项,从远程实例实时拉取二进制日志时,发现得到的二进制日志文件大小与远程实例上的源文件大小 ...

  6. MySQL 入门(4):锁

    摘要 在这篇文章中,我将从上一篇的一个小例子开始,跟你介绍一下InnoDB中的行锁. 在这里,会涉及到一个概念:两阶段加锁协议. 之后,我会介绍行锁中的S锁和X锁,以及这两种锁的作用. 但是我们会发现 ...

  7. 存储过程——异常捕获&打印异常信息

    目录 0. 背景说明 1. 建立异常信息表ErrorLog 2. 建立保存异常信息的存储过程 3. 建立在SQL Server中打印异常信息的存储过程 4. 建立一个用于测试的存储过程抛出异常进行测试 ...

  8. day02:三元运算、布林非、列表等(20170214)

    #1:三元运算(满足条件就返回值,不简洁的代码):a= 1b= 3c= 5if a > b : d = aelse: d = cprint (d) #2:三元运算(满足条件就返回值,简洁的代码) ...

  9. 点击劫持ClickJacking

    原文:https://beenle-xiaojie.github.io/2019/01/07/ClickJacking/ 引言 当我们的页面嵌入到一个iframe中时,安全测试提出一个于我而言很新鲜的 ...

  10. Fabric进阶(二)—— 在已有组织中增加节点

    fabric网络在创建时就已经确定了初始的节点数量,而在实际应用场景中可能会需要在某个组织中动态增加节点.这里以balance-transfer v1.0为例(2 Org,4 Peer),介绍如何在o ...