一文了解計算機領域中的算法
算法(algorithm)是一個非常廣泛的概念,在不同的領域有不同的含義。在計算機領域中,算法也有其特定的含義而不是普遍意義上理解的應用級算法。
計算機科學中,算法是用于解決特定問題或執行特定任務的一個清晰、精確、有限的指令集合。算法執行后必然產生一個或多個結果,為了獲得結果,每個算法還會有零個或多個輸入內容作為前置條件。算法的清晰性是指每個步驟都沒有歧義;精確性是指每次的執行結果都一樣;有限性是算法在有限的步驟內可以執行完成。
為了清晰的表達算法,可以用兩種方式對算法進行描述:偽代碼和流程圖。偽代碼是一種結構化的文章描述,介于自然語言和符號化的編程語言之間。它與代碼十分接近,但并不考慮開發語言執行過程中的細節,例如:內存管理、數據存儲等。流程圖用幾種圖形表示不同的計算機操作,再用線條將這些操作連接到一起,形成操作的執行順序。
偽代碼和流程圖示意圖
評估算法包括時間復雜度和空間復雜度。時間復雜度指當待解決的問題規模擴大時,所消耗的時間按什么比例進行增長。最理想的復雜度是O(1),運行時間與問題規模無關是一個常數時間。但更多的時候時間會按照線性增長O(n)或指數級增長O(n^2),我們需要通過算法將時間復雜度降低到O(log n)或O(nlog n)。降低時間復雜度的最有效辦法就是增加空間復雜度,算法的設計就是不斷的平衡時間和空間復雜度。
計算機算法的最終目的是解決數據的查詢問題,為了能夠快速進行查詢就需要對數據進行“排序”等預處理,并且配合數據結構解決數據之間的組織關系和數據存儲問題。不同的數據結構決定著可采用的算法。因此衍生出,樹形存儲結構的深度優先搜索(DFS)和廣度優先搜索(BFS);數組和鏈表存儲結構的冒泡排序、快速排序和歸并排序等。
算法的含義還有很多,它們都是在不同領域用于解決特定問題的方法。作為應用類的AI算法就包括圖像識別算法、語音識別算法以及當下最火的LLM大語言模型和可以生成動畫的SORA模型。