• 广度优先搜索算法

    /

    介绍

    广度优先算法按照一种同心圆的方式,首先访问所有和初始顶点邻接的顶点,然后访问与邻接节点邻接的所有未访问到的节点,以此类推,直到所有与初始顶点同在一个连通分量中的顶点都访问过了为止。如果图中仍然存在未被访问的节点,该算法必须从图的其他连通分量中的任意顶点重新开始。

    使用队列来跟踪广度优先搜索的操作是比较方便的,该队列先从遍历的初始顶点开始,将该顶点标记为已访问。在每次迭代的时候,该算法找出所有和队头顶点邻接的未访问节点,并将它们标记为已访问,再把它们入队,然后将队头节点从队列中移除(因为该节点所有可能的下一步已经在队列中,该节点被pass)。

    上述介绍比较难懂,广度优先算法致力于解决的问题可以概括为:在一个图中已知起点与终点,求从起点出发到终点的最短路径。起点即初始节点,终点为目标节点,从初始节点出发开始广度优先遍历搜索,第一次到达目标节点时走过的路径即位最短路径。

  • 前缀树Trie的实现

    前缀树

    Trie树,也叫做字典树,是一种有序树,用于保存一种映射关系,其中映射的键通常为字符串,且键并不直接保存在节点中,而是由节点在树中的位置决定。一个节点所有的子孙都具有相同的前缀,也就是该节点所对应的字符串,而跟节点对应空字符串。一般情况下,不是所有的节点都有对应的值,而是只有叶子节点和部分内部节点所对应的键才有相关的值。

    应用 : Trie树常用于搜索提示。比如当输入一个网址,可以自动搜索出其他可能的选择,当没有完全匹配的搜索结果时,可以返回前缀最相似的可能值。

  • 负载均衡算法

    /

    负载均衡算法

    简介

    负载均衡的职责是将网络请求或者其他形式的负载均摊到不同的机器上,避免集群中部分服务器压力过大而另一些服务器空闲的情况。通过负载均衡,可以让每台服务器获取到适合自己处理能力的负载,为高负载服务器分流的同时,也可以避免资源浪费。以下将分析几种不同的负载均衡算法。