算法-智能算法/传统算法-多种算法介绍及异同点
目录
一:描述分治法,贪心算法,动态规划算法,回溯算法,分支限界的基本思想,适用范围和应用
二:请介绍蚁群算法,遗传算法,离子群算法的思想,给出其中一个算法的计算流程图。请描述单层感知层结构,请描述BP神经网络误差反向传播原理
一:描述分治法,贪心算法,动态规划算法,回溯算法,分支限界的基本思想,适用范围和应用
1.1分治法
1.1.1 基本思想
将规模为n的问题分解为k个规模较小的子问题,使这些子问题相互独立可分别求解,再将k个子问题的解合并成原问题的解.如子问题的规模仍很大,则反复分解直到问题小到可直接求解为止.在分治法中,子问题的解法通常与原问题相同,从而导致递归过程.
1.1.2 适用范围
该问题的规模缩小到一定的程度就可以容易地解决;该问题可以分解为若干个规模较小的相同问题;分解出的子问题的解可以合并为原问题的解;分解出的各个子问题是相互独立的。
1.1.3 典型的应用问题
二分搜索,快速排序,归并排序,选择最大数/最小数,芯片测试问题
1.2 贪心算法
1.2.1 基本思想
将问题的求解过程看作一系列选择(每次选择确定一个输入值),每次选择都是当前状态下的最好选择(局部最优解).每作一次选择后,所求问题会简化为一个规模更小的子问题.从而通过每一步的最优解逐步达到整体最优解
1.2.2 适用问题
具备贪心选择和最优子结构性质的最优化问题。贪心选择是指:整体的最优解可通过一系列局部最优解达到.每次的选择可以依赖以前作出的选择,但不能依赖于后面的选择。最优子结构是指:问题的整体最优解中包含着它的子问题的最优解.
1.2.3 常见应用
背包问题,最小生成树,最短路径,作业调度等等
算法优点:求解速度快,时间复杂性有较低的阶.
算法缺点:需证明是最优解.
1.3 回溯算法
1.3.1基本思想
回溯法的基本思想是在一棵含有问题全部可能解的状态空间树上进行深度优先搜索,解为叶子结点。搜索过程中,每到达一个结点时,则判断该结点为根的子树是否含有问题的解,如果可以确定该子树中不含有问题的解,则放弃对该子树的搜索,退回到上层父结点,继续下一步深度优先搜索过程。在回溯法中,并不是先构造出整棵状态空间树,再进行搜索,而是在搜索过程,逐步构造出状态空间树,即边搜索,边构造。
求解过程可表示为在一棵解空间树作深度优先搜索.
搜索过程:搜索按深度优先策略从根开始,当搜索到任一结点时,判断该点是否满足约束条件D(剪枝函数),满足则继续向下深度优先搜索,否则跳过该结点以下的子树(剪枝), 向上逐级回溯
1.3.2适用问题
它适用于解一些组合数较大的问题。找出满足约束条件的所有解. 回溯算法适应求解组合搜索和组合优化问题
解题步骤:1).针对所给问题,定义问题的解空间 2).确定约束条件. 3).以深度优先方式搜索解空间.
1.3.3 常见应用
子集和问题,装载问题,批处理作业调度,n后问题,最大团问题,图的着色问题
1.4 分支限界法
1.4.1基本思想
在问题的边带权解空间树中进行广度优先搜索. 找一个回答结点使对应路权最小。当搜索到一个扩展结点时,一次性扩展它的所有儿子,将满足约束条件且最小耗费函数£目标函数限界的儿子,插入活动结点表中, 再从活动结点表中取下一结点同样扩展. 直到找到所需的解或活动结点表为空.
1.4.2 适用问题
适用于求解最优化问题。找出满足约束条件的一个解或者特定意义下的最优解。
1)开始求解时无法估计解是否存在。2)已知有解,对解的要求较高。3)有些问题在列出全部解以后,就可以求的最佳解。
1.4.3 常见应用
0-1背包,n皇后问题,着色问题,批处理作业调度问题,装载问题。
1.5.动态规划
1.5.1基本思想
将问题的求解过程化为多步选择,在每一步选择上,列出各种可能的结果(各子问题的可行解),舍去那些肯定不能成为最优解的局部解.最后一步得到的解必是最优解.[与贪心算法比较]都是将求解过程化为多步决策.区别是:贪心法:每采用一次贪心策略便做出唯一决策,求解过程只产生一个决策序列;求解过程自顶向下,不一定有最优解.
动态规划:求解过程多为自底向上,求解过程产生多个选择序列, 下一步的选择依赖上一步的结果..总能得到最优解
1.5.2 适用问题
具备最优子结构性质和子问题重叠性的最优化问题.
最优子结构:问题的整体的最优解中包含着它的子问题的最优解
子问题重叠性:第i+1步问题的求解中包含第i步子问题的最优解,形成递归求解.
[算法步骤]1).分析最优解的结构. 2).给出计算局部最优解值的递归关系. 3).自底向上计算局部最优解的值. 4).根据最优解的值构造最优解.
1.5.3 常见应用
0-1背包问题,图像压缩,最短路径,矩阵连乘,作业调度等等
二:请介绍蚁群算法,遗传算法,离子群算法的思想,给出其中一个算法的计算流程图。请描述单层感知层结构,请描述BP神经网络误差反向传播原理
2.1 蚁群算法
2.1.1 蚁群算法理解

