算法知识
twinslizzy维
希望是个创造者
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
有负边路径的话用SPFA算法
SPFA算法——最短路径 粗略讲讲SPFA算法的原理,SPFA算法是1994年西安交通大学段凡丁提出是一种求单源最短路的算法算法中需要用到的主要变量int n; //表示n个点,从1到n标号int s,t; //s为源点,t为终点int d[N]; //d[i]表示源点s到点i的最短路int p[N]; //记录路径(或者说记转载 2015-12-07 13:33:44 · 371 阅读 · 1 评论 -
凸包问题
凸包问题 凸包基础知识见:http://baike.baidu.com/view/707209.htm 或者,参考《国际大学生程序设计竞赛例题解 》(一)计算几何部分和LRJ的黑书。研究了两天的凸包问题,也在POJ上找了几道题目练习了一下,这里给出自己写的Graham扫描法求凸包的模板\源代码:/*---------------------转载 2015-12-14 11:14:03 · 472 阅读 · 1 评论 -
凸包问题 —— Graham扫描法
http://blog.youkuaiyun.com/tmljs1988/article/details/7259331凸包问题 —— Graham扫描法: (1)找出点集p[]中最左下的点p1,把p1同点集中其他各点用线段连接,并计算这些线段与水平线的夹角,然后按夹角从小到大和按到p1的距离从近到远排序(夹角范围为 [0, 180)度,而且可以删除相同夹角且距离p1较近的点,保留最远点,这样可减少计转载 2015-12-14 10:45:50 · 354 阅读 · 0 评论 -
并查集算法和路径压缩
并查集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了。以前我无法解决的一类问题竟然可以用如此简单高效的方法搞定 来看一个实例,杭电1232畅通工程首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是整幅图的连通性问题。比如随意给你两个点,让你判断它们是否连通,或者问你整幅图一共有几个连通分支,也就是被分成了几个互相独立的块。转载 2015-12-10 14:59:06 · 383 阅读 · 0 评论 -
Bellman-Ford算法详讲
转载链接:http://www.wutianqi.com/?p=1912Dijkstra算法是处理单源最短路径的有效算法,但它局限于边的权值非负的情况,若图中出现权值为负的边,Dijkstra算法就会失效,求出的最短路径就可能是错的。这时候,就需要使用其他的算法来求解最短路径,Bellman-Ford算法就是其中最常用的一个。该算法由美国数学家理查德•贝尔曼(Richard Bel转载 2015-12-07 14:27:11 · 384 阅读 · 0 评论 -
Floyd、Dijkstra、Bellman-Ford、SPFA的比较
【转】Floyd、Dijkstra、Bellman-Ford、SPFA的比较原创:http://www.cnblogs.com/hibernate6/archive/2011/02/12/2522331.html几个最短路径算法的比较:Floyd 求多源、无负权边的最短路。用矩阵记录图。时效性较差,时间复杂度O(V^3)。 Floyd-Wars转载 2015-12-07 13:36:43 · 402 阅读 · 0 评论 -
最小生成树(prime算法、kruskal算法) 和 最短路径算法(floyd、dijkstra)
带权图分为有向和无向,无向图的最短路径又叫做最小生成树,有prime算法和kruskal算法;有向图的最短路径算法有dijkstra算法和floyd算法。 生成树的概念:联通图G的一个子图如果是一棵包含G的所有顶点的树,则该子图称为G的生成树 生成树是联通图的极小连通子图。所谓极小是指:若在树中任意增加一条边,则 将出现一个回路;若去掉一条边,将会使之编程非连通图。生成树各边的权 值总和称为转载 2015-12-03 09:40:05 · 383 阅读 · 0 评论 -
最短路径—Dijkstra算法和Floyd算法
Dijkstra算法1.定义概览Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是很有代表性的最短路径算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等。注意该算法要求图中不存在负权边。问题描述:在无向图 G=(V,E) 中,假转载 2015-12-02 15:54:58 · 361 阅读 · 0 评论 -
快速排序 需熟练使用
C语言排序算法:[1]教你理解快速排序。|浏览:2205|更新:2014-09-22 10:46123456分步阅读百度经验:jingyan.baidu.com快速排序是经常用到的一种排序算法,它的原理是什么?如何实现,坐标X为您一一解答。百度经验:jingyan.baidu.c转载 2015-11-26 13:20:51 · 374 阅读 · 0 评论 -
很特别的一个动态规划入门教程
很特别的一个动态规划入门教程今天在网上看到一个讲动态规划的文章,是以01背包为例的,这文章和书上的讲解非常不一样,令我眼前一亮,于是转载一下下~~~(说明一下,本人非常痛恨教材公式定理漫天飞,实际的讲解却讲得非常枯涩难懂,这种中国式的教育已经延绵了几千年了,现在中国的教材还是这个样子,讲清楚些明白些就那么难么?高中有个老师讲的一句话一直觉得很有道理:“教得会天才不是真本事,能把博士转载 2015-12-15 14:49:29 · 375 阅读 · 0 评论 -
知乎上对dp的讨论
http://www.zhihu.com/question/23995189转载 2015-12-15 15:29:42 · 585 阅读 · 0 评论 -
动态规划
http://www.cnblogs.com/chinazhangjie/archive/2010/11/16/1878400.html 动态规划 算法总体思想 动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题。但是经分解得到的子问题往往不是互相独立的。不同子问题的数目常常只有多项式量级。在用分治法求解时,有些子问题被重复计算了许多次。如果能够转载 2015-12-15 15:38:55 · 475 阅读 · 0 评论 -
坐在马桶上看算法:只有五行的Floyd最短路算法
此算法由Robert W. Floyd(罗伯特·弗洛伊德)于1962年发表在“Communications of the ACM”上。同年Stephen Warshall(史蒂芬·沃舍尔)也独立发表了这个算法。Robert W.Floyd这个牛人是朵奇葩,他原本在芝加哥大学读的文学,但是因为当时美国经济不太景气,找工作比较困难,无奈之下到西屋电气公司当了一名计算机操作员,在IBM650机房值夜班,转载 2016-09-28 14:26:35 · 430 阅读 · 0 评论 -
快速幂或者矩阵快速幂
原文 http://blog.youkuaiyun.com/hikean/article/details/9749391快速幂或者矩阵快速幂在算指数时是很高效的,他的基本原理是二进制,下面的A可以是一个数也可以是一个矩阵(本文特指方阵),若是数就是快速幂算法,若是矩阵就是矩阵快速幂算法,用c++只需把矩阵设成一个类就可以,然后重载一下乘法就可以,注意为矩阵是则ANS=1,应该是ANS=E,E是单位矩转载 2016-05-20 15:00:32 · 377 阅读 · 0 评论 -
矩阵的快速幂
原博客地址:http://blog.youkuaiyun.com/mark_meego/article/details/8654619讲矩阵快速幂的http://blog.youkuaiyun.com/y990041769/article/details/39694583题目描述: 给定一个n*n的矩阵,求该矩阵的k次幂,即P^k。输入: 输入包含多组测试数据。数据的第一行为一个整数T(0接下转载 2016-05-20 14:28:51 · 426 阅读 · 0 评论 -
基数排序,这个是倍增法上会用到
转载于http://blog.youkuaiyun.com/feixiaoxing/article/details/6876831基数排序是另外一种比较有特色的排序方式,它是怎么排序的呢?我们可以按照下面的一组数字做出说明:12、 104、 13、 7、 9 (1)按个位数排序是12、13、104、7、9 (2)再根据十位排序104、7、9、12、13 (3)再根据百位排转载 2016-04-18 15:43:14 · 469 阅读 · 0 评论 -
后缀数组,处理字符串问题经常会用到
http://www.nocow.cn/index.php/%E5%90%8E%E7%BC%80%E6%95%B0%E7%BB%84 后缀数组 字符串:一个字符串S是将n个字符顺次排列形成的数组,n称为S的长度,表示为len(S)。S的第i个字符表示为S[i]。 子串:字符串S的子串S[i…j],i 后缀:后缀是指从某个位置i开始到转载 2016-01-30 15:28:45 · 560 阅读 · 0 评论 -
背包问题就是陪你看花开向阳
转载原文是http://www.cnblogs.com/forever97/p/bagproblem.html 一开始接触背包问题,总会有些困扰,无法完全理解,或者说不断地忘记所谓的公式,特神说分享,可以让许多人少走弯路,我觉得颇有道理,其实我想做的,只是努力让让算法变得看上去简单易懂一些,因为我也曾是个迷惘无助,没有方向的初学者。 才疏学浅,言语颇显幼稚,如有纰漏请指教。 允转载 2016-01-05 11:25:37 · 931 阅读 · 0 评论 -
Prime算法和Kruskal算法
利姆(Prime)算法(只与顶点相关) 算法描述:普利姆算法求最小生成树时候,和边数无关,只和定点的数量相关,所以适合求稠密网的最小生成树,时间复杂度为O(n*n)。算法过程:1.将一个图的顶点分为两部分,一部分是最小生成树中的结点(A集合),另一部分是未处理的结点(B集合)。2.首先选择一个结点,将这个结点加入A中,然后,对集合A中的顶点遍历,找出转载 2015-12-23 11:44:45 · 3546 阅读 · 0 评论 -
巧妙的邻接表(数组实现)
我们介绍过图的邻接矩阵存储法,它的空间和时间复杂度都是N2,现在我来介绍另外一种存储图的方法:邻接表,这样空间和时间复杂度就都是M。对于稀疏图来说,M要远远小于N2。先上数据,如下。4 5 1 4 9 4 3 8 1 2 5 2 4 6 1 3 7 第一行两个整数n m。n表示顶点个数(顶点编号为1~n),m表示边的条数。接下来m行表示,每行有3个数x y z,表示转载 2015-12-21 15:15:58 · 380 阅读 · 0 评论 -
灵感编程:最大公约数算法解析
给定两个正整数,求其最大公约数,相信这是每一个写代码的同学绝壁遇见过的练习,当然解法也非常多,下面先给出一个没有经过任何算法处理的程序:public static int getResult(int a,int b){ int max = (a>b)?a:b; int result=0; for(int i = 1;i if(a%i == 0 && b%i转载 2016-09-28 16:57:41 · 458 阅读 · 0 评论
分享