1479 字

分形维度概览

所谓分形,其首要特点就是自我相似性,整体与部分同构。我们考虑一条线段,把它三等分,然后中间一段去掉,换成两段等长夹角60度的线段,然后迭代这个过程就可以得到一个简单的分形——Koch Curve。如下:

多迭代几次,有:

这条线原来是一维的,现在是几维呢?二维?

研究分形的人从分形的形成过程给出了另一种维度的定义,那就是通过边切割。从我们最熟悉的场景看,一条线段中间切割变成两段而这两段长度变成了一半;如果是正方形,从每条边的一半进行切割,那么会形成四个小正方形;如果是立方体,还是每条边一半切割,那会形成八个小立方体。再高的维度我们先不考虑,不知道你发现了什么没有,每条边都是按照一半进行切割形成M等份,而得到的新物体的个数N都是M的D次幂,D是我们传统意义上的维度。

那么好,我们写下这个过程 \(N = M^D\) ,稍微调整下,可以得到

\(D = \frac{logN}{logM}\)

这就是分形意义上的维度。回头再看Koch Curve,每一次的迭代形成4个新线段,切割为3等份,那么其分形维度为 log4/log3,大概是1.26,也就是对于一个成长的分形,其维度不见得是整数,这个维度叫做Hausdorff 维度。

现在我们考虑一个更实际的分形——海岸线。海岸线是不好测量的,原因很简单,你尺子精度不同得到的结果是不一样的,基本你把尺子缩小一半,海岸线就得长处一大截,这道构成了另一层意义上的“测不准原理”:

海岸线的实际长度不取决于其真实长度而是取决于你尺子的精度。

其实海岸线可以看作一个具有类似分形结构的线,其维度高于一,所以你用低维度的度量衡去测量高纬度自然怎么都测不出来,那么问题来了,长度我测不了,维度又怎么测?

还记得“测不准原理”吗?没错,就用这货。我首先用一把粗略的尺子去测量得到一个以尺子长度个数为单位的长度,然后不断收缩尺子的长度得到新长度,不就相当于逆向重构了分形生成的过程了吗?那么前面Hausdorff的维度还是可以近似推出来的,而这种近似求维度的方法求到的维度叫做 Box-Counting 维度,公式为:

\(log[总长度尺子数] = D log[1/尺子的长度]\)

变换不同尺子的长度我们可以得到一组尺子数,回归求斜率就知道海岸线的维度了。例如测量英国海岸线,按照上述方法(有所改动,不是用的尺子,而是小方盒)可以得到维度为1.25维。

好了,我们再考虑一个具有分形结构的实体——菜花,菜花可不是空间两维的,又如何测量?Sang-Hoon Kim的文章简单明了计算了菜花的维度,那么他是如何从二维走向三维的呢?还是分形,我对一个立方体做横切观察断面,那么很自然断面的维度跟立方体比例是2/3,我对菜花横切,计算出断面维度后直接除二乘三就可以了。理论上我应该切无数刀取均值,但近似认为每一刀都是独立且期望一致就OK了。于是作者就开始了伟大的切菜花工程,最后发现,菜花的横切面的分形维度大概是1.88维,而菜花本体大概是2.8维的。测完后意犹未尽又搞了一把建模:

我们可以看到,实际物体虽然也存在分形结构,但是其个体切割结构要更复杂。

这个维度还是很可以开脑洞的,例如一个三维空间世界的客体其实维度并不到三,我们用具有分形结构的客体是无法填充一个三维空间的,其延伸过程存在边界,边界层接触面积近乎无穷大。根据计算人脑皮层表面的维度大概也有2.8,而肺的表面也有2.97维,当我们把一张纸握成一个球时,其分形维度为2.5…看来曲率飞船还是有希望做出来的,或者说,已经被做出来很多次了。

最后需要说明一点,这里的维度是描述分形的,是一种复杂性的测量,同时也兼容空间的整数维度,但描述的东西不是一回事。

维基上有个列表可以看看玩,图片来自论文与维基百科。