我们如何学习 2:如何建立模型

Posted Debroon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我们如何学习 2:如何建立模型相关的知识,希望对你有一定的参考价值。

 


战略性资源

每个人都有天生的学习能力,所以都能学习 —— 但是学习了如何学习,能让我们更聪明、更高效地学习······

如果不能把知识内化到大脑中,博学只是知道一大堆无用的东西而已。

这是我面临的一个大问题,无关联的知识淹没在无尽的劳苦与焦虑中。

痛苦 + 反思 = 进步,所以,在琢磨新的读书方法。

在此之前,需要额外重视自己最宝贵的资源。

时间不可管理,咱们能管理的其实只有自己、自己的注意力。

而绝大多数人,时刻被身边所发生的一切吸引,注意力只能时时刻刻消耗在身边发生的一切。

没有过去、没有将来,也不知道可以有过去,可以有将来,只有现在,一个没有前后对比的现在,一个永恒的当下。

问:管理注意力的方法?

兴趣、任务,成年人的学习不需要培养兴趣,应该用任务来驱动。

以教为学任务:把所学知识写成一篇博客或者总结,教给别人。

去寻找志同道合的人,可以是同事、朋友或者干脆找个陌生人。把你学到的东西讲给他们听。

别人收到你的分享会给你积极的反馈。反馈不但会进一步增加你的多巴胺,还能够给你提供催产素。催产素能增加人与人之间的信任和爱。

这样你的热情会进一步增强你的好奇心,这就形成了一个正反馈循环。现在事情有点走上正轨的意思了。
 


学习:构建一颗知识树

所有的知识,最终都会收敛到几个最重要的概念上。

学习最关键的只不过是深入理解最重要的概念,不断总结与之相关的方法论。

概念:高质量的组块。

学习的确是一个可以完全自控的过程,衡量一个人是否聪明,就是看TA脑中有多少清晰、准确、必要的概念,以及TA脑中那些清晰、准确、必要的概念之间有多少清晰、准确、必要的关联。

通过一整套的综合训练方法,找到你的学习区,而一旦找到,你的好奇心、热情、目的、掌控感、精通感就都会叠加在这件事上,你做这件事会感到特别爽,心流自动就出来了。

文章的目录结构:

  • 战略性资源学习:构建一颗知识树建立连接、加强连接

其实是学习的核心算法:

  • 学会(下)一个知道如何学会不忘、类推

如何学到一个东西,就如何学下一个,下一个······学习所有东西;如何记住一个东西,就如何记住下一个,下一个······记住所有东西;如何达成一个小目标,就如何达成下一个······直到达成一个大目标 —— 这比任何成败都重要,这是学习的核心算法。
 


提炼概念

前置:印象笔记,看到任何可能有价值的信息,我的第一反应都是存在印象笔记里,因为印象笔记能通过可能是词汇匹配之类的算法,自动发现一条笔记的“相关内容”,创造是想法的连接💡,外接大脑,解放记忆。

等于是“计算机辅助写作”。这就是我每日总结能做到日更的原因,我永远不缺资料,我的烦恼是资料太多怎么取舍。

问:怎么提炼概念呢?

答:需要说明一下概念的种类,不同种类时候不同提炼方法。

概念的种类:

  • 关键字提取:凝练语言,如三庭五眼
  • 经验技巧型:深入思考,如唇亡齿寒
  • 方法流程型:套路提炼,如分析方法
  • 学科原理型:科学验证,如能量守恒
  • 哲学视角型:思维方式,如演化思维

关键字提取

  • 如果遇到以人名来命名的概念,一听完全不懂,最好是把知识点压缩成四个字,如欧姆定律叫电阻定律,麦克斯韦方程叫电磁方程,普朗克常数叫量子常数。

  • 核心在于,去这个知识点里标关键字,标的关键词越多,越是重合,重复的地方可能就是最精确的表述。

  • 我们翻开一本书,首先就是寻找概念,而 90% 的概念都是简单压缩而来的,后面的方法很少用到。

