![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法导论
三名狂客
success without applause,diligence without reward!Becoming、Cognifying、Flowing、Screening、Accessing、Sharing、Filtering、Remixing、Interacting、Tracking、Questioning、Beginning.
展开
-
快排小结
一、快排序简介快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,快速排序的核心思想----分治法。快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。该方法的基本思想是:1.先从数列中取出一个数作为基准数。2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。3.再对左右区间重复第二步,直到各区间只有一个数。二、代码实现(1)复原创 2020-05-18 11:19:32 · 410 阅读 · 0 评论 -
堆排序
一、堆排序简介堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种**选择排序,**它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。堆排序的基本思想是:将待排序序列构造成一个大顶堆 ( 一般升序采用大顶堆,降序采用小顶堆 ),此时,整个序列的最大值就是堆顶的根节点。将其与末尾元素进行交换,此时末尾就为最大值。然后将剩余n-1个元素重新构造成一个堆,这样会得到n个元素的次小值。如此反复执行,便能得到一个有序序列了。二、堆排序实现/** * * 堆排序原创 2020-05-13 15:11:11 · 375 阅读 · 0 评论 -
常用的算法
A*搜寻算法 俗称A星算法。这是一种在图形平面上,有多个节点的路径,求出最低通过成本的算法。常用于游戏中的NPC的移动计算,或线上游戏的BOT的移动计算上。该算法像Dijkstra算法一样,可以找到一条最短路径;也像BFS一样,进行启发式的搜索。 Beam Search 束搜索(beam search) 方法是解决优化问题的一种启发式方法,它是在分枝定界方法基础上发展起来的,它使用启发式方法...转载 2018-04-19 17:15:04 · 304 阅读 · 0 评论 -
最大流问题之Ford-Fulkerson
最大流问题的Ford-Fulkerson解法。可是说这是一种方法,而不是算法,因为它包含具有不同运行时间的几种实现。该方法依赖于三种重要思想:残留网络,增广路径和割。本文将会详细介绍这些内容,下一篇文章我们提供一种该方法的Java实现。在介绍着三种概念之前,我们先简单介绍下Ford-Fulkerson方法的基本思想。首先需要了解的是Ford-Fulkerson是一种迭代的方法。开始时,对所有的转载 2017-01-03 13:36:17 · 815 阅读 · 0 评论 -
快速排序详解
快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。该方法的基本思想是:1.先从数列中取出一个数作为基准数。2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。3.再对左右区间重复第二步,直到各区间只有一个数。 虽然快速排序称为分治法,但分转载 2017-01-03 10:24:33 · 448 阅读 · 0 评论 -
NP完全性理论与近似算法
一.NP完全性理论(1)在图灵机计算模型中,移动函数δ是单值的,即对于Q´Tk中的每一个值,当它属于δ的定义域时Q´(T´{L,R,S})k中只有唯一的值与之对应,称这种图灵机为确定性图灵机,简记为DTM(Deterministic Turing Machine)。 (2)非确定性图灵机(NDTM ):一个k带的非确定性图灵机M是一个7元组:(Q,T,I,δ原创 2017-01-02 18:44:07 · 1711 阅读 · 0 评论 -
线性规划与网络流
一.线性规划问题及其表示例如:二.最大网络流问题 (1) 网络 G是一个简单有向图,G=(V,E),V={1,2,…,n}。 在V中指定一个顶点s,称为源和另一个顶点t,称为汇。 有向图G的每一条边(v,w)∈E,对应有一个值cap(v,w)≥0,称为边的容量。 这样的有向图G称作一个网络。(2) 网络流原创 2017-01-02 18:19:04 · 3908 阅读 · 0 评论 -
随机化算法
一.随机化算法分类 随机算法通常分成4类: 数值随机算法(Numericalrandomized algorithm): 随机算法有时也称概率算法(probabilistic algorithm),但也有人对两者这样区分 如果取得结果的途径是随机的,则称为随机算法,如拉斯维加斯算法; 如果取得的解是否正确存在随机性,称为概率算法,如蒙特卡罗算法。 蒙特原创 2017-01-02 17:37:18 · 1830 阅读 · 0 评论 -
分枝限界法
一.分支限界法与回溯法对比 (1)求解目标:回溯法的求解目标是找出解空间树中满足约束条件的所有解,而分支限界法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件的解中找出在某种意义下的最优解。 (2)搜索方式的不同:回溯法以深度优先的方式搜索解空间树,而分支限界法则以广度优先或以最小耗费优先的方式搜索解空间树。二.分支限界法的基本思想 分支限界法常以原创 2017-01-02 16:44:10 · 1377 阅读 · 0 评论 -
回溯法
一.定义 回溯法的基本做法是搜索,或是一种组织得井井有条的,能避免不必要搜索的穷举式搜索法,这种方法适用于解一些组合数相当大的问题。回溯法在问题的解空间树中,按深度优先策略,从根结点出发搜索解空间树。算法搜索至解空间树的任意一点时,先判断该结点是否包含问题的解。如果肯定不包含,则跳过对该结点为根的子树的搜索,逐层向其祖先结点回溯;否则,进入该子树,继续按深度优先策略搜索。原创 2017-01-02 16:36:25 · 1721 阅读 · 0 评论 -
贪心算法
一.贪心算法的概念 顾名思义,贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。当然,希望贪心算法得到的最终结果也是整体最优的。虽然贪心算法不能对所有问题都得到整体最优解,但对许多问题它能产生整体最优解。如单源最短路经问题,最小生成树问题等。在一些情况下,即使贪心算法不能得到整体最优解,其最终结果却是最优解的很好近似原创 2017-01-02 16:13:54 · 499 阅读 · 0 评论 -
动态规划
一.动态规划的基本思想动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题。但是经分解得到的子问题往往不是互相独立的。不同子问题的数目常常只有多项式量级。在用分治法求解时,有些子问题被重复计算了许多次。动态规划能够保存已解决的子问题的答案,而在需要时再找出已求得的答案,就可以避免大量重复计算,从而得到多项式时间算法。原创 2017-01-02 15:48:54 · 398 阅读 · 0 评论 -
递归与分治策略
一.分治法和递归的关系分治法的设计思想是,将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。直接或间接地调用自身的算法称为递归算法。用函数自身给出定义的函数称为递归函数。由分治法产生的子问题往往是原问题的较小模式,这就为使用递归技术提供了方便。在这种情况下,反复应用分治手段,可以使子问题与原问题类型一致而其规模却不断缩小,最终使子问题原创 2017-01-02 15:37:48 · 1191 阅读 · 2 评论 -
算法复杂性分析
一.算法:是指解决问题的一种方法或一个过程。•算法是若干指令的有穷序列,满足性质:•(1)输入:有外部提供的量作为算法的输入。•(2)输出:算法产生至少一个量作为输出。•(3)确定性:组成算法的每条指令是清晰,无歧义的。•(4)有限性:算法中每条指令的执行次数是有限的,执行每条指令 的原创 2017-01-02 15:18:43 · 912 阅读 · 0 评论 -
矩阵乘法
编程实现矩阵乘法,并考虑当矩阵规模较大时的优化方法:(1)一般的解法: //矩阵乘法,3个for循环搞定 void Mul(int** matrixA, int** matrixB, int** matrixC) { for(int i = 0; i < n; ++i) { for(int j = 0; j < n; ++翻译 2016-12-07 22:40:30 · 1697 阅读 · 0 评论 -
大O符号/大Ω符号/大Θ符号/小o符号/小w符号等各种算法复杂度记法含义
大O符号(英语:Big O notation)是用于描述函数渐近行为的数学符号。更确切地说,它是用另一个(通常更简单的)函数来描述一个函数数量级的渐近上界。大Ω符号的定义与大O符号的定义类似,但主要区别是,大O符号表示函数在增长到一定程度时总小于一个特定函数的常数倍,大Ω符号则表示总大于,来描述一个函数数量级的渐近下界。大Θ符号是大O符号和大Ω符翻译 2016-12-02 00:55:20 · 26459 阅读 · 0 评论 -
算法导论 单源最短路径
本章中有三个最短路径算法:1、Bellman-Ford算法:解决的是一般情况下的单源最短路径问题,可适用于边的权重为负值,且有环路的情况,算法返回一个bool值,表明是否存在一个从源结点可以到达的权重为负值的环路。如果存在,则返回false,否则,可以求出最短路径和这条路径的权重。2、Dag_Shortest_Paths: 解决有向无环图的单源最短路径问题,算法根据结点的拓扑排序对带权翻译 2016-12-10 16:21:26 · 1139 阅读 · 0 评论 -
算法导论 所有节点对的最短路径
本章主要讲述:1.Floyd-Warshall算法:求解任意两点间的最短距离,时间复杂度为O(n^3)。 (1)使用条件&范围:通常可以在任何图中使用,包括有向图、带负权边的图。 (2)弗洛伊德(Floyd)算法过程: 1、用D[v][w]记录每一对顶点的最短距离。 2、依次扫描每一个点,并以其为基点再遍历所有每一对顶点D[][]的值,看看是否翻译 2016-12-10 16:40:40 · 3253 阅读 · 0 评论