通俗来讲,路径长度越短,信息素浓度越大,蚂蚁会更加倾向选择这条路径。

2.1.2 蚁群算法流程图

2.2 遗传算法
2.2.1 遗传算法引例


2.2.2 遗传算法定义(以例子说明)
遗传算法(Genetic Algorithm, GA)起源于对生物系统所进行的计算机模拟研究。它是模仿自然界生物进化机制发展起来的随机全局搜索和优化方法,借鉴了达尔文的进化论和孟德尔的遗传学说。其本质是一种高效、并行、全局搜索的方法,能在搜索过程中自动获取和积累有关搜索空间的知识,并自适应地控制搜索过程以求得最佳解

2.2.3 遗传算法流程图

2.3 粒子群算法
2.3.1 粒子群算法定义


2.3.2 粒子群算法流程图

2.4 单层感知层
2.4.1 单层感知器介绍
受到生物神经网络的启发,计算机学家Frank Rosenblatt在20世纪60年代提出了一种模拟生物神经网络的的人工神经网络结构,称为感知器(Perceptron)

图中x1,x2,x3为输入信号,类似于生物神经网络中的树突。w1,w2,w3分别为x1,x2,x3的权值,它可以调节输入信号的值的大小,让输入信号变大(w>0),不变(w=0)或者减小(w<0)。可以理解为生物神经网络中的输入阻碍,树突的信号不一定是100%传递到细胞核的,可能某些树突的信号有80%传递到细胞核,某些树突的信号有50%传递到细胞核,某些树突的信号被完全阻碍。
公式

表示细胞的输入信号在细胞核的位置进行汇总,然后再加上该细胞本身自带的信号b,b一般称为偏置值(Bias)。
f(x)称为激活函数,可以理解为信号在轴突上进行的变化。在单层感知器中使用的激活函数是sign(x)激活函数。该函数的特点是当x>0时,输出值为1;当x=0时,输出值为0,;当x<0时,输出值为-1。sign(x)函数图像如图

y就是

为单层感知器的输出结果。

2.4.2 单层感知器与多层感知器
单层感知器(baiSingle Layer Perceptron)是最简单的神经网络。它包含输入层和输出层,而输入层和输出层是直接相连的。 多层感知器(Multi-Layer Perceptrons),包含多层计算。相对于单层感知器,输出端从一个变到了多个;输入端和输出端之间也不光只有一层,现在又两层:输出层和隐藏层