经验技巧型

  • 痛苦 + 反思 = 解决方法

  • 把解决方法提炼为四个字,我玩游戏就会熬夜,意志力很弱,唯一的方法就是从不开始,不下游戏,每次想玩游戏的时候,用如果·····就······改变想法,如果想玩游戏,就看看纪录片,坚持一段时间就好了,但纪录片没有成长,接着改进,如果想看记录片,就边听音乐边跑步,但我每天 10 公里比较耗时,跳绳 5 分钟相对于跑步半小时,再改成跳绳 10 分钟,不断改进,这里的概念就是从不开始。

  • 但反思这种方法比较适合经常读书、经常思考的人,不然你可能啥也想不出,甚至想坏了,比如你说,怎么面对女朋友的黑历史?这里有认知差,什么叫黑历史?这个提法本身侮辱人,说明你的狭隘。她在你之前的性爱经历,是正常的人性,自然的权利。理解,尊重。一种健全的爱侣关系的前提是互相尊重,包括尊重对方的隐私权。这种尊重一方面基于爱和信任,另一方面基于对人性弱点的宽容。羞于追问相爱者难以启齿的小隐秘,乃是爱情中的自尊和教养。

方法流程型

  • 方法流程,就是提炼事物背后的套路,不断追问,打破砂锅问到底,能洞察事物的本质。

如丰田汽车公司案例:

学科原理型

  • 经过科学方法验证原理的概念,最精确的莫过于数学公式、正规的理论模型,只有看到了唯一确定的数学公式,我们才会觉得找到了这件事的规律,才会觉得踏实。

  • 只要通过跨界学习,去学习重要学科的重要理论,如经济学研究人的模型(理性人、固定规则、适应性规则)、统计常用模型(正态分布、柏松分布)、传染病感染模型(广播、扩散、SIR)、股票走势模型(随机游走)······ 你需要用很多模型一起去解释和预测一个复杂的事情,你还需要用一个模型解释很多很不一样的事情。

  • 提高水平,关键不是回过头去多复习模型,而是随时都愿意思考遇到的新问题,想想能不能用自己知道的什么模型解释;就算自己没想到,也可以听听别人的解释。棋手要多打谱,但更重要的是多下棋。在实战中用到一招,那个感觉是很好的。

哲学视角型

虽然中国人也很聪明,但像现代科学都是西方人做出来的,这是因为东西方思维的差异。

东方重归纳,西方偏演绎。

比如我们小时候学的成语、谚语、俗语,还有小时候长辈给我们讲的那些大道理,基本上都是经验总结。

所以中国是一个把归纳思维发挥到极致的国家,我们通过一代又一代人的智慧,不断的总结经验,完善经验,再传承给下一代人,这些概念的积累甚至可以超越智商,你只要认真执行这些道理,就可以比那些聪明人过的还好。

但归纳思维有个致命缺陷是 —— 无法诞生基础学科。我们能诞生像《论语》这样伟大的著作,但是无法诞生像数学、物理、生物、哲学这种基础学科,基础学科的建立必须用 “绝对正确的起点知识+演绎思维” 构建。

西方学术传统是,我先不管别的,我先把你这个根搞清楚。

深入思考也是如此,从绝对正确的起点知识出发,加演绎推理,保证结果的绝对正确。

  • 关键就在于,绝对正确的起点知识 + 演绎推理

在阅读的时候,时时刻刻都能注意到自己的思考与思路,时时刻刻都在对自己的思考与思路进行“反思”、“校验”、“修订”… …因为这样,所以在读书的时候,读到的不仅仅是文字以及文字所阐述的道理,更多注意到的是作者的“思考方式” ,找到作者的“思考方式”与自己的“思考方式”之间的不同,并持续地反思这个问题:如果作者的“思考方式”有可取之处的话,那自己的“思考方式”要作出哪些调整?

于是,一本类似《概率论》这样的书读完以后,大多数人就是考个试也不一定能及格,但却有另外的极少数人成了科学家,因为他们改良了自己的思考方式,从此可以“像一个科学家一样思考”……
 


建立连接

