Day 442:迭代不变性(1)

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

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

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

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

(图来自维基百科)

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

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

你可能感兴趣的:(Day 442:迭代不变性(1))