一、演算法概述
演算法是對特定問題求解步驟的一種描述,它是指令的有限序列,其中每一條指令表示乙個或多個操作。此外,乙個演算法還具有5個重要特性:有窮性、確定性、可行性、輸入、輸出。
二、演算法設計
通常求解乙個問題可能會有多種演算法可供選擇,選擇的主要標準首先是演算法的正確性和可靠性、簡單性和易理解性。其次是演算法所需要的儲存空間少和執行更快等。
演算法設計是一件非常困難的工作,通常設計乙個「好」的演算法應考慮達到以下目標:正確性、可讀性、健壯性、效率與低儲存量需求。
經常採用的演算法設計技術主要有:迭代法、窮舉搜尋法、遞推法、貪心法、回溯法、分治法和動態規劃法等。
三、演算法效率的度量
演算法執行時間需要通過依據該演算法編制的程式在計算機上執行時所消耗的時間來度量。而度量乙個程式的執行時間通常有兩種方法:事後統計法、事前分析估算法。
乙個演算法是由控制結構(順序、分支和迴圈3種)和原操作(指基本資料型別的操作)構成的,則演算法時間取決於兩者的綜合效果。
一般情況下,演算法中基本操作重複執行的次數是問題規模 n 的某個函式 f(n),演算法的時間度量記作: t(n) =o( f(n) )
它表示隨著問題規模 n 的增大,演算法執行時間的增長率和 f(n) 的增長率相同,稱作演算法的漸進時間複雜度(asymptotic time complexity),簡稱時間複雜度。
四、演算法的儲存空間需求
類似於演算法的時間複雜度,演算法所需的儲存空間用空間複雜度(space complexity)來度量,記作 s(n) = o( f(n) ) 其中n為問題規模。乙個上機執行的程式除了需要儲存空間來寄存本身所用指令、常數、變數和輸入資料外,也需要一些對資料進行操作的工作單元和儲存一些為實現計算所需資訊的輔助空間。若輸入資料所佔空間只取決於問題本身,和演算法無關,則只需要分析除輸入和程式之外的額外空間,否則應同時考慮輸入本身所需空間(和輸入資料的表示形式有關)。
機器學習常見演算法概述
原創 2016 08 22 14 34 28 雪倫 閱讀數 4813 更多分類專欄 機器學習 機器學習 機器學習 machine learning,ml 是一門多領域交叉學科,涉及概率論 統計學 逼近論 凸分析 演算法複雜度理論等多門學科。專門研究計算機怎樣模擬或實現人類的學習行為,以獲取新的知識或...
機器學習常見演算法概述 整合學習總結
整合學習 多個弱分類器組合成乙個強分類器。1.adaboost 通過改變訓練樣本的權重 初始時權重相同,每次將前乙個分類器分類錯誤的那些樣本的權重增加,表現在分類誤差率的計算上 反覆訓練多個弱分類器,最後根據這些弱分類器的分類誤差率 權重 將他們線性組合到一起。其中分類誤差率越大權重越小。等價於損失...
遺忘演算法 演算法概述
一 遺忘演算法原理 能夠從未知的事物中發現關聯 提煉規律才是真正智慧型的標誌,而遺忘正是使用智慧型生物具備這一能力的工具,也是適應變化的利器,遺忘 這一頗具負能量特徵的傢伙是如何實現發現這麼個神奇魔法的呢?讓我們從巴甫洛夫的狗說起 狗聽到了鈴聲就知道開飯了。鈴聲和開飯之間並不存在必然的聯絡,我們知道...