记忆到底是怎么回事?我们一般人心目中的记忆,大概就如同写在沙滩上的字,随着时间就会慢慢模糊掉……而这个比喻是错的。

这个关键在于记忆的东西是什么。

  • 如果是让人记若干组没有规律的字母组合,在这种情况下记忆的衰减的确符合遗忘曲线;
  • 但我们记忆的通常不是随机字母组合,而是彼此关联的组合,如一首诗 —— 诗歌的词句彼此之间有联系,放在一起是有意义的;

人的记忆其实有两个强度:

  • 存储强度
  • 提取强度

存储强度不会随时间减弱!我们每时每刻都在接收大量的信息,而其中的绝大部分都被大脑自动忽略了——这些被忽略的不算。

那些剩下来的,你主动希望记住的东西——比如说一个人名,一个电话号码,一个英语单词 —— 一旦进入记忆,就永远在那里了。

下次再见到它,它在你大脑里的存储强度会增强,但是哪怕你再也不见它了,它的存储强度也不会减弱,存储强度只增不减。

那么为什么我们会忘记一些东西呢?那是提取强度出了问题。如果没有复习,提取强度就随着时间慢慢减弱。

比如现在让你回忆二十年前同学的音容笑貌,你肯定想不起来什么,但是如果你跟TA突然见面,俩人一聊天,当初种种就呼啦一下全回来了。记忆其实一直都存在那里,只是不好提取了。

我们的很多的记忆和存储是深埋在头脑当中的,只有在某个特定场景,需要你应对的时候,才自然从头脑中提取出来 —— 你这时候才发现你头脑中竟然还存储着这个东西;如果不在特定的场景里,你可能根本不知道它竟然藏在头脑当中。

  • 存储库 = 巨大的仓库
  • 提取能力 = 一个手电筒

只有手电筒照到仓库的某个地方,你才能发现它在那儿;如果不打开手电筒,你根本没法在巨大的仓库里找一个东西,完全不知道它一直在的地方,就如同这个东西不存在一样,提取是最好的存储。

我们学习也是如此,有意义的知识能被直接编码为长时记忆,无意义的知识、孤立的知识,需要大量的重复,才能变成长时记忆。

记忆的本质,就是新旧知识的连接。

我们所学知识,绝大多数都不是孤立的,都存在某种逻辑关系,记忆的本质,是善于用逻辑联系来记忆信息。

我原来出门老爱忘东西,后来一个朋友教给我四个字:“伸手要钱” —— 身份证、手机、钥匙、钱包,这四个要素组成了一个逻辑,我只要带着这个逻辑,缺哪一个我都非常清楚。

问:如何建立逻辑呢?

答:结构,好的结构,能让人看到更多信息。


现在我们记忆这一串数字:149162536496481100 。

如果能发现其中的规律,记住就很容易,而且永远不会忘记。

把这些数字排列起来就是: 1 4 9 16 25 36 49 64 81 100 。

1的平方是1,2的平方是4,3的平方是9,依此类推,一直到10的平方。

可问题在于,我们如何发现知识点的规律呢?你,是一切的根源。

我们需要创造一个 “结构化思维” 的概念,让你对结构这种思维方式有一个更具体的感知。
 


结构分析

面对问题的时候你可以通过某种结构,把它拆解成一个个你能解决的部分。

从纵向上看,最顶端就是你需要解决的问题,下一层是支撑解决问题的不同方面,再下一层就是支持这些不同方面的原因,或者叫子理由。

问:如何能将 200 毫升的水装进 100 毫升的杯子里?

你可能会想到很多答案,比如用两个 100 毫升的杯子来装,把水冻成冰,再把冰放到杯子里等等。

这些答案可能对,也可能不对。但目前为止,你都还是基于你的经验来分析问题,不一定能保证想清,而且想全了。

那么如何用结构化思维的方式来更清晰、全面地分析这样一个问题呢?你来和我一起把这个问题从形成的根本原因上拆解一下。

200 毫升的水装不进 100 毫升的杯子的原因,无外乎有三个方面:

  1. 杯子太小装不下了
  2. 水是液态的,会流动
  3. 外部环境因素,地球有重力

