算法概述
文章目錄
- 一、什么是算法
- 二、算法的歷史
- 三、算法的基本特征
- 四、算法的要素
- 五、怎么描述算法?
- 六、與AI相關的算法
一、什么是算法
- 算法是指對解題方案的準確而完整的描述,是一系列解決問題的清晰指令。
- 算法代表著用系統的方法描述解決問題的策略機制。
- 一個算法的優劣可以用空間復雜度和時間復雜度 來衡量。
- 同一問題可用不同算法解決,而一個算法的質量優劣將影響到算法乃至程序的效率
- 算法分析的目的在于選擇合適算法和改進算法
空間復雜度:是對一個算法在運行過程中臨時占用存儲空間大小量度
時間復雜度:程序運行時基本操作所執行的次數
二、算法的歷史
算法(algorithm)一詞源于9世紀波斯數學家花拉子米。是一個由已知求得未知的運算過程,其本質在于對事物運作本質的數學抽象,是從初等數學到高等數學等內容的具體應用。在算法的發展歷史上,“well-defined procedure”是人們一直在追求的目標,但直到20世紀的英國數學家圖靈提出了“圖靈機”,這一假象的計算模型后,這一問題方才得以解決。如今,算法已從早期為滿足排序,檢索等商業需求,擴展到機器學習,加解密,解壓縮,數據分析等應用領域,“默默無聞”地滿足著人們日常的各類需求。
三、算法的基本特征
-
有窮性(Finiteness)
算法的有窮性是指算法必須能在執行有限個步驟之后終止。 -
確切性(Definiteness)
算法的每一步驟必須有確切的定義。 -
輸入項(Input)
一個算法有0個或多個輸入,以刻畫運算對象的初始情況,所謂0個輸入是指算法本身定出了初始條件。 -
輸出項(Output)
一個算法有一個或多個輸出,以反映對輸入數據加工后的結果。沒有輸出的算法是毫無意義的。 -
可行性(Effectiveness)
算法中執行的任何計算步驟都可以被分解為基本的可執行操作步,即每個計算步都可以在有限的時間內完成(也程之為有效性)
四、算法的要素
計算機可以執行的基本操作是以指令的形式描述的。一個計算機系統能執行的所有指令的集合,稱為該計算機系統的指令系統。一個計算機的基本運算和操作有如下四類:
(1)算術運算:加、減、乘、除等運算。
(2)邏輯運算:或、且、非等運算。
(3)關系運算:大于、小于、等于、不等于等運算
(4)數據傳輸:輸入、輸出、賦值等運算。
一個算法的控制結構不僅僅取決于所選用的操作,而且還與各操作之間的執行順序有關。
五、怎么描述算法?
描述算法常用的有:
- 自然語言
- 機構化流程圖
- 偽代碼
- PAD圖
其中最常用的是流程圖
偽代碼(Pseudocode):是一種算法描述語言。使用偽代碼的目的是使被描述的算法可以很容易地以任何一種編程語言(Pascal、C、Java等)實現。因此,偽代碼必須結構清晰、代碼簡單、可讀性好,并且類似自然語言。偽代碼介于自然語言與編程語言之間。
# 輸入3個數,打印輸出其中最大的數。可用如下的偽代碼表示:Begin(算法開始)輸入A,B,Cif A>B 則 A--> Max否則 B --> Maxif C > Max z則 C --> Maxprint MaxEnd (算法結束)PAD圖(problem analysis diagram, 問題分析圖):是日本日立公司于1973年提出的一種算法描述工具,主要用于描述軟件詳細設計的圖形表示工具。與方框圖一樣,PAD圖也只能描述結構化程序允許使用的幾種基本結果。自發明以來,已經得到一定程度的推廣。它用二維樹形機構的圖表示程序的控制流,以PAD圖為基礎,遵循機械的走樹(Tree Walk)規則就能方便地編寫出程序,用這種圖轉換為程序代碼比較容易。
六、與AI相關的算法
- 遞推法
遞推是按照一定的規律來計算序列中的每個項,通常是通過計算機前面的一些項來得出序列中的指定項的值。 - 遞歸法
程序調用自身的編程技巧稱為遞歸(recursion) - 窮舉法
窮舉法,又稱為暴力破解法,其基本思路是:對于要解決的問題,列舉出它的所有可能的情況,逐個判斷有哪些是符合問題所要求的的條件,從而得到問題的解。它也常用于對密碼的破譯,即將密碼進行逐個推算直到找出真正的密碼為止。
總結
- 上一篇: 写英文IEEE论文的技巧
- 下一篇: Gitea在windows平台的安装和简