算法概述-Java常用算法
- 1、算法概念
- 2、算法相關概念
- 3、算法的性能評價
- 4、算法應用歸納
1、算法概念
廣泛算法定義:算法是模型分析的一組可行性的、確定的和有窮的規則。
經典算法特征:有窮性、確切性、輸入、輸出和可行性。
常用的算法包括
遞推
、遞歸
、窮舉
、貪婪
、分治
、動態規劃
和迭代
等。
2、算法相關概念
算法與公式:
公式是一種高精度的計算方法,可以認為就是一種算法;而算法并不一定是公式。
算法與程序:
算法和程序是不同的。程序設計語言是算法實現的一種形式,也就是一種工具。比較流行的程序設計語言C、C++、Java、Python 等。
算法與數據結構:
數據結構是數據的組織形式,可以用來表示特定的對象數據。數據結構是算法實現的基礎。
數據結構 + 算法 + 程序設計語言 = 程序
注意:算法是解決問題的一個抽象方法和步驟,同一算法在不同的語言中具有不同的實現形式,這依賴數據結構和程序設計語言的語法結構。
3、算法的性能評價
- **時間復雜度:**通常所說的算法執行所需要耗費的時間,時間越短,算法越好。
- **空間復雜度:**算法程序在計算機中執行所需要消耗的存儲空間。
4、算法應用歸納
1、并行算法
并行算法就是用多臺處理機 聯合求解問題的方法和步驟,其執行過程是將給定的問題首先分解成若干個盡量相互獨立的子問 題,然后使用多臺計算機同時求解它,從而最終求得原問題的解。
劃分法
、分治法
、平衡樹法
、倍增法/指針跳躍法
、流水線法
、破對稱法
等都是常用的設計并行算法的方法
2、遺傳與進化算法
遺傳算法(Genetic Algorithm,GA)和進化算法(Evolutionary Algorithms,EA)是科學交叉的結果。遺傳與進化算法根據生物的遺傳、進化和變異的特性,通過模擬自然演化的方法來得到最優解。
遺傳算法(Genetic Algorithm,GA)最早是由美國的 John holland于20世紀70年代提出,該算法是根據大自然中生物體進化規律而設計提出的。是模擬達爾文生物進化論的自然選擇和遺傳學機理的生物進化過程的計算模型,是一種通過模擬自然進化過程搜索最優解的方法。該算法通過數學的方式,利用計算機仿真運算,將問題的求解過程轉換成類似生物進化中的染色體基因的交叉、變異等過程。在求解較為復雜的組合優化問題時,相對一些常規的優化算法,通常能夠較快地獲得較好的優化結果。遺傳算法已被人們廣泛地應用于組合優化、機器學習、信號處理、自適應控制和人工生命等領域。
進化算法,或稱“演化算法”(evolutionary algorithms)是一個“算法簇”,盡管它有很多的變化,有不同的遺傳基因表達方式,不同的交叉和變異算子,特殊算子的引用,以及不同的再生和選擇方法,但它們產生的靈感都來自于大自然的生物進化。與傳統的基于微積分的方法和窮舉法等優化算法相比,進化計算是一種成熟的具有高魯棒性和廣泛適用性的全局優化方法,具有自組織、自適應、自學習的特性,能夠不受問題性質的限制,有效地處理傳統優化算法難以解決的復雜問題。
3、量子算法
量子物理學的發展是近代物理學領域的最大突破,其提出了一系列顛覆性的概念和方法。量子物理學發展,使其迅速與信息論和計算相結合,產生了量子信息技術和量子計算。量子計算是一種依照量子力學理論進行的新型計算,量子計算的基礎和原理使其能夠大大超越傳統的圖靈機模型的計算機。
已經發展的量子算法包括量子Shor算法、Grover搜索算法、Hogg搜索算法等