
算法设计与分析
这是我的算法设计与分析的学习过程
naumy
这个作者很懒,什么都没留下…
展开
-
数据结构和标准模板库STL
数据结构和标准模板库STL 1.栈 Stack 1.1栈 Stack的定义 栈(Stack)是一种特殊的线性表,只能在某一端插入和删除的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶。栈也称为先进后出表(LIFO)。 允许进行插入和删除操作的一端称为栈顶(Top),另一端为栈底(Bottom)。栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一个元素称为进栈(Push),删除一个栈顶元素称为出栈(Pop)。 1.2容器Stack的使用 stack<int&原创 2020-06-20 18:28:27 · 369 阅读 · 0 评论 -
算法概述
算法概述 1.引言 1.1算法的描述 算法的特征:有穷性,确定性,输入,输出,输出项,可行性 1.2算法的设计 算法设计的整个过程,可以包含对问题需求的说明,数学模型的拟制,算法的详细设计,算法的正确性验证,算法的实现,算法分析,程序测试和文档资料的编制。 算法大致分为以下三类: 1.有限的,确定性算法 2.有限的,非确定性算法 3.无限的算法 2.算法的复杂性 2.1时间复杂性 算法的时间复杂性是指执行算法所需要的时间。 常用时间复杂度之间的关系 2.2空间复杂性 算法空间复杂性是指算法需要消耗原创 2020-06-20 19:58:01 · 212 阅读 · 0 评论 -
回溯算法
回溯算法 1.回溯算法的基础理论: 回溯法是一种组织搜索的一般技术,有“通用的解题法”之称,用它可以系统地搜索一个问题的所有解或任意解。有许多问题,当需要找出它的解集或者要求回答什么解是满足某些约束条件的最佳解时,往往要使用回溯法。可以系统地搜索一个问题的所有解或任意解,既有系统性又有跳跃性。回溯法的基本做法是搜索,或是一种组织的井井有条,能避免不必要搜索的穷举式搜索法。这种以深度优先的方式系统地搜索问题的解的方法称为回溯法。 1.1问题的解空间应用回溯法求解时,需要明确定义问题的解空间。问题的解空间应原创 2020-06-20 18:10:17 · 735 阅读 · 0 评论 -
贪心算法
贪心算法 1.贪心算法的理论基础 贪心算法是一种在每一步选择中都采取在当前状态下最好或最优的选择,从而希望得到结果是最好或最优的算法。贪心算法是一种能够得到某种度量意义下的最优解的分级处理方法,通过一系列的选择来得到一个问题的解,而它所做的每一次选择都是当前状态下某中意义的最好选择,即贪心选择。即希望通过问题的局部最优解来求出整个问题的最优解,这种策略是一种很简洁的方法,对许多问题它能产生整体最优解,但不能保证总是有效的,因为它不是所有问题都能得到整体最优解,只能说其解必然是最优解的很好近似值。 利用贪原创 2020-06-20 17:22:56 · 559 阅读 · 0 评论 -
动态规划
动态规划 1.动态规划算法的基本要素 动态规划算法所具备的两个重要性质:最优子结构性质和子问题重叠性质。从一般意义上讲,问题所具备的这两个重要性质是该问题可用动态规划算法求解的基本要素。这对于在设计求解具体问题的算法时,是否选择动态规划算法具有指导意义。 1.1最优子结构 设计动态规划算法的第一步通常是刻画最优解的结构。 当问题的最优解包含子问题的最优解时,称该问题具有最优子结构性质。问题的最优子结构性质提供了该问题可用动态规划求解的重要线索。 1.2重叠子结构 可用动态规划算法求解的问题应具备的另一个原创 2020-06-20 16:39:21 · 840 阅读 · 0 评论 -
递归与分治策略
递归与分支策略 1.递归算法 1.1什么是递归: 直接或间接地调用自身的算法称为递归算法,用函数自身给出定义的函数称为递归函数。每个递归函数都要有非递归定义的初始值,如阶乘函数,斐波那契,汉诺塔。 2.分之策略 2.1什么是分支策略: 基本思想是将一个规模为n的问题分解为k个规模较小的子问题,这些子问题相互独立且与原问题相同。递归的解这些子问题,然后将各个子问题的解合并得到原问题的解。 ...原创 2020-06-19 18:49:57 · 1731 阅读 · 0 评论