关闭

最大流问题之Ford-Fulkerson

最大流问题的Ford-Fulkerson解法。可是说这是一种方法,而不是算法,因为它包含具有不同运行时间的几种实现。该方法依赖于三种重要思想:残留网络,增广路径和割。本文将会详细介绍这些内容,下一篇文章我们提供一种该方法的Java实现。 在介绍着三种概念之前,我们先简单介绍下Ford-Fulkerson方法的基本思想。首先需要了解的是Ford-Fulkerson是一种迭代的方法。开始时,对所有的...
阅读(224) 评论(0)

快速排序详解

快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。 该方法的基本思想是: 1.先从数列中取出一个数作为基准数。 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。 3.再对左右区间重复第二步,直到各区间只有一个数。   虽然快速排序称为分治法,但分...
阅读(193) 评论(0)

NP完全性理论与近似算法

一.NP完全性理论 (1)在图灵机计算模型中,移动函数δ是单值的,即对于Q´Tk中的每一个值,当它属于δ的定义域时Q´(T´{L,R,S})k中只有唯一的值与之对应,称这种图灵机为确定性图灵机,简记为DTM(Deterministic Turing Machine)。  (2)非确定性图灵机( NDTM ):一个k带的非确定性图灵机M是一个7元组:(Q,T,I,δ...
阅读(175) 评论(0)

线性规划与网络流

一.线性规划问题及其表示 例如: 二.最大网络流问题    (1) 网络   G是一个简单有向图,G=(V,E),V={1,2,…,n}。   在V中指定一个顶点s,称为源和另一个顶点t,称为汇。   有向图G的每一条边(v,w)∈E,对应有一个值cap(v,w)≥0,称为边的容量。   这样的有向图G称作一个网络。 (2) 网络流...
阅读(475) 评论(0)

随机化算法

一.随机化算法分类  随机算法通常分成4类:  数值随机算法(Numericalrandomized algorithm):  随机算法有时也称概率算法(probabilistic algorithm),但也有人对两者这样区分   如果取得结果的途径是随机的,则称为随机算法,如拉斯维加斯算法;  如果取得的解是否正确存在随机性,称为概率算法,如蒙特卡罗算法。  蒙特...
阅读(181) 评论(0)

分枝限界法

一.分支限界法与回溯法对比  (1)求解目标:回溯法的求解目标是找出解空间树中满足约束条件的所有解,而分支限界法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件的解中找出在某种意义下的最优解。   (2)搜索方式的不同:回溯法以深度优先的方式搜索解空间树,而分支限界法则以广度优先或以最小耗费优先的方式搜索解空间树。 二.分支限界法的基本思想   分支限界法常以...
阅读(136) 评论(0)

回溯法

一.定义         回溯法的基本做法是搜索,或是一种组织得井井有条的,能避免不必要搜索的穷举式搜索法,这种方法适用于解一些组合数相当大的问题。回溯法在问题的解空间树中,按深度优先策略,从根结点出发搜索解空间树。算法搜索至解空间树的任意一点时,先判断该结点是否包含问题的解。如果肯定不包含,则跳过对该结点为根的子树的搜索,逐层向其祖先结点回溯;否则,进入该子树,继续按深度优先策略搜索。...
阅读(160) 评论(0)

贪心算法

一.贪心算法的概念    顾名思义,贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。当然,希望贪心算法得到的最终结果也是整体最优的。虽然贪心算法不能对所有问题都得到整体最优解,但对许多问题它能产生整体最优解。如单源最短路经问题,最小生成树问题等。在一些情况下,即使贪心算法不能得到整体最优解,其最终结果却是最优解的很好近似...
阅读(160) 评论(0)

动态规划

一.动态规划的基本思想 动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题。但 是经分解得到的子问题往往不是互相独立的。不同子问题的数目常常只有多项式量 级。在用分治法求解时,有些子问题被重复计算了许多次。动态规划能够保存已解决 的子问题的答案,而在需要时再找出已求得的答案,就可以避免大量重复计算,从而 得到多项式时间算法。...
阅读(126) 评论(0)

递归与分治策略

一.分治法和递归的关系 分治法的设计思想是,将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。 直接或间接地调用自身的算法称为递归算法。用函数自身给出定义的函数称为递归函数。 由分治法产生的子问题往往是原问题的较小模式,这就为使用递归技术提供了方便。在这种情况下,反复应用分治手段,可以使子问题与原问题类型一致而其规模却不断缩小,最终使子问题...
阅读(198) 评论(2)

算法复杂性分析

一.算法:是指解决问题的一种方法或一个过程。 •算法是若干指令的有穷序列,满足性质 : •(1)输入:有外部提供的量作为算法的输入。 •(2)输出:算法产生至少一个量作为输出。 •(3)确定性:组成算法的每条指令是清晰,无歧义的 。 •(4)有限性:算法中每条指令的执行次数是有限的,执行每条指令   的...
阅读(155) 评论(0)

算法导论 所有节点对的最短路径

本章主要讲述: 1.Floyd-Warshall算法:求解任意两点间的最短距离,时间复杂度为O(n^3)。  (1)使用条件&范围:通常可以在任何图中使用,包括有向图、带负权边的图。  (2)弗洛伊德(Floyd)算法过程:          1、用D[v][w]记录每一对顶点的最短距离。          2、依次扫描每一个点,并以其为基点再遍历所有每一对顶点D[][]的值,看看是否...
阅读(835) 评论(0)

算法导论 单源最短路径

本章中有三个最短路径算法: 1、Bellman-Ford算法:解决的是一般情况下的单源最短路径问题,可适用于边的权重为负值,且有环路的情况,算法返回一个bool值,表明是否存在一个从源结点可以到达的权重为负值的环路。如果存在,则返回false,否则,可以求出最短路径和这条路径的权重。 2、Dag_Shortest_Paths: 解决有向无环图的单源最短路径问题,算法根据结点的拓扑排序对带权...
阅读(299) 评论(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; ++...
阅读(124) 评论(0)

大O符号/大Ω符号/大Θ符号/小o符号/小w符号等各种算法复杂度记法含义

大O符号(英语:Big O notation)是用于描述函数渐近行为的数学符号。更确切地说, 它是用另一个(通常更简单的)函数来描述一个函数数量级的渐近上界。 大Ω符号的定义与大O符号的定义类似,但主要区别是,大O符号表示函数在增长到一定程 度时总小于一个特定函数的常数倍,大Ω符号则表示总大于,来描述一个函数数量级的 渐近下界。 大Θ符号是大O符号和大Ω符...
阅读(3957) 评论(0)
    个人资料
    • 访问:166887次
    • 积分:5193
    • 等级:
    • 排名:第5679名
    • 原创:218篇
    • 转载:174篇
    • 译文:118篇
    • 评论:34条
    个人博客
    最新评论