Day 442:迭代不变性(1)

熟悉数据结构的话,会发现其中很大一类的核心思想是让数据的组织保持某种特性,增加或减少数据时进行调整,使得这些数据的组织始终保持此种特性。这种稳定性使得利用这些数据组织(或者叫数据结构)的算法只需要通过持续迭代就能最终解决问题。

先举个例子,我们在app的搜索框中或者搜索引擎里输入某些词的时候,常常会看到有提示,它会帮助我们补全后面可能的词。这已经是司空见惯的特性,但你是否知道它背后的原理?

不同的应用各有自己的实现方式,而商业应用为了最好的性能更是用了多种技术。有一种最简单易懂的方法可以来实现。像下面所表示的,有个名字叫Trie树,通常发音Try。请注意箭头上的字母,很直观的理解就是,沿着边走的话,可以得出to、tea、ted等单词。

好,如果系统里面已经有了这棵树,那用户输入t时,系统立刻就能找到最上面一层最左边的t,同时也能立刻找出下面的o和e,以及e下面的其他字母,从而可以在界面上呈现给用户,给他提示。

(图来自维基百科

有人说,这有什么。试想,如果有百万的单词,每输入一个字母都要全部找一遍的话,会非常花费时间,而用这棵树,就能迅速找到提示的词。

这棵树有什么迭代不变性呢?明天再说。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容