1.定义 Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。 2.算法描述 1)算法思想:设G=(V,E)是一个带权有向图,把图中顶点集合V分成两组,第一组为已求出最短路径的顶点集合(用S表示,初始时S中只有一个源点,以后每求得一条最短路径 , 就 ...
分类:
编程语言 时间:
2019-02-02 23:31:00
阅读次数:
240
限流算法 令牌桶算法 算法思想是: 令牌以固定速率产生,并缓存到令牌桶中; 令牌桶放满时,多余的令牌被丢弃; 请求要消耗等比例的令牌才能被处理; 令牌不够时,请求被缓存。 漏桶算法 算法思想是: 水(请求)从上方倒入水桶,从水桶下方流出(被处理); 来不及流出的水存在水桶中(缓冲),以固定速率流出; ...
分类:
其他好文 时间:
2019-01-25 11:35:47
阅读次数:
131
第1章 当我们谈论算法的时候,我们在谈论什么?无论是BAT,还是FLAG,但凡有点儿水平的技术公司,面试都要面算法。为什么算法这么重要?在工作中,真的会使用算法吗?学了算法到底有什么用?当我们谈论算法的时候,我们在谈论什么?第2章 排序基础O(n^2)的算法虽然简单,但也实用!让我们从最简单的基础排 ...
分类:
编程语言 时间:
2019-01-23 00:12:45
阅读次数:
178
分类:单源最短路径算法。 适用于:稀疏图(侧重于对边的处理)。 优点:可以求出存在负边权情况下的最短路径。 缺点:无法解决存在负权回路的情况。 时间复杂度:O(NE),N是顶点数,E是边数。(因为和边有关,所以不适于稠密图) 算法思想:很简单。一开始认为起点是“标记点”(dis[1] = 0),每一 ...
分类:
编程语言 时间:
2019-01-17 16:28:18
阅读次数:
195
什么是退火: 退火是指将固体加热到足够高的温度,使分子呈随机排列状态,然后降温使之冷却,最后分子以低能状态排列,固体达到某种稳定状态。 物理退火过程 模拟退火算法思想: 模仿自然界退火现象而得,利用物理固体物质的退火过程与一般优化问题的相似性从某一初始温度开始,伴随温度的不断下降,结合概率突跳特性在 ...
分类:
其他好文 时间:
2019-01-10 13:18:21
阅读次数:
236
1.最佳置换算法(OPT) 算法思想:将最长时间内不会被访问的页面置换出来。由于系统无法预知哪个页面不会被访问,因此实际上这个算法无法实现,只是用来做比较。 2.先进先出算法(FIFO) 算法思想:先进入内存的页面先被置换出去。 3.最久未被访问算法(LRU) 算法思想:将最久没有被访问的页面置换出 ...
分类:
编程语言 时间:
2019-01-09 01:26:33
阅读次数:
241
阅读目录 1. SimHash与传统hash函数的区别 2. SimHash算法思想 3. SimHash流程实现 4. SimHash签名距离计算 5. SimHash存储和索引 6. SimHash存储和索引 7. 参考内容 在之前的两篇博文分别介绍了常用的hash方法([Data Struct ...
分类:
其他好文 时间:
2018-12-30 15:36:48
阅读次数:
191
最远 Manhattan 距离 处理问题 K维空间下的n个点,求两点最远曼哈顿距离 思路 以二维为例介绍算法思想,即可类推到k维。对于P,Q两点,曼哈顿距离|Px Qx|+|Py Qy|可看作(±Px±Py) (±Qx±Qy),不难发现Px应该与Qx的符号相同,Py与Qy符号相同,因此共四种情况。这 ...
分类:
其他好文 时间:
2018-12-27 10:25:42
阅读次数:
115
在学习「数据结构和算法」的过程中,因为人习惯了平铺直叙的思维方式,所以「递归」与「动态规划」这种带循环概念(绕来绕去)的往往是相对比较难以理解的两个抽象知识点。 程序员小吴打算使用动画的形式来帮助理解「递归」,然后通过「递归」的概念延伸至理解「动态规划」算法思想。 什么是递归 先下定义:递归算法是一 ...
分类:
其他好文 时间:
2018-12-26 15:40:11
阅读次数:
164
排序(2):直接插入排序 一、前言 直接插入排序(Insertion Sort)序是一种最简单的插入排序。为简化问题,我们下面只讨论升序排序。 二、算法思想 插入排序:每一趟将一个待排序的记录,按照其关键字的大小插入到有序队列的合适位置里,知道全部插入完成。 动态效果示意图: 以上的过程,其实就是典 ...
分类:
编程语言 时间:
2018-12-25 22:26:25
阅读次数:
289