
算法
ae5555
这个作者很懒,什么都没留下…
展开
-
判断两个线段相交
http://www.cnblogs.com/zhangchaoyang/articles/2668562.html 如何判断向量在的顺时针方向还是逆时针方向? 把p0定为原点,p1的坐标是(x1,y1),p2的坐标是(x2,y2)。向量的叉积实际上就是矩阵的行列式:转载 2014-11-27 00:32:05 · 580 阅读 · 0 评论 -
凸优化
凸优化一旦将一个实际问题转化为凸优化问题,大体上意味着相应问题可以得到彻底解决。 线性规划:目标函数和约束函数都是线性函数, 凸优化: 目标函数和约束函数都是凸函数, 超平面分离定理 假设C和D是两个不想交的凸集,那么存在超平面将两个集合分离。凸函数性质如果函数f是凸函数,那么它的非负伸缩和求和都是凸函数。类似,凹函数的非负伸缩和求和都是凹函数。如果函数f1,f2,…,fm为凸函数原创 2015-11-09 00:06:58 · 1499 阅读 · 0 评论 -
计算几何-点与多边形的位置
1.外积法:设待判断的点为p,逆时针或顺时针遍例多边形的每个点vn,将两个向量n>和n, vn + 1>做外积。如果对于多边形上所有的点,外积的符号都相同(顺时针为负,逆时针为正),则可断定p在多边形内。外积出现0,则表示p在边上,否则在多边形外。原创 2014-12-15 23:52:57 · 398 阅读 · 0 评论 -
hash表算法
哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。把Key通过一个固定的算法函数既所谓的哈希函数转换成一个整型数字,然后就将该数字对数组长度进行取余,取余结果就当作数组的下标,将value存储在以该数字为下标的数组空间里。Hash Table的查询速度非常的快,几乎是O(1)的时间复杂度。问题描述百度面试题: 搜索引擎会通过转载 2014-12-08 12:26:58 · 519 阅读 · 0 评论 -
字符串相似度计算
对于不同的字符串,我们希望能够有办法判断其相似程序。我们定义一套操作方法来把两个不相同的字符串变得相同,具体的操作方法为:1.修改一个字符(如把“a”替换为“b”); 2.增加一个字符(如把“abdd”变为“aebdd”); 3.删除一个字符(如把“travelling”变为“traveling”);将两个不同的字符串通过上述三种操作转化为相同的字符串进行的操作所需要的次数定义转载 2014-12-07 12:36:21 · 539 阅读 · 0 评论 -
快速判断正整数是否为某个数的幂
1.判断正整数是否为2的n次幂将2的幂次方写成二进制形式后,很容易就会发现最高位只有一个1,并且1后面跟了n个0。如果将这个数减去1后会发现,仅有的那个1会变为0,而原来的那n个0会变为1;因此将原来的数与去减去1后的数字进行与运算后会发现为零((x & x- 1) == 0)。public static boolean isPowerOfTwo(int x) { return x转载 2014-12-07 23:44:29 · 1167 阅读 · 0 评论 -
perfect shuffle 完美洗牌算法
完美洗牌问题:给定一个数组a1,a2,a3,...an,b1,b2,b3..bn,把它最终设置为b1,a1,b2,a2,...bn,an这样的。 perfect shuffle实质是一个置换。置换为: i -> 2*i mod (2*n+1) 置换可以分解为一系列不相交的轮换之积。故如果能找出所有轮换的一个代表元则可很容易解转载 2014-12-06 00:20:14 · 1629 阅读 · 0 评论 -
全排列算法
1.递归全排列分别将每个位置交换到最前面位,之后全排列剩下的位。递归全排列 1 2 3 4 5 1,for循环将每个位置的数据交换到第一位 swap(1,1~5) 2,按相同的方式全排列剩余的位2.字典序全排列算法对给定的字符集中的字符规定了一个先后关系,在此基础上规定两个全排列的先后是从左到右逐个比较对应的字符的先后。【转载 2014-12-05 12:45:37 · 433 阅读 · 0 评论 -
数组中出现次数超过一半的数字
题目:数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字。1.使用排序算法,将整个数组排序,然后中间的数字就是出现次数超过一半的数字。时间复杂度为O(nlogn)。2.数组中有个数字出现的次数超过了数组长度的一半。也就是说,有个数字出现的次数比其他所有数字出现次数的和还要多。因此我们可以考虑在遍历数组的时候保存两个值:一个是数组中的一个数字,一个是次数。当我们遍历到下一个数字的时转载 2014-12-05 00:18:18 · 376 阅读 · 0 评论 -
子数列的最大和
题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。从数组第一个数开始累加,如果当前得到的和是个负数,那么这个和在接下来的累加中应该抛弃并重新清零,不然的话这个负数将会减少接下来的和。输入有一类特殊情况需要特殊处理。当输入数组中所有整数都是负数时,子数组和的最大值就是数组中的最大元素。转载 2014-12-04 12:31:00 · 505 阅读 · 0 评论 -
杨氏矩阵的算法问题
1.查找给定的一个数是否在杨氏矩阵中?在一个m行n列二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。(1)因为矩阵的行和列都是递增的,所以整个矩阵的对角线上的数字也是递增的,故我们可以在对角线上进行二分查找。(2)定位法。首先直接定位到最右上角的元素,再配以二分查找,要找的数转载 2014-12-03 12:19:42 · 862 阅读 · 0 评论 -
并查集
并查集由一个整数型的数组和两个函数构成。数组pre[]记录了每个点的前导点是什么,函数find是查找,join是合并。int pre[1000 ];int find(int x)原创 2014-12-15 12:52:06 · 394 阅读 · 0 评论 -
计算几何-凸包问题
问题给定平面上的二维点集,求解其凸包。原创 2014-12-15 23:55:58 · 516 阅读 · 0 评论 -
k-means聚类算法
聚类属于无监督学习,以往的回归、朴素贝叶斯、SVM等都是有类别标签y的,也就是说样例中已经给出了样例的分类。转载 2014-11-22 23:07:42 · 479 阅读 · 0 评论 -
simhash算法
simhash是局部敏感hash。md5是全局敏感hash.转载 2014-11-22 10:50:15 · 661 阅读 · 0 评论 -
EM算法与思想
EM思想与最大似然参数估计问题密切相关。原创 2014-11-23 23:56:29 · 2502 阅读 · 0 评论 -
决策树与随机森林算法
决策树(分类树)是一种树形结构,其中每个内部节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一种类别。决策树只需要构建一次,每一次预测分类的最大计算次数不超过决策树的深度。决策树学习算法ID3算法通过自顶向下构造决策树来进行学习,构造过程是从”选取分类能力最好的属性作为根节点被测试”开始,然后为根节点属性的每个可能值产生一个分支。选择合适的分割点,将分类的各个子集都很”纯净”。原创 2015-11-18 21:33:39 · 3659 阅读 · 0 评论