水、杯子和外部环境。而且有了这个结构以后,你可能会发现,可以系统性的找到很多的解决方案。

  1. 从杯子方面来分析: 可以考虑换个像气球一样的杯子。随着水倒进去,这个杯子就会变得越来越大,或者干脆用两个 100 毫升的杯子,总之你所有的办法都是解决容积问题的。

  2. 从水会流动这方面来分析: 可以把水冻成冰柱,那么,哪怕是 300 毫升的水也可以放到杯子当中去。

  3. 从外部环境方面来分析: 地球是有重力的,那就可以考虑把水和杯子拿到太空当中去,这时候水变成水球,再多也装得下。

结构对了,什么都对。
 


纵向拆解

面对海量信息,如何对信息高效识别?

用结构化思维的方法,在你接收信息的时候,就可以把它识别成 结论、理由和事实 这三个部分。

结论就是中心思想,是个观点,也就是从一定的立场或角度出发,对事物和问题的看法。

快速找到结论:

  1. 找到对方话语里表示结论的提示词,如因此、所以、表明,后面跟着的句子,就是TA想表达的结论。
  2. 关注信息中的几个重要位置,如对方说话的开头、结尾。

快速找到理由:

  1. 找到对方话语里表示结论的提示词,如因为、原因是、主要是、鉴于、第一、第二、第三,后面跟着的句子,就是支持结论的理由。

快速找到事实:

  1. 数据和不带感情色彩的事例是客观的。

面对海量信息,通过寻找结论、寻找理由和事实,来识别梳理信息,其实是一个纵向上的总分结构 。

一级目录:概念
    ~~~    二级目录:是什么(结论)
       ~~~~~~       三级目录:为什么(理由)
          ~~~~~~~~~          四级目录:怎么做(事实)

如果是读书笔记,建议改成只有一、二级目录:

一级目录:概念
    ~~~    二级目录:理解概念

一级目录:概念
    ~~~    二级目录:是什么(结论)
    ~~~    二级目录:为什么(理由)
    ~~~    二级目录:怎么做(事实)
 


横向拆解

而当你梳理了一堆结论、理由、子理由,列在了金字塔结构上之后,如何在横向上对它们进行分类和排序,这是横向拆解。

假设你是一位销售,你总结了跟客户拉近距离的九条心法,想要向老板汇报。分别是:

  • 保持微笑和目光接触;
  • 不只是单单回答顾客的提问,还要提供更周到的服务;
  • 让顾客把话说完,不打断和猜测还没有说完的话;
  • 提出适当的问题来询问顾客,保持对方的兴趣;
  • 如果顾客表现出不耐烦或不要被打扰时,应当尊重顾客的意愿;
  • 如果顾客在某个产品前逗留较久时,可以轻柔询问,是否需要协助;
  • 展现个人的风格,提供建议;
  • 用正面的语言回答;
  • 当顾客没有买东西要离开时,可以递上宣传册,欢迎他们再次惠顾。

如果你真的把这九条一条一条向老板汇报的话,可以想象,效果是很差的。而一旦你把不同的条目进行分类,信息就会变得非常清晰、简单。

比如,把这些心法分成:

  • 你无时无刻都要做的
  • 根据顾客的不同反应分别去应对的

那么,以上信息就变成:

  • “无论什么时候都要对顾客保持微笑,有目光接触,展现个人风格和使用正面的语言。当顾客有不同反应时,又要有特别的应对。比如,顾客有购买意愿时,应当上前去询问、引导;当顾客想离开时,可以递上宣传册,欢迎再次惠顾。”

分类最重要的是,不重不漏。

我知道大概有 4 种方法:

  • 二分法:上面的销售案例划分成俩部分,无时无刻和不同反应。二分还可叠二分,如重要紧急、重要不紧急、不重要但紧急、不重要也不紧急。
  • 过程法:事情发展的时间、流程、程序,如上面的销售案例可以按顾客进店、店内接待、送客重新划分 — 特别适合对项目进展和阶段的汇报上。
  • 要素法:把一个整体分成不同组块,如九个工作谎言、高效能人士的七个习惯 — 突出事物的各个方面特征。
  • 公式法:按照公式设计要素分类,如 — 适合零碎、无关联的信息淹没在无尽的劳苦与焦虑中。

