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、通過穩定性分類
穩定的排序演算法會依照相等的關鍵(換言之就是值)維持紀錄的相對次序。