算法基础知识

一丶基本概念

 

1.算法设计的任务:对一个具体的问题,设计一种良好的算法,获取最佳的结果.

2.什么是算法:通俗说是一种最优解,

3.程序=数据结构+算法+程序设计语言

二丶基础算法

 

1.枚举(穷举)算法思想

特点:1.依赖于计算机强大的运算能力来穷尽每一个可能的情况,从而达到解决问题的目的.

2.该算法效率不高.

3.该算法适用于一些没有规律可循的环境中.

两个必要条件:1.对于一种可能的情况,计算其结果.

2.判断结果是否满足要求,如果不满足,则执行第一步.

示例1:填数字游戏

算法描述题

X           算

----------------

题题题题题

示例2:填运算符游戏

5 5 5 5 5 5 = 5

2.递推算法思想

适用环境:适用于有明确公式的情况,通过已知条件,利用特定关系得出中间推论,逐步递推,直到得出结果.

递推核心:利用已有信息推出新的东西.

(1)顺推法(求结果)

从已知条件出发,逐步推算要解决的问题.

示例1:斐波那契额数列的推导(生小兔子模型)

(2)逆推法(求条件)

从已知结果出发,用迭代表达式逐步推算出问题开始条件.

示例1:该存多少钱

3.递归算法思想

用途:该算法可以有效解决一些问题,往往可以简化代码的编写,但若有不适合的递归,反而导致效率低.

核心:不断通过反复调用自身来求解问题.待求解问题可以分解为相同的一个子问题.

三要求:1.每循环调用一次,求解问题的规模要有所缩小.

2.相邻两次循环之间有紧密的联系,前一次要为后一次做准备

3.当子问题规模极小时,应该能直接给出答案而不再进行递归调用(即有一个结束递归的条件),否则导致堆栈溢出.

注意三点:1.递归效率低,

2.递归必须要有一个递归出口

3.递归调用过程中,系统将每一次递归调用的返回点.局部量等保存在系统的栈中.

示例1:求阶乘

示例2:数制转换

3.分治算法

核心:将一个复杂的问题分解为若干个子问题来进行求解,子问题比较大分解为更小的子问题求解.

特征:1.求解问题可以分为若干个规模较小的相同问题

2.求解问题规模分解到一定程度,就很容易求解

3.合并子问题的解可以得到求解问题的解

4.由求解问题所分解出的各个子问题是相互独立的

分治算法和递归算法同时使用,可以产生许多高效的算法.

分治算法的设计分为以下三步:1.分解2.求解3.合并

示例1:乒乓球赛日程安排

4.贪婪算法

核心:局部最优,得出最优近似解

示例1:找零钱

示例2:换零钱

5.试探算法思想(也称回朔法)

核心:系统的搜索问题解的方法,例如选手下棋

思路:从问题的某一种状态出发,搜索这种状态出发所有能达到的状态,当一条路走到尽头的时候,退后几步,接着出发.

试探算法一般采用递归形式编写

示例1:生成彩票号码组合

6.模拟算法

示例1:猜数字游戏

示例2:模拟掷骰子

原文地址:https://www.cnblogs.com/cangshuchirou/p/8780267.html

时间: 2024-08-28 21:31:56

算法基础知识的相关文章

[算法学习笔记]算法基础知识

算法基础知识 算法的五大要素 有穷性:算法必须能够在有限个步骤内完成. 确定性:算法的每一步必须有确定的定义. 输入 输出 可行性:算法的每个步骤都必须能分解为基本的可执行操作,每个步骤都必须能在有限时间内完成 循环不变式 循环中的循环不变式可以帮助我们理解算法的正确性.为了证明算法的正确,必须证明循环不变式的三个性质: 1. 初始化:循环不变式在循环开始之前是正确的. 2. 保持:循环不变式在循环的每一次迭代开始之前是正确的. 3. 终止:在循环结束时,不变式会给出一个可以对判断算法是否正确有

Levenberg-Marquardt算法基础知识

Levenberg-Marquardt算法基础知识 (2013-01-07 16:56:17) 转载▼ 什么是最优化?Levenberg-Marquardt算法是最优化算法中的一种.最优化是寻找使得函数值最小的参数向量.它的应用领域非常广泛,如:经济学.管理优化.网络分析.最优设计.机械或电子设计等等.根据求导数的方法,可分为2大类.第一类,若f具有解析函数形式,知道x后求导数速度快.第二类,使用数值差分来求导数.根据使用模型不同,分为非约束最优化.约束最优化.最小二乘最优化. 什么是Leven