现如今,似乎 “明星开店” 已成为了娱乐圈的潮流。

许多的明星在忙碌着自己演艺事业的同时,都会利用自身的名声与影响力去开拓一些副业,有跨界开酒庄、开潮牌服装店、开健身房……而其中开餐饮店却是大部分明星更为偏爱的一项投资。

明星开餐厅趋之若鹜,最后其实大多都是以惨淡收场为结局的。那么明星开餐厅大多失败的原因是什么呢?

  • 有人说,明星开的餐厅十有八九会倒闭,因为他们不善经营,他们应该请个好的经理人;

  • 有人说,现在餐饮竞争太激烈了,应该换个赛道;也有人说,他们肯定是被人坑了,投资需谨慎,等等。

各种各样出于善意的建议,也许各有道理,但都是 “散点思维” ,会让身处困境者无所适从。

那如果用“公式思维”来思考,应该如何拆解这个问题呢?

首先,我们要找到能准确描述餐厅经营逻辑的 “公式”。

商科有一个模型:销售漏斗公式。

  • 销售 = 流量 * 转化率 * 客单价 * 复购率

用这个公式来分析餐厅经营逻辑:

  • 流量,是知道这家餐厅的总人数;

  • 转化率,是知道这家餐厅的总人数中,有多少人真的会来吃饭;

  • 客单价,就是每桌来吃饭的顾客消费多少金额;

  • 复购率,就是吃过这家餐厅的顾客中,有多少会再来。

理解了这个公式之后,你来想一想,明星的影响力,会在这四个变量上的哪一个起作用?

流量。

明星的影响力,确实可以在短时间内给餐厅带来巨大流量。但是,每家餐厅都受制于固定物理位置,终究只能做确定范围的生意。

一家餐厅要经营三年以上,最终是要靠老顾客反复来吃,才能维持以及发展的。

当你用 “销售 = 流量 * 转化率 * 客单价 * 复购率” 这个公式来思考,很容易得出一个结论:

  • 餐厅的短期的生意靠流量,长期的生意靠复购率。

接着,给出你的建议:

⒈明星自己要负责用影响力给餐厅带去流量

⒉ 但一定要找到有丰富经验的经理人,帮助提高转化率和客单价

⒊ 千万不要忘记持续监控菜品的质量,保证复购率

当你能破除散点思维,建立公式思维时,整个世界在你眼中,不再是一个个 “要素”,而是TA们之间的 “连接关系”。
 


加强连接

加强连接,一思考,深入地思考,二是应用,尽可能地去运用。

  • 主题阅读
  • 以教为学
  • 职业标准

 
主题阅读

  • 围绕一个主题阅读,建议你找其中五本书来读。

第一本是通俗易懂的畅销书。它能让你迅速了解基本知识,熟悉这个话题。

第二本是热门书,通俗性稍弱一点,技术性稍强一点。这本书能让你能体会到其中技术性的乐趣,你会感到兴奋和刺激。你要把其中最喜欢、最能激发你的想象力的东西记下来,这种细节往往是你要找的方向所在。

第三本是专家的视角。这本的技术性更强,作用是让你看到专家是如何考虑问题的。特别是这种书能给你带来大局观,能开拓你的视野。

第四本是一本真正的硬书,是最难啃的一本,是这个领域的专家写给专家看的书。读这种书要识别的是现在专家对哪些话题最感兴趣,当前领域的真正难点所在。

第五本是关于领域未来走向的书,它能让你感知到最前沿的东西。

而如果你已经有一定的知识储备,那比较浅的书对你来说就是不必要的了,你可以直接读第四本和第五本。

读第一本书的时候,我们就建立了知识树,读二、三、四、五本主要是修剪知识树。
 

以教为学

