
算法
文章平均质量分 52
startwithdp
把知识点串成线,然后组成面
展开
-
如何学习算法
想要学好算法,首先必须意识到算法的重要性;昨天在网上看了很多文章,知道要想把软件往高往深了写,必须学好算法。从功利的角度出发,只有学好了算法,才能进入一些知名的公司企业;其次必须有一定的悟性;有了前两者,基本可以研究算法了,但是如果要在研究时有大的突破和创新,那还得有兴趣;有兴趣保证了能坚持下去的动力。 http://blog.youkuaiyun.com/v_JULY_v原创 2011-12-06 18:38:14 · 799 阅读 · 0 评论 -
点到线段的最短距离
点到线段最短距离的运算与点到直线的最短距离的运算二者之间存在一定的差别,即求点到线段最短距离时需要考虑参考点在沿线段方向的投影点是否在线段上,若在线段上才可采用点到直线距离公式,如图1所示。 图1 (a)最短距离为点P与其在线段AB上投影C之间的线段PC (b)最转载 2014-07-29 18:28:44 · 806 阅读 · 0 评论 -
GIS算法-底层开发使用
1.计算点在线的哪一侧?矢量 chash原创 2014-04-17 20:41:33 · 1903 阅读 · 0 评论 -
排序算法分析
排序简介 排序是数据处理中经常使用的一种重要运算,在计算机及其应用系统中,花费在排序上的时间在系统运行时间中占有很大比重;并且排序本身对推动算法分析的发展也起很大作用。目前已有上百种排序方法,但尚未有一个最理想的尽如人意的方法,本章介绍常用的如下排序方法,并对它们进行分析和比较。1、插入排序(直接插入排序、折半插入排序、希尔排序);2、交换排序(起泡排序、快速排序);3、选择排转载 2013-07-29 16:45:13 · 582 阅读 · 0 评论 -
建大顶堆和小顶堆及堆排序算法
/************************************************************ Function: 堆排序 Author: glq2000[glq2000@126.com] Date: Tues, 2010-8-3 Note: 写堆排序函数要注意两个问题转载 2013-04-14 15:15:56 · 5630 阅读 · 1 评论 -
最短路径算法-Dijkstra算法
Dijkstra(迪杰斯特拉)算法是典型的最短路径路由算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法能得出最短路径的最优解,但由于它遍历计算的节点很多,所以效率低。Dijkstra算法是很有代表性的最短路算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等。其基本思想是,设置顶点集合S转载 2013-04-12 11:48:18 · 1064 阅读 · 0 评论 -
道格拉斯-普克 Douglas-Peuker抽稀算法
道格拉斯-普克抽稀算法,是用来对大量冗余的图形数据点进行压缩以提取必要的数据点。该算法实现抽稀的过程是:1)对曲线的首末点虚连一条直线,求曲线上所有点与直线的距离,并找出最大距离值dmax,用dmax与事先给定的阈值D相比: 2)若dmax 若dmax≥D,保留dmax对应的坐标点,并以该点为界,把曲线分为两部分,对这两部分重复使用该方法,即重复1),2)步,直到所有dmax均原创 2013-03-01 15:55:27 · 7035 阅读 · 1 评论 -
图的深度优先和广度优先遍历
有两种常用的方法可用来搜索图:即深度优先搜索和广度优先搜索。它们最终都会到达所有连通的顶点。深度优先搜索通过栈来实现,而广度优先搜索通过队列来实现。 深度优先搜索:下面图中的数字显示了深度优先搜索顶点被访问的顺序。为了实现深度优先搜索,首先选择一个起始顶点并需要遵守三个规则:(1) 如果可能,访问一个邻接的未访问顶点,标记它,并把它放入栈中。(2) 当不能执行规则1时转载 2012-11-25 14:16:21 · 788 阅读 · 0 评论 -
倒排索引
1.概述 在关系数据库系统里,索引是检索数据最有效率的方式,。但对于搜索引起,他它并不能满足其特殊要求: 1)海量数据:搜索引擎面对的是海量数据,像Google,百度这样大型的商业搜索引擎索引都是亿级甚至几千的网页数量 ,面对如此海量数据 ,使得数据库系统很难有效的管理。 2)数据操作简单:搜索引擎使用的数据操作简单 ,一般而言转载 2012-09-21 16:16:57 · 856 阅读 · 0 评论 -
工作积累之ZIP的压缩原理与实现
无损数据压缩是一件奇妙的事情,想一想,一串任意的数据能够根据一定的规则转换成只有原来 1/2 - 1/5 长度的数据,并且能够按照相应的规则还原到原来的样子,听起来真是很酷。半 年前,苦熬过初学 vc 时那段艰难的学习曲线的我,对 MFC、SDK 开始失望和不满,这些虽然不算易学,但和 DHTML 没有实质上的区别,都是调用微软提供的各种各样的函数,不需要你自己去创建一个窗口,多线程编程时转载 2012-06-01 11:32:51 · 1213 阅读 · 0 评论 -
算法研究之概率
概率有相加和相乘两种:乘法规则:一个过程分几步走,后面的步骤只有在前面的步骤完成后才能进行,则完成整个过程的概率是前面各步骤的概率之积。可以想象一下,中间的某个过程完成的概率为0的话,最终的步骤无法完成,概率肯定是0了,这当然是乘法关系,加法运算就不会得到0的结果。加法规则:可以采用多个方法中的其中一个就可以完成某个过程(任意一个方法就可以完成),那么完成这个过程的概率是这些方法的概率之和转载 2012-03-21 16:31:31 · 583 阅读 · 0 评论 -
算法研究之位运算
1、使用位运算乘法。把一个乘数变为2进制后,使用位运算完成乘数的乘法。/* * 输入:正整数k 和 正整数m * 输出:k*m */ __int64 km(__int64 k, __int64 m){ __int64 x = k; int w = (int)floor(log(m) / log(2)) -1; __int64 e = 1 fo转载 2012-03-20 18:57:26 · 2492 阅读 · 0 评论 -
算法研究之KMP算法详解
KMP算法是拿来处理字符串匹配的。换句话说,给你两个字符串,你需要回答,B串是否是A串的子串(A串是否包含B串)。比如,字符串A="I'm matrix67",字符串B="matrix",我们就说B是A的子串。你可以委婉地问你的MM:“假如你要向你喜欢的人表白的话,我的名字是你的告白语中的子串吗?” 解决这类问题,通常我们的方法是枚举从A串的什么位置起开始与B匹配,然后验证是否匹配。假如转载 2012-03-20 10:43:39 · 441 阅读 · 0 评论 -
算法研究之CPU占用率曲线
1.CPU占用率曲线为正弦函数曲线: 第一步:想让CPU占用率曲线为某函数的曲线,首先是理解函数曲线与CPU占用率曲线的关系,函数y = f(x), 对应到CPU占用率曲线中来就是:x为流逝的时间,y为CPU占用率;我们知道CPU的占用率是0%-100%,也就是说函数的值域范围是[0-1],但是正弦函数的值域是[-1,1],所以正弦函数需要做个变换才能把值域变成[0,1],经过y = 1/2原创 2012-04-05 11:17:46 · 1128 阅读 · 0 评论 -
工作积累之折线等分算法
废话不多说,直接上算法:折线等分算法:share = 20; //要等分的份数;length = line.GetLength(); //线的长度;num = line.GetPointsNum(); //线上的形状点个数;step = length/share; //步长长度;cur_span = step;x1 =原创 2012-03-16 14:05:29 · 2053 阅读 · 0 评论 -
工作积累之递归方法的实质和普遍意义
从方法论意义上说,递归方法是一种从简单到复杂、从低级到高级的可连续操作的解决问题的方法。它的每一步骤都是能行可操作的,各步骤之间是连续转换的。递归定义是用简单的、自明的要素描述、构造、说明复杂的整体。递归方法是通过解决简单的问题来解决复杂的问题。在人们的思维过程中,普遍存在着递归机制。递归方法是一种处理问题的精致技巧、解决问题的有效方法。从哲学方法论角度研究递归方法,具有重要的意义。 递转载 2012-03-15 10:29:01 · 850 阅读 · 0 评论 -
算法研究之排列组合公式
原创 2012-03-27 09:43:37 · 948 阅读 · 0 评论 -
判断某一点在直线的左右侧的算法
判断 某一点在直线左右侧左右方向是相对前进方向的,只要指定了前进方向就可以知道左右(比如指定前进方向是从直线的起点到终点).判断点在直线的左侧还是右侧是计算几何里面的一个最基本算法.使用矢量来判断. 定义:平面上的三点P1(x1,y1),P2(x2,y2),P3(x3,y3)的面积量:S(P1,P2,P3)=|y1 y2 y3|= (x1-x3)*(y2-y3)-(y1-y转载 2014-10-30 19:12:32 · 1902 阅读 · 0 评论