技術概念 演算法帝國

2021-09-11 03:49:28 字數 1639 閱讀 5994

演算法(algorithm)是指解題方****而完整的描述,是一系列解決問題的清晰指令,演算法代表著用系統的方法描述解決問題的策略機制。也就是說,能夠對一定規範的輸入,在有限時間內獲得所要求的輸出。如果乙個演算法有缺陷,或不適合於某個問題,執行這個演算法將不會解決這個問題。不同的演算法可能用不同的時間、空間或效率來完成同樣的任務。乙個演算法的優劣可以用空間複雜度與時間複雜度來衡量。

演算法中的指令描述的是乙個計算,當其執行時能從乙個初始狀態和(可能為空的)初始輸入開始,經過一系列有限而清晰定義的狀態,最終產生輸出並停止於乙個終態。乙個狀態到另乙個狀態的轉移不一定是確定的。隨機化演算法在內的一些演算法,包含了一些隨機輸入。

直白地說,演算法就是任何明確定義的計算過程,它接收一些值或集合作為輸入,並產生一些值或集合作為輸出。這樣,演算法就是將輸入轉換為輸出的一系列計算過程。

1.有窮性演算法的有窮性是指演算法必須能在執行有限個步驟之後終止,如果你設計的演算法永無休止地嘗試解決問題,那麼它是無用的。

2.確切性

演算法的每一步驟必須有確切的定義,在任何場景下指令都應當沒有歧義。

3.可行性

演算法中執行的任何計算步驟都是可以被分解為基本的可執行的操作步,即每個計算步都可以在有限時間內完成(也稱之為有效性)。

4.輸入項

乙個演算法有零個或多個輸入,以刻畫運算物件的初始情況,如零個輸入,演算法本身已定出了初始條件。

5.輸出項

乙個演算法有乙個或多個輸出,以反映對輸入資料加工後的結果。沒有輸出的演算法是毫無意義的。

同一問題可用不同演算法解決,而乙個演算法的質量優劣將影響到演算法乃至程式的效率。演算法分析的目的在於選擇合適演算法和改進演算法。演算法的優劣評價主要從時間複雜度和空間複雜度來考慮。

1.時間複雜度

演算法的時間複雜度是指執行演算法所需要的計算工作量。一般來說,計算機演算法是問題規模n 的函式f(n),演算法的時間複雜度也因此記做 t(n)=ο(f(n)) 因此,問題的規模n 越大,演算法執行的時間的增長率與f(n) 的增長率正相關,稱作漸進時間複雜度(asymptotic time complexity)。

2.空間複雜度

演算法的空間複雜度是指演算法需要消耗的記憶體空間。其計算和表示方法與時間複雜度類似,一般都用複雜度的漸近性來表示。同時間複雜度相比,空間複雜度的分析要簡單得多。

3.正確性

演算法的正確性是評價乙個演算法優劣的最重要的標準。

4.可讀性

演算法的可讀性是指乙個演算法可供人們閱讀的容易程度。

5.健壯性

健壯性是指乙個演算法對不合理資料輸入的反應能力和處理能力,也稱為容錯性。

技術概念知識

1.什麼是函式式程式設計 2.什麼是abi 3.什麼是mvc,結合cocoatouch 4.什麼是mvvm,設計view model需要考慮哪些 5.swift相對於objective c有哪些優點 6.什麼是范型,swift中在哪些地方使用范型 7.defer,guard的作用 8.swift語法...

docker技術概念

docker 容器 container 作業系統虛擬化 docker docker的優勢 1 更高效的利用系統資源 由於容器不需要進行硬體虛擬化及執行完整作業系統額外開銷,docker對系統資源利用率更高 2 更快速的啟動時間 傳統的虛擬機器技術啟動應用一般需要數分鐘,而docker容器由於直接執行...

雲技術相關概念

openstack是iaas infrastructure as a service 雲計算的基礎是虛擬化,iaas的目標就是解決計算機資源問題,通過它來啟動,分配和管理虛擬機器資源,例如大名鼎鼎的亞馬遜ec2所提供的就是iaas ec2用的是zen而非openstack 因此iaas是底層雲,使用...