算法——基础知识

算法--基础知识 1.什么是算法? 答:算法(Algorithm):一个计算过程,解决问题的方法. 程序 =  数据结构 + 算法 2.时间复杂度(三连图) 时间复杂度小结: 1.时间复杂度是用来估计算法运行时间的一个式子(单位). 2.一般来说,时间复杂度高的算法比复杂度低的算法慢 3.常见的时间复杂度(按效率排序) -  O(1)  < O(logn) <O(n) < O(nlogn) <O(n2) <(n2logn) <O(n3) 4.不常见的时间复杂度 O(n!

Algorithm 算法基础知识(未完成

基础概念不讲,记录课上关键部分 时间复杂度(Time Complexity) 算法所需要花的时间 比较时间复杂度(主要看问题的规模) 时间频度(算法执行次数)T(n)和T(n1),如果两个时间频度为等价无穷小,那么为时间复杂度相等 用O表时间复杂度上界,用Ω表示时间复杂度下界 用θ表示如果复杂度上下界相等(一般求的是O) 时间复杂度举例 基本语句:简单复杂度为O(1),100个简单语句也为O(1) 循环语句:1个循环的时间复杂度为O(n),n次循环 空间复杂度(Space Complexity)

莫队算法---基础知识介绍(转载)

莫队算法 莫队算法可用于解决一类可离线且在得到区间[l,r][l,r]的答案后,能在O(1)O(1)或O(log2n)O(log2?n)得到区间[l,r+1][l,r+1]或[l−1,r][l−1,r]的答案的问题 先看这样一个问题: 给出n个数字,m次询问,每次询问在区间[li,ri][li,ri]之间任选两个数字相等的概率是多少.(n,q<=50000)(小z的袜子) 在区间[l,r][l,r]中,这个概率是: ∑vi=1C(2,f(i))C(2,r−l+1)∑i=1vC(2,f(i))C(

算法基础知识之树、二叉树,

一.树 把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的.在计算机科学中,树(英语:tree)是一种抽象数据类型(ADT)或是实作这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合.树一般分为两类: 无序树:树中任意节点的子节点之间没有顺序关系,这种树称为无序树,也称为自由树: 有序树:树中任意节点的子节点之间有顺序关系,这种树称为有序树: 二.二叉树 在计算机科学中,二叉树(英语:Binary tree)是每个节点最多只有两个分支(不存在分支度大于2的节点

数据结构和算法一(基础知识)

一.数据结构与算法基础知识 从广义上讲,数据结构就是指一组数据的存储结构.算法就是操作数据的一组方法. 从狭义上讲,就是指某些著名的数据结构和算法,比如队列.栈.堆.二分查找.动态规划等. 数据结构和算法是相辅相成的,数据结构为算法服务,算法要作用在特定的数据结构之上. 数据结构思维导图 基础数据结构:数组.链表.栈.队列.散列表.二叉树.堆.跳表.图.Trie树 基础算法:地柜.排序.二分查找.搜索.哈希算法.贪心算法.分治算法.回溯算法.动态规划.字符串匹配算法 二.时间复杂度和空间复杂度

学习算法你必须知道的一些基础知识(文末福利)

点击标题下「异步社区」可快速关注 机器学习是解决很多文本任务的基本工具,本文自然会花不少篇幅来介绍机器学习.要想搞明白什么是机器学习,一定要知道一些概率论和信息论的基本知识,本文就简单回顾一下这些知识. 1.1 概率论 概率就是描述一个事件发生的可能性.我们生活中绝大多数事件都是不确定的,每一件事情的发生都有一定的概率(确定的事件就是其概率为100%而已).天气预报说明天有雨,那么它也只是说明天下雨的概率很大.再比如掷骰子,我把一个骰子掷出去,问某一个面朝上的概率是多少?在骰子没有做任何手脚的情

PHP面试(二):程序设计、框架基础知识、算法与数据结构、高并发解决方案类

一.程序设计 1.设计功能系统--数据表设计.数据表创建语句.连接数据库的方式.编码能力 二.框架基础知识 1.MVC框架基本原理--原理.常见框架.单一入口的工作原理.模板引擎的理解 2.常见框架的特性--PHP框架的差异和优缺点 三.算法与数据结构 1.常见算法--算法的概念.时间复杂度和空间复杂度.常见排序算法.常见查找算法 2. 3. 4. 四.高并发解决方案 1. 2. 原文地址:https://www.cnblogs.com/darklights/p/9275751.html