探讨一下分治算法,这里面竟然蕴藏着大自然的奥秘? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tikazyq

探讨一下分治算法,这里面竟然蕴藏着大自然的奥秘?

  •  
  •   tikazyq 2022 年 10 月 18 日 1576 次点击
    这是一个创建于 1284 天前的主题,其中的信息可能已经有所发展或是发生改变。

    很多程序员可能会认为算法和数据结构很重要,但门槛又很高,学习成本起来很痛苦。作为非科班出身的我来说,同样如此。不过在接触分形理论之后,我发现二叉树、平衡树等分治算法可以通过它来简单理解。因此将自己的想法分享出来,大家一起探讨。

    本篇文章英文版同步发布在 dev.to,技术分享无国界,欢迎大佬们指点。

    下面是正文。


    浅谈算法:分治算法竟然蕴藏着大自然的奥秘

    引子

    “话说天下大势,分久必合,合久必分。” --《三国演义》罗贯中

    很少有人能质疑算法( Algorithm )在现代 IT 行业中的重要地位。正是有了巧妙设计的算法,计算机才能以最小的资源和最大的效率来运行各种各样的软件程序。因此,算法非常重要,以至于不少 IT 企业在招聘工程师时对算法要求非常高。回忆一下你参加过的技术面试被要求手写快速排序的算法题吧。不少人会认为算法是高屋建瓴的东西,然而笔者却认为算法以及数据结构产生的效率增益是自然形成的,这个可以从大自然中找到答案。

    从雪花开始

    snowflake

    我们都知道,一片雪花很漂亮,除了它明亮的外表以外,令人惊叹的还有其造型:整体像雕琢过的六边形,每个角放大来看又是新的类似雪花的子六边形。这种自相似( Self Similarity )不断递归( Recursion )的结构有个专业术语,分形( Fractal )。分形在大自然中随处可见,例如树的根系和枝叶、肺部毛细血管、天然形成的海岸线,数不胜数。甚至连一块摔碎的玻璃,也能找到分形的影子。

    那么,为什么?分形为什么普遍存在于大自然?是上帝的特意安排还是巧妙的数学规律?学术界普遍认为是后者。根据热力学原理,雪花是在水蒸气突然凝结时形成的,而雪花状的构造能让自由流动的水分子在短时间里在最小的空间中释放最大的能量,从而形成稳定的晶体结构;根据流体力学,肺部的树状毛细血管结构能让呼吸进来的氧分子最大程度的被红细胞吸收。因此,分形的结构是因效率原因而产生的

    分治算法

    现在说回分治算法。熟悉算法的同学应该对分治法不陌生,例如快速排序( Quick Sort )就是典型的分治算法。而其之所以快,就是因为递归的将一个整体分成最小颗粒度的大小比较再合并回来,即自相似递归操作,跟分形原理如出一辙。再说数据库中的平衡树( B-tree )索引,也应用到了分形原理:将无序的数据通过树状结构一层一层的构造下去,形成一个数据索引,能让检索变得更快,而优化平衡树参数的过程就是在优化检索效率。平时学习复杂度分析中经常看到的 LogN 就是来自于分形结构产生的等差数列求和。读者可以试着在笔记本上推演一下,运用初中数学知识就能得到最优的参数方程。

    世界是分形的?

    分形理论是一个较新的学科,现代很多科学研究都将其与复杂系统理论( The Theory of Complex Systems )联系在一起。很多复杂的系统,其实都由一些非常简单的物质或规律构成。例如,逢山开路、遇水架桥的蚁群很像智慧生物体,靠的只是一些信息素;而生命全来自于细胞,细胞来自于 DNA ,DNA 来自于更小的微观物质(分子、质子、中子等)。这些简单的物理模型套用起来,就形成了世间万物。所谓古人的 “大道至简”、“一花一世界,一叶一菩提”,说的正是这个道理。

    虽然分形理论能解释大自然中的很多构造,但它并不完美。因为大自然中的自相似并不是完全等同,而是在递归的过程有一些不确定性的变化,产生了多样性。因此,我们在惊叹于强大的分形理论时,也需要意识到它并不是完美的。世界上很多东西还需要我们继续探索。

    社区

    如果您对笔者的文章感兴趣,可以加笔者微信 tikazyq1 并注明 "码之道",笔者会将你拉入 "码之道" 交流群。

    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2820 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 01:13 PVG 09:13 LAX 18:13 JFK 21:13
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86