2.5 反向传播原理
2.5.1 反向传播定义
反向传播(英语:Backpropagation,缩写为BP)是“误差反向传播”的简称,是一种与最优化方法(如梯度下降法)结合使用的,用来训练人工神经网络的常见方法。该方法计算对网络中所有权重计算损失函数的梯度。这个梯度会反馈给最优化方法,用来更新权值以最小化损失函数。 在神经网络上执行梯度下降法的主要算法。该算法会先按前向传播方式计算(并缓存)每个节点的输出值,然后再按反向传播遍历图的方式计算损失函数值相对于每个参数的偏导数。
2.5.2 反向传播原理
反向传播算法主要由两个环节(激励传播、权重更新)反复循环迭代,直到网络的对输入的响应达到预定的目标范围为止。BP算法的学习过程由正向传播过程和反向传播过程组成。在正向传播过程中,输入信息通过输入层经隐含层,逐层处理并传向输出层。如果在输出层得不到期望的输出值,则取输出与期望的误差的平方和作为目标函数,转入反向传播,逐层求出目标函数对各神经元权值的偏导数,构成目标函数对权值向量的梯量,作为修改权值的依据,网络的学习在权值修改过程中完成。误差达到所期望值时,网络学习结束。
(1)激励传播。每次迭代中的传播环节包含两步:
- (前向传播阶段)将训练输入送入网络以获得激励响应;
- (反向传播阶段)将激励响应同训练输入对应的目标输出求差,从而获得隐层和输出层的响应误差。
(2)权重更新。对于每个突触上的权重,按照以下步骤进行更新:
- 将输入激励和响应误差相乘,从而获得权重的梯度;
- 将这个梯度乘上一个比例并取反后加到权重上。
- 这个比例将会影响到训练过程的速度和效果,因此称为“学习率”或“步长”。梯度的方向指明了误差扩大的方向,因此在更新权重的时候需要对其取反,从而减小权重引起的误差。
3.贪心,递归,分治,动态规划等传统算法异同点比较
3.1递推和递归异同点
递推: 从已知到未知,从小到达(比如每天胖一斤,一个月后就胖了30斤)
递归: 从未知到已知,从大到小,再从小到大(比如,某XX相当美国总统,那么美国总统需要什么呢,需要名校毕业,那么怎么才能进入名校呢,需要现在努力学习,那么怎么努力学习呢,需要卸载王者农药)(即一步步分解一个大目标,然后通过完成一个个小目标,去完成一个大目标)
程序调用自身的编程技巧称为递归。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。 递推算法是一种用若干步可重复的简运算(规律)来描述复杂问题的方法。递推是序列计算机中的一种常用算法。它是按照一定的规律来计算序列中的每个项,通常是通过计算机前面的一些项来得出序列中的指定象的值。 迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值。
3.2 递归和分治异同点
递归是一种编程技巧,一种解决问题的思维方式。分治是手段。分治法就是把1个分为多个,递归法就是把多个归一的解决问题方法
3.3 贪心和动态规划异同点
与分治法不同的是,适合于用动态规划法求解的问题,经分解得到的子问题往往不是相互独立的。
3.4 分支限界和动态规划异同点
分支限界法类似于回溯法,也是一种在问题的解空间树T上搜索问题解的算法。但在一般情况下,分支限界法与回溯法的求解目标不同。回溯法的求解目标是找出T中满足约束条件的所有解,而分支限界法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件的解中找出使某一目标函数值达到极大或极小的解,即在某种意义下的最优解。 由于求解目标不同,导致分支限界法与回溯法在解空间树T上的搜索方式也不相同。回溯法以深度优先的方式搜索解空间树T,而分支限界法则以广度优先或以最小耗费优先的方式搜索解空间树T
4.补充几个基础方法(典型例题)
4.1 使用主方法求解递归式的渐进的界

举例:下面例题使用上述公式:选A

4.2 利用数学公式计算

解:(1)while(n>=1): 说明一共要执行n次for循环,即执行(n= 2^t)次for循环;
(2)for第一次,最开始n为2^t,最后一次是1次(此时n为1)
(3)理解上面的(1)和(2)。n= 2^t,可以看到t的取值为0到t,即一共有(t+1)次,我们可以看到加法的执行次数相当于是首项为1,公比为2,项的数量为(t+1)的公比数量。
(4)Sn = 2^(t+1)-1 = 2n-1.
五 参考文章

本文详细介绍了分治法、贪心算法、动态规划、回溯法和分支限界的基本思想、适用范围及经典应用。同时,探讨了蚁群算法、遗传算法、离子群算法的原理,以及单层感知层结构和BP神经网络的误差反向传播原理。通过对这些算法的比较,阐述了它们之间的异同点,以帮助读者深入理解各种算法的特性及其在实际问题中的应用。

1万+

被折叠的 条评论
为什么被折叠?