读完书之后你会有很多问题,解决这些问题最方便的办法就是找一个专家,直接问他。

抵达前沿,前沿是那些大家没有公认确定的答案,还属于教科书上的空白的地方 —— 而这也恰恰是你能够有所作为的地方。

这时候你需要读的是最新的发表的东西,比如专业期刊的文章、论文,某个专家的博客、推特,或者是讲座。这些是专家之间的争论。而这些最有争议的地方,恰恰也是最活跃的地方,可能就是你的机遇所在。

可以把学到的东西总结出来了。你要把新观点讲成一个故事,而这意味着把其中的因果关系理顺,建立一个思维模型。

给你的家人、朋友或者随便找给陌生人讲讲,看他们能不能听懂。又或者可以写篇文章发到网上,供大家探讨。找个专家帮你审审稿。
 

职业标准

不论学习任何知识,还是打磨任何技巧,最重要的一点就是:从开始就像专业人士一样生活。

不要想着等我学会了XX,就可以像专业人士一样了。开始就“玩真的”,绝对不拿自己当业余选手。

任何一个领域中都有八种知识,是只对专家可见,对其他人是不可见的。你得掌握这些一般人连看都看不见的知识,才可能成为绝顶高手。

一个是大局观,你得根据具体的情境,知道当前这个事儿最重要的是什么,抓住关键。

一个是领域内各种事物的运行方式,掌握其中的思维模型。

另一个是领域当前的局面是什么。你得知道现在这个领域里正在发生什么事情。如果是个学术领域,当前的研究热点是什么?江湖上最厉害的那些研究组都在做什么研究,根据这个趋势,你判断接下来马上会发生的突破是什么?

一个是新手注意不到的规律和模式。现在都有哪些最新出的科研方法和营销手段,别人赢是怎么赢的,你得能发现其中的门道。

一个是新手无法察觉到的微小区别。最好的,和比较好的,两种产品,一般人看不出来其中到底相差在哪里。200 块一瓶的酒到底比 20 块一瓶的酒好喝在哪,你得能找到那个差别。

一个是对意外的敏感。这个事儿可能会出现什么意外,有哪些风险点,哪里最容易出毛病,你最好心里有数。特别是如果一件出乎你预料事情发生了,那这件事就是你必须全力以赴学习的,真正的机会可能就在这件事之中。

一个是临场发挥。如果事情的走向不符合固定的模型,你能不能抓住机会做出临时的调整?你的经验足够应对这样的机会吗?

一个是自身的局限性。你得知道自己差在哪里,你知道什么不知道什么,会什么不会什么。你需要「元认知」能力。

······

首先,知道专业人士是怎么想的,比如数据结构。

我们平常的学习方式,错误的根源在于,你把数据结构(如链表)当成了一种整体的、不可分割不可更改的完整概念——而后,就着这个概念,考虑它的用途它的优点它的弱点,总结出一二三四然后背诵……完了。

比如,你问我用链表的目的是什么?省空间还是省时间?

完蛋,这叫买椟还珠。

实际上,讲链表是为了给你引出“借助后向指针(next)组织数据”这么一个设计思路;同时借助这个思路完成一个典型的应用案例、学着分析它的空间/时间复杂度……

而后,马上领着你变换它、变形它、改进它……

比如,加上一个前向的prev指针,把单向链表改成双向链表;或者把next指针去掉、换成left/right指针,把它改成二叉树,等等。

这个过程中,真正想教给你的,是因地制宜的定制各种数据结构、分析其时空复杂度,为自己未来设计自己的算法/数据结构铺路。

因此,不要问“用链表的目的是什么”,而是反过来问:“链表是为了解决什么问题而发明的”、“有没有更优方案”、“如何找出更优方案”、“如何证明方案更优”……终至于“当我遇到某个没有先例的难题时,该如何优雅的解决它?”

链表是为了解决什么问题而发明的?

为了解决动态数量的数据存储。有没有更优方案?

有。

时间上,链表无法支持搜索,想找到特定数据只能遍历。

