树形数据补充

今天一位叫做“黄”的朋友私信我询问了一些关于数据数据介绍帖子的问题。

我在参数化群里进行了一些解答,由好心的拓友gt7487534整理成文稿,发在网站上作为数据结构知识点的补充。其中有一些问题还是很有意思的,大家可以细细研究,我们发散讨论一下。
一、Divide的用法及注意点
“黄”问我:
关于这一点给一个解释:

 

简单地说,用两个Divide可以出两点方便连线,一个Divide不方便连线。
说本质一点,是因为初级教程的针对群体是初学者,大家对数据结构认识度还不高。下边两个divide输出的实际上是p1,p2,上边这个也很好解释。无非就是输出的P{1,2},也就是,下边输出的是多个数据,上边是一个树形数据。大家可以在截图中的线形区分很好的理解这个概念。
那么我们怎么分开这两个枝干呢?
二、list item与tree item
如果我们用了一个Divide去等分这两个椭圆,那么输出的数据是一个复杂的树形数据。我们需要将他们分开成两组点,才可以进行连线。
我们都知道10个数据中选1个用的是list item,那么十组树形数据我们想要选择某一组数据,选择某路径上的一组数据用什么呢?
自然要用graft情况下的list item。数据变成树形数据,相当于从二维变成了三维,“升级”了一下,我们把list item升级一下,就会变成这个运算器。

 

Tree Item运算器
在这篇询问帖中我的回答部分有使用示范:http://www.eeeetop.com/forum.php?mod=viewthread&tid=23057

 

从名字很容易看出来,list item是选择list中的某一项,那么这个运算器叫做tree item,自然就是选择树上(树形数据内)的某一个枝干(路径)
只不过大家还要注意的一点就是,你们输入的路径名称一定要和输出的路径名称一致,这个截图就告诉你们在最简化路径之前选择1路径下的数据,运算器是会报错的。原因很简单你们操作一下拿panel查看一下就明白了(自己动手,理解更深)。

 

三、Flatten与Graft用法及其注意点
根据之前的概念,我们继续扩充探讨一下Graft和Flatten。
Flatten:
群友Ocans的举例: flatten,就是把3个年级每个年级10个班,变成一个年级30个班
我稍微修正一下这个举例,使其更加准确一些:
3个年级每个年级10个班,flatten之后,变成共有30个班(无视年级)。
 
既然用了班级年级的例子,那么我们用再本质的解释一点flatten和graft。
常态数据是3个年级,每个年级十个班。那么按照路径的层级关系,年级是父级,班级是子级。我们会说我是三年级二班,而不会说我是二班三年级。所谓的flatten就是去掉父级的路径信息,大家不管什么年级的,都是1班2班3班。也就是说,在一个{1,2,3}的路径下(一年级二班学号03),flatten之后我们所有1班一队,2班一队。因此树形数据flatten一次之后你再连线,分组还是有的。一直flatten下去,大家就无所谓年级班级学号了,大家都是平等的学生,可以互相发生关系。如果不flatten到底,可能就只有年级相同,或者班级相同,或者学号相同的人才能发生关系。所谓的发生关系。我更喜欢解释为我在这个平行宇宙你在那个平行宇宙,我们根本见不着面。
 
Graft:
如果我们给路径graft,两个数据组A和B分别graft再合并在一起,就类似是3年级*10个班=一个学校。那么我们合并了以后会有一个新的父级路径标号(通常都是0开始),大家就理解成是某市的X所学校学生的大集合。A,B,甚至CDEFG分别代表一所学校。再graft,就是几个市合并成了省graft可以理解为flatten的逆运算,我是这么理解的。graft的都是增加父级的路径

 

注意
如果说我们之前一直在说的,让你们产生了一个误区:graft就是路径父级多个0,flatten就是路径少个0,G一次多一个F一次少一个,你们产生了这种感觉的话那就是大!错!特!错!
(1)Graft不是多出来的分路径就会出现在路径首,不然路径应该是0,10,0,10,0,0,很显然现在是0,1,0,0
首先,为什么会多出来路径呢?{0}下(01234)变成{0,0}{0,1}…这样操作的目的是有可能会和{1,0}{n,n}这样的路径合并,为了防止数据紊乱,也就是小朋友们站错队,graft一下。
其次,如果不会和别的数据合并,那么这多出来的一个父级0是没有用的!当然也包括后边子级的这些00000,所以我在帖子里统一起了个名字“无效路径”。
(2)Flatten直接一巴掌给你拍回原形,不管你穿了几层衣服,照相机咔嚓一闪,直接透视到本质。
simplify是非常容易看出来是否有无效路径的命令,第一个0路径从头到尾都是0,如果我们确定不和别的{1,x,x}这样的数据发生关系,便可以将这个父级0称谓无效路径。simply掉它。而flatten,就是一巴掌拍死你,简单粗暴。我们可以看出后边两个0都是有内容的,到最后会变成2,9,所以不是无效的。
群友“土疙瘩”按照理解提供的参考图:
 
那么问题来了,如果我想把0,2,9这样的路径不要一巴掌拍死,而是变成比如0,2,也就是只flatten一级,怎么办呢?此时我们就用Path mapper。具体怎么用,右键点击它就明白了。这个运算器强大到你可以随心所欲修改数据的路径。

 

四、Remap

 

“花三疯”在今天的讨论中提到了Remap,那就顺便再解释一下Remap。这个运算器我在自学手册中给出的公式实际上是打错了的…公式应该是:R=(V/S)*T。严谨一些,叫做V在S区间内的位置关系,乘上T区间。
通俗一点来解释:你一个月挣1000,请我吃了顿300的饭,我一个月挣八万,你来找我我请你吃了顿700的饭。你说咱俩谁够意思?怎么比较谁掏钱占得比重更大?这时候就是remap运算器的含义。这是一个非常非常重要的运算器,后期在很多案例都会运用到。

———————————————————————————————————————————————————————

本文所有内容版权均属于作者所有

欢迎您扫描下方二维码关注小黄人君的微信公众账号

二维码新

发表评论

邮箱地址不会被公开。 必填项已用*标注