10 2017 档案
摘要:迪杰斯特拉算法是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题。迪杰斯特拉算法主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。 算法思想:设G=(V,E)是一个带权有向图,把图中顶点集合V分成两组,第一组为已求出最短路径的顶点集合(用S表示,初始时S中只有一个源点,以后
阅读全文
摘要:随机森林(Random Forest,简称RF)拥有广泛的应用前景,从市场营销到医疗保健保险,既可以用来做市场营销模拟的建模,统计客户来源,保留和流失,也可用来预测疾病的风险和病患者的易感性。 随机森林就是通过集成学习的思想将多棵树集成的一种算法,它的基本单元是决策树,而它的本质属于机器学习的一大分
阅读全文
摘要:区间嵌套法原理 如果节点区间[clft, crgt]与[plft, prgt]存在如下关系:clft >= plft and crgt <= prgt,则[plft, prgt]区间里的点包含[clft, crgt]的子节点。基于此假设我们就可以通过对区间的不断的向下划来获取新的区间。 举例:如果在
阅读全文
摘要:在基于数据库的一般应用中,查询的需求总要大于删除和修改。为了避免对于树形结构查询时的“递归”过程,基于Tree的前序遍历设计一种全新的无递归查询、无限分组的左右值编码方案,来保存该树的数据。优点是查询非常的方便,缺点就是每次插入删除数据涉及到的更新内容太多,如果树非常大,插入一条数据可能花很长的时间
阅读全文
摘要:闭包表的思路和物化路径差不多,都是空间换时间,Closure Table,一种更为彻底的全路径结构,分别记录路径上相关结点的全展开形式。能明晰任意两结点关系而无须多余查询,级联删除和结点移动也很方便。但是它的存储开销会大一些,除了表示结点的Meta信息,还需要一张专用的关系表。 其中 Ancesto
阅读全文
摘要:在创建节点时,将节点的完整路径进行记录。 按照Path Enumeration 进行存储后的结果如下: 此种方案借助了unix文件目录的思想,主要时以空间换时间。 缺点: 树的层级太深有可能会超过PATH字段的长度,所以其能支持的最大深度并非无限的。 PS:如果层级数量是确定的,可以再将所有的列都展
阅读全文
摘要:在程序开发中,我们常遇到用树型结构来表示某些数据间的关系,如企业的组织架构、商品的分类、操作栏目等,目前的关系型数据库都是以二维表的形式记录存储数据,而树型结构的数据如需存入二维表就必须进行Schema设计。 Adjacency List(邻接列表模式) 简单的说是根据节点之间的继承关系,显现的描述
阅读全文
摘要:引子 考虑一个有序表:14->23->34->43->50->59->66->72 从该有序表中搜索元素 < 23, 43, 59 > ,需要比较的次数分别为 < 2, 4, 6 >,总共比较的次数 为 2 + 4 + 6 = 12 次。有没有优化的算法吗? 链表是有序的,但不能使用二分查找。类似二
阅读全文
摘要:一致性哈希可以有效解决分布式存储结构下动态增加和删除节点所带来的问题。 一致性hash算法提出了在动态变化的Cache环境中,判定哈希算法好坏的四个定义: 环形Hash空间 按照常用的hash算法来将对应的key哈希到一个具有2^32次方个桶的空间中,即0~(2^32)-1的数字空间中。现在我们可以
阅读全文
摘要:B树 B-树就是B树,中间是横线不是减号。B树是一种多路平衡查找树。 B-树(Balance Tree),一个m阶的B树具有如下几个特征: 1.根结点至少有两个子女。 2.每个中间节点都包含k-1个元素和k个孩子,其中 m/2 <= k <= m 3.每一个叶子节点都包含k-1个元素,其中 m/2
阅读全文
摘要:转自:http://wudashan.cn/2017/09/04/Company-Programming-Competition/ 深度优先搜索算法(对所有选项一视同仁) 递归遍历所有可能性,并找出所需的结果。时间复杂度指数级。 贪心算法(选最有利于所需结果的那个选项往下进行) 每次都走出路最少的格
阅读全文
摘要:动态规划(Dynamic Programming)是一种分阶段求解决策略问题的思想。 动态规划中包含三个重要的概念: 题目: 有一座高度是10级台阶的楼梯,从下往上走,每跨一步只能向上1级或者2级台阶。要求用程序来求出一共有多少种走法。(此题是动态规划中最简单的问题,因为只有一个变化维度) 比如,每
阅读全文
摘要:BloomFilter算法,是一种大数据排重算法。在一个数据量很大的集合里,能准确断定一个对象不在集合里;判断一个对象有可能在集合里,而且占用的空间不大。它不适合那种要求准确率很高的情况,零错误的场景。通过牺牲部分准确率达到高效利用空间的目的。 场景一:假如有一个很大的表,通过字段key查询数据,操
阅读全文
摘要:调频96.8有一种游戏:游戏中,出题者写下一件东西,其他人需要猜出这件东西是什么。当然,如果游戏规则仅此而已的话,几乎是无法猜出来的,因为问题的规模太大了。为了降低游戏的难度,答题者可以向出题者问问题,而出题者必须准确回答是或者否,答题者依据回答提出下一个问题,如果能够在指定次数内确定谜底,即为胜出
阅读全文
摘要:位图算法,内存中连续的二进制位bit,用于对大量整型数据做去重和查询。 举个例子,给定一块长度是10bit的内存空间,依次插入4,3,2,1,怎么存储? 1. 给定长度是10的bitmap,每一个bit位分别对应着从0到9的10个整型数。此时bitmap的所有位都是0。 2. 把整型数4存入bitm
阅读全文
摘要:一种用于寻找有效路径的算法。 一个7×5大小的迷宫,绿色的格子是起点,红色格子是终点,中间三个蓝色格子是墙。这里对于A*寻路的描述做了很大的简化。实际场景中可能会遇到斜向移动、特殊地形等等因素,有些时候需要对OpenList中的方格进行重新标记。 游戏的规则是从起点开始,每一步只能上下左右移动一格,
阅读全文
摘要:Base64是一种编码算法,因为这种算法只支持64个[可打印字符],所以叫做Base64。 为了保证所输出的编码位可读字符,Base64制定了一个编码表,以便进行统一转换。编码表的大小为2^6=64,这也是Base64名称的由来。 为什么只支持64个字符?ASCII码的范围是0-127,其中0-31
阅读全文
摘要:信息摘要技术把明文内容按某种规则生成一段哈西值,即使明文消息只改动了一点点,生成的结果也会完全不同。 MD5(Message-digest algorithm 5)就是信息摘要的一种实现,它可以从任意长度的明文字符串生成128位的哈希值。 摘要哈希生成的正确姿势是什么样呢?分三步: 1.收集相关业务
阅读全文
摘要:一种生成信息摘要的算法。主要用于数据一致性和完整性的校验 SHA算法分很多版本,最大的分类是SHA-1和SHA-2。SHA-2包括很多子版本,SHA-224,SHA-256,SHA-384,SHA-512。 SHA-1(可破解 http://www.cnbeta.com/articles/tech/
阅读全文
摘要:假设有一个发送方在向接收方发送消息。如果没有任何加密算法,接收方发送的是一个明文消息:“我是小灰”。 如果消息被中间人截获到,即使中间人无法篡改消息,也可以窥探到消息的内容,从而暴露了通信双方的私密。 具体工作的步骤如下: 1.发送方利用密钥123456,加密明文“我是小灰”,加密结果为TNYRvx
阅读全文
摘要:ACID 理论 关系型数据库具有解决复杂事务场景的能力,关系型数据库的事务满足 ACID 的特性。 Atomicity:原子性(要么都做,要么都不做) Consistency:一致性(数据库只有一个状态,不存在未确定状态) Isolation:隔离性(事务之间互不干扰) Durability: 永久
阅读全文
摘要:字符串匹配是计算机的基本任务之一。举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"? 许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名
阅读全文
摘要:连通性问题 比如随意给你两个点,让你判断它们是否连通?或者问你整幅图一共有几个连通分支,也就是被分成了几个互相独立的块。 以下面这组数据输入数据来说明 4 2 1 3 4 3 第一行告诉你,一共有4个点,2条路。下面两行告诉你,1、3之间有条路,4、3之间有条路。那么整幅图就被分成了1-3-4和2两
阅读全文
摘要:HyperLogLog HyperLogLog 可以接受多个元素作为输入,并给出输入元素的基数估算值: • 基数:集合中不同元素的数量。比如 {'apple', 'banana', 'cherry', 'banana', 'apple'} 的基数就是 3 。 • 估算值:算法给出的基数并不是精确的,
阅读全文