1. XenForo 1.5.14 中文版——支持中文搜索!现已发布!查看详情
  2. Xenforo 爱好者讨论群:215909318 XenForo专区

你真是植物吗?确定吗?你真的不是编程编出来的吗?

本帖由 漂亮的石头2015-09-02 发布。版面名称:知乎日报

  1. 漂亮的石头

    漂亮的石头 版主 管理成员

    注册:
    2012-02-10
    帖子:
    486,320
    赞:
    46
    [​IMG]
    自然界有没有二叉树?

    [​IMG] 知乎用户,9月闭关/不会数据结构的历史爱好者不是好的博物学家

    @peisen 的回答提到了一点:

    由于这种分枝方式的两个分枝或称子树是平等的,所以这些二叉树植物多为形态优美的满二叉树。另外由于植物只有分枝处才适宜看作节点,所以如果不是完全二叉树看起来就不明显。​

    是的,严格说起来,二叉树比想象的常见得多。

    常见得多!

    根据二叉树的定义——每个节点最多有两个分枝的树——进行判断,自然界相当多的树都属于此类:对于叶互生的植物类群,所有有分叉的地方,全部都是二分枝。

    所以,没有特殊情况,所有互生叶的植物,分枝类型,都是二叉树

    第一种情况:单轴分枝、合轴分枝,以及理想状态下的斐波那契树

    举个例子:

    一棵树一年后长出一条新枝,新枝隔一年后成为老枝,老枝又可每年长出一条新枝,如此下去,十年后新枝将有多少?

    [​IMG]

    这样一棵再普通不过的树,没有任何「假二叉分枝」或者「真二叉分枝」,是不是一棵二叉树呢?

    当然是啊,而且是一棵斐波那契树。

    其实斐波那契树可以通过如下方式构造:

    G(n) = n – G(G(n – 1)) ,其中 G(1) = 1 。

    来我们算一下:


    n 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 G(n) 1 1 2 3 3 4 4 5 6 6 7 8 8 9 9 10 11 11 12 12 13 14 14 15 16 16 17 17 18 19

    这个数列通常被称作 Hofstadter G-sequence 。它有什么特别的地方呢?如果把每个标号为 n 的结点都连接到标号为 G(n) 的结点下方,这样的话你将会得到一棵树。

    [​IMG]

    这棵树的特征之一,是自相似——任何一个左子节点包含的树,都跟她的双亲节点自相似;任何一个右子节点包含的子树,都跟它的双亲节点自相似。

    其实这是由于数列本身的性质决定的:

    [​IMG]

    这样的树,很像是自然界出现的大部分「合轴分枝」的树,你能说它不是二叉树么?

    而「单轴分枝」的树,由于顶芽的顶端优势太大,只有足够遥远的侧枝才能发育,因此看起来,就像是这张斐波那契树一样:

    [​IMG]

    纵使总有主枝,细细看来,仍然是一棵二叉树。

    不管分枝方式如何,是不断用侧芽代替顶芽的合轴分枝,还是一直维持顶端优势的单轴分枝,自然界相当多的树,都如第 1 张图,以及上图一样,属于斐波那契树这种特殊的二叉树

    [​IMG]

    (感谢 Hofstadter 的非线性递推数列这篇文章,有兴趣的可以去看看)

    所以你几乎可以找出任何一棵互生叶的树的照片,然后指着它说——这是一棵二叉树。

    第二种情况:满二叉树

    严格意义上的满二叉树,又会在什么情况下出现呢?

    之前提到的互生叶植物的分枝,其实属于老枝 + 新枝;这种情况,只产生一个新的枝条,并且新枝总是不如老枝粗壮,对应二叉树的描述,也就是每一个左右子节点并不互成镜像

    满二叉树则是一棵每一个双亲节点都有两个子节点的树;这样的二叉树,每一个左右子节点互成镜像,是其性质之一。

    也就是说,每一次分枝的时候,都要左右分枝一样大,不能有偏颇。

    这一点,自然界是如何实现的呢?

    这里不得不提一下关于二叉分枝的概念——二叉分枝与假二叉分枝。

    二叉分枝,其产生的原因,是植物的顶端分生组织,由于某种原因,一分为二,直接产生了两个顶端分生组织;这两个部分,如果分裂、生长的速度一样,那么就会长出两个一模一样的侧枝,这样形成的植株,外观上就是满二叉树一样,也就是特别典型、过目难忘的二叉树了。

    这种情况并不多见,经常出现在比较早期就出现的植物类群当中——藻类、苔藓、蕨类;有不少古生物化石,就体现了这样的状态。

    你们可以感受一下。

    [​IMG]

    [​IMG]

    别看名字叫「鳞木」「封印木」(好中二的名=-=),这些可是货真价实的蕨类哟。

    看到没,不仅树枝是二叉树,连每一条不定根,都是二叉树,可谓二叉到了骨子里。

    就是这些数亿年前的树状蕨,形成了今天的你妹,呃不,泥煤。

    现在能看到的呢,也有许多是蕨类。peisen 回答里的铁芒萁 Dicranopteris linearis,就是蕨类;而地钱则是苔藓当中的苔类。

    再给个例子吧,藤石松:

    [​IMG]

    非常非常典型的二叉分枝。

    卷柏也是石松类植物,现在已经不再划归于蕨类,而属于蕨类的姐妹类群。

    至于铁芒萁属于假二叉分枝……铁芒萁的复叶,分枝的地方,并不属于顶芽死亡导致侧芽生长的情况,个人认为,并不是假二叉分枝。

    并且分枝的地方,也有小叶,外观上也并不应该属于「四叉分枝」,因为那两片叶应该是属于该双亲节点本身的内容,而非双亲节点的另外两个子节点。

    刚刚提到了「假二叉分枝」——由于植物存在顶端优势,顶芽的存在,(以分泌的生长素为主要的调节方式)会抑制侧芽的萌发;一旦顶芽的死亡,顶芽下方最近的叶腋,其中的侧芽将解除抑制,萌发新的枝条;如果同一个节有两个相对的侧芽,分枝的情形,就属于假二叉分枝。

    如果某种植物,叶的排列属于对生,即同一个节上面有两片相对的叶片,也就有了两个相对的、同一「节点」的叶腋和腋芽,当顶芽死亡、侧芽萌发之后,显现的也就是该节点的左孩子和右孩子——这种外观,更符合「二叉树」的常见外观,因而更容易与二叉树联系起来。

    这也就是演化当中更晚出现的一种「二叉树」,前提是,你必须把死掉的顶芽,看成是双亲节点本身的内容,而不是双亲节点的第三个长度很短的分枝。

    譬如鸡爪槭 Acer palmatum,它的枯枝,就是典型的假二叉分枝,也是「二叉树」。

    然而这种观叶植物并不能找到枯枝的图片……下次自己拍吧……

    如果顶芽还没死,侧芽就萌发了,那这就不会形成「二叉树」,而是「三叉戟」,不对,「三叉树」了。

    与这种情况相关的,其实还有一种花序的类型——二歧聚伞花序。

    这种花序的产生,与「假二叉分枝」如出一辙,花序产生时,顶芽先开花,顶芽下方两个分支分别形成新的花芽,如此循环往复。

    由于顶芽是花芽,开花之后一定不会生长,只要把这朵花看成双亲节点本身的内容,而不是第三个分枝,整个花序,就是一个非常漂亮的二叉树。

    譬如繁缕 Stellaria media

    [​IMG]

    CFH 图库这张实在是太典型了

    球序卷耳 Cerastium glomeratum

    [​IMG]

    CFH 图库

    这个种有点缩在一起。

    你们可以看一下另一种的墨线图,缘毛卷耳 Cerastium furcatum

    [​IMG]

    卷耳

    [​IMG]

    CFH 图库

    某些景天科的东西也有类似的花序。

    繁缕景天 Sedum stellariifolium(怎么又带上繁缕这俩字)

    [​IMG]

    还有名字就带二歧的二歧草科(译名)植物(不再隶属于虎耳草科):

    [​IMG]

    [​IMG]

    (引自http://128.253.192.70/imgs/sv22/na/Vahliaceae_Vahlia_viscosa_15413.htmlKyffhäuser flora

    多说一句,所有的螺旋聚伞花序和蝎尾聚伞花序,类似于合轴分枝,也都可以看成是二叉树,只不过外观有点怪怪的——你们得要从结构,而不是外观的层面看待。

    譬如聚合草 Symphytum officinale

    [​IMG]

    永远有一个子节点没有自己的子节点;但仍然是一棵二叉树。

    至于夹竹桃这样三叶轮生的东西,以及泽漆这样多歧聚伞的花序,当然是怎么样都算不上二叉树的——分叉太多了,没法圆谎。

    [​IMG]

    夹竹桃 Nerium oleander 注意左下角的三分枝,除开开花的那一个,还有三个侧枝。

    泽漆 Euphorbia helioscopia 又有一个名字叫五朵云,当然不是没有理由的:

    [​IMG]

    是的,这是一个五叉树,每一枝又是三叉树。

    这种情况还是挺漂亮的。

    自然界的二叉树其实一点都不少见,少见的是完美的满二叉树。

    不止是植物啦,所有的构件生物,多多少少都可以看做是二叉树或者是 N 叉树的——每一个构件,不仅仅体现了重复与自相似,也体现了不断分叉的结构;每一个分枝都可以某种程度上完成大部分的生命活动,这也是所谓「细胞全能性」带来的结果。

    那些珊瑚(红珊瑚)

    [​IMG]

    橘青霉 Penicillium citrinum

    [​IMG]

    不都是如此么?

    作为在初中进高中的暑假,参加过 1 个月信息竞赛,然后转投生物竞赛(对,我就是从 CS 爬进了生科的坑)的奇葩,也算有资格回答一下这个问题。

    其实这个问题很早我就考虑过了——那一个月,以及高中三年,不断听到信息竞赛组的同学聊起各种数据结构,譬如二叉树、平衡二叉树、满二叉树;双亲节点、子节点……等等名称,大概知道他们提到的数据结构是怎么一回事。

    这些内容,与「植物的分枝方式」和「有限花序」这两节联系起来,还蛮有意思的。

    【完】

    查看知乎原文
     
正在加载...