1. 数值计算的稳定性问题是什么含义(递推算法)
对一个问题的求解可以有多种不同的方法,难易迥异。在计算机科学中往往把要解决的问题转化为数学模型来加以解决。由于机器字长的限制和存贮空间
的有限性,不同的模型由于误差的存在,往往使计算的结果存在很大的差异。若执行的结果与精确解之间的误差很大的话,势必会影响与之相关的数据的精确度。这
就引出了我们的问题:数值稳定性。
定义1对于一个已经存在的算法,若输入数据的误差在计算过程中迅速增长而得不到控制,则称该算法是不稳定的,否则是数值稳定的。
2. 遗传算法出来的结果不稳定
有两种可能:1.有多种组合等于X,因此组合有多种
2.你的遗传算法容易局部收敛
对于2解决办法:增加判断,当种群最优染色体一直不变持续N代,重新初始化一个种群,或者往种群中注入新的随机染色体来跳出局部收敛区域。
对补充的回答:
遗传算法本身就是一种智能寻优的随机算法,搜索过程中存在随机性,在具有多个最优解的情况下,很难每次都寻优到同一组参数组合,因为每次的搜索路径是不同的。
如果楼主真是寻求最后结果一样的效果的话,可以先得到一组最优组合数字集合S,按从小到大排列处理后变为S'(n1,n2...ni)
然后搜索过程中的某组数字集合Q的目标函数
既满足:
相加的和最接近X,
还要满足:
1.数字个数=i
2.临时将Q从小达到排列,各个位置上的元素和S'的元素最接近
这样可能会增加很多计算时间,但理论上是可以每次都得到S
3. 什么是算法的稳定性
算法的稳定性一般是指复杂度的稳定性。
一般的算法都具有稳定性的,也就是说有固定的多项式时间。而一般的np问题和np完全问题有可能没有多项式的复杂度,所以可能有些问题很快,有些问题慢。
4. 数据结构的排序算法中,哪些排序是稳定的,哪些排序是不稳定的
快速排序、希尔排序、堆排序、直接选择排序不是稳定的排序算法。
基数排序、冒泡排序、直接插入排序、折半插入排序、归并排序是稳定的排序算法。
5. 数值分析里的算法稳定性和收敛性的区别是什么
算法的稳定性:稳定性是指算法对于计算过程中的误差(舍入误差、截断误差等)不敏感,即稳定的算法能得到原问题的相邻问题的精确解.
算法的收敛性:收敛这一概念和稳定性不是一个层次的,它只在部分算法中出现,比如迭代求解.迭代中的收敛指经过有限步骤的迭代可以得到一个稳定的解(继续迭代变化不大,小于机器精度,浮点数系统认为不变).但是这个解是不是原问题的解,要看问题的病态性了:如果问题是病态的,则很有可能不是准确的解.
6. 数据结构的排序算法中,哪些排序是稳定的,哪些排序是不稳定的
一、稳定排序算法
1、冒泡排序
2、鸡尾酒排序
3、插入排序
4、桶排序
5、计数排序
6、合并排序
7、基数排序
8、二叉排序树排序
二、不稳定排序算法
1、选择排序
2、希尔排序
3、组合排序
4、堆排序
5、平滑排序
6、快速排序
排序(Sorting) 是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列。
一个排序算法是稳定的,就是当有两个相等记录的关键字R和S,且在原本的列表中R出现在S之前,在排序过的列表中R也将会是在S之前。
不稳定排序算法可能会在相等的键值中改变纪录的相对次序,但是稳定排序算法从来不会如此。不稳定排序算法可以被特别地实现为稳定。
做这件事情的一个方式是人工扩充键值的比较,如此在其他方面相同键值的两个对象间之比较,就会被决定使用在原先数据次序中的条目,当作一个同分决赛。然而,要记住这种次序通常牵涉到额外的空间负担。
(6)专业研究中出现的算法稳定性问题扩展阅读:
排序算法的分类:
1、通过时间复杂度分类
计算的复杂度(最差、平均、和最好性能),依据列表(list)的大小(n)。
一般而言,好的性能是 O(nlogn),且坏的性能是 O(n^2)。对于一个排序理想的性能是 O(n)。
而仅使用一个抽象关键比较运算的排序算法总平均上总是至少需要 O(nlogn)。
2、通过空间复杂度分类
存储器使用量(空间复杂度)(以及其他电脑资源的使用)
3、通过稳定性分类
稳定的排序算法会依照相等的关键(换言之就是值)维持纪录的相对次序。