空间上,链表每个数据要额外占用一个指针的空间;对于int等基本数据类型,数据量暴增一倍(单链表)甚至两倍。

那么,为了在时间上优化它,我们可以搞成二叉树;然后通过先序/后序/中序遍历取得按一定规律排布的数据;也可以通过和根节点比较来快速确定数据在排序二叉树的左还是右子树上——这就得到了O(logN)的查询效率。

但“随随便便插入数据”的二叉树很可能“偏”的非常厉害;极端情况下就退化成了空间消耗更高但效率没有丝毫提升的链表(绝大多数的左或右指针空着)。因此我们需要研究怎么样的二叉树才能有最好的查询效率、怎样才能保持二叉树的良好性能——于是就有了满二叉树、平衡树、红黑树等概念/算法。

但这样空间占用就比单链表更多了。怎么办呢?

堆是一种优化到极致的二叉树;它实际上就是一个数组,左右节点对应的数组下标可以直接计算出来——这就省掉了指向子节点的指针。

不过,指针没了,灵活管理不定量数据、低消耗的插入删除等好处也没了。

只不过,这个方案里,插入/删除会变得特别麻烦——堆排序本身已经够烧脑了,结果算出来的下标还要根据配置截成很多段、还要在每段里重新计算……

即便这个算法我们可以轻易hold住,但每次插入/删除造成海量元素位置移动,这个消耗也太可怕了——O(N)的消耗!

另一个折衷方案就是B树(以及B+树)——说白了,把节点做大一些,多存储一些数据,换句话说就是“让若干数据共用一组指针”、或者说是一种“半堆半树/堆树结合”的数据结构:用更少的指针得到差不多的性能,这就把空间占用问题和高消耗的插入删除问题给解决了,同时查找效率仍然保持在O(log N)。

顺带的,这也避免了需要连续读取数据时不停的顺着指针跳转的问题,因此是一种非常适合磁盘存储的数据结构。

灵活管理不定量数据这个需求容易满足:我们把数组分成若干段、再调整一下计算出来的下标就行了。

所以你说“用链表的目的是什么”?

没目的。

或者说,目的是让你学会因地制宜的、灵活的组织数据——而且随便你搞出多么奇怪的数据结构、多么复杂的数据组织形式,你都能清晰的给出它(对某个特定任务)的时间/空间复杂度。

当你能掌握到这个程度时,你完全可以把完全二叉树、满二叉树、红黑树、B树、B+树的定义统统忘掉;但只要有需要,你随时随地都能把你面对的数据整进一个结合了二叉树和队列优点的、不知道该叫什么的数据结构里——从而以最高效率完成你面对的任务。

换句话说,不要浮在表面、只看到链表二叉树之类东西;而是要深入进去,把它们统统拆散了、揉碎了、忘记了 —— 你要做它们的发明者,不要做它们的使用者。

你要学的,是最高效率把玩海量数据的思路;你不仅要能因地制宜的给出解决方案、还要有能力给出综合最优的方案(并作出证明)—— 停留在链表这个表面上,那是连门在哪都没摸到,谈何入门。

算法与数据结构这本书,其中一大半的篇幅都在教这个改进过程/思路 —— 只不过绝大多数的讲师都没意识到这点,反而习惯性的分章节摘开、把明显具有演进关系的概念割裂成一个个完美的数据结构来讲解/学习,再加上考试指挥棒的作用,这才使得绝大多数人被误导到了错误的方向。

专家眼里是没有一个现成的完美品,用就对了别管它怎么实现也别试图改进它,专家的生活是你必须彻底搞明白它的设计思路、你必须自己改进它;心态上,千万不能求快,一个字一个字的读,一个字一个字的读懂,才是最快的方法……

以上是关于我们如何学习 2:如何建立模型的主要内容,如果未能解决你的问题,请参考以下文章

从模型到算法,用机器学习解决90%的自然语言处理

我们如何学习 2:什么叫 “会学习”

简单易懂 | 机器学习如何快速入门?

简单易懂 | 机器学习如何快速入门?

如何提高自我学习能力?

基于C#的机器学习--机器学习建模的基础