算法導論第一章心得

算法

算法就是任何良好定義的計算過程,該過程取某個值或者值得集合做爲輸入,而且產生某個值或者值的集合做爲輸出。即,算法就是把輸入轉換成輸出的計算步驟所構成的序列。程序員

算法是解決計算問題的工具。通常的,問題陳述說明了指望的輸入輸出關係,算法則描述一個特定的計算過程來實現這種輸入輸出關係。算法

一個常常出現的問題就是排序問題。這是由於許多程序使用排序做爲一箇中間步,排序是計算機科學的基本操做。網絡

算法必須精確的描述所要遵循的計算過程。數據結構

算法問題共有的兩個特徵:工具

  • 1. 存在許多候選解,可是絕大多數候選解都沒有解決手頭的問題。尋找一個真正的解或一個最好的解多是一個很大的挑戰。
  • 2. 存在實際應用。

數據結構

數據結構是一種存儲和組織數據的方式,目的是便於訪問和修改。不存在一種單一的數據結構對全部用途均有效,重點是要知道不一樣的數據結構的優點和劣勢。性能

NP徹底問題

  • 1. 對於NP徹底問題,是否存在有效算法是未知的。
  • 2. 若是任何一個NP徹底問題存在有效算法,則全部NP徹底問題都存在有效算法。
  • 3. 有幾個NP徹底問題相似於一些已知有效算法的問題。

NP徹底問題包括,旅行商問題等。spa

並行性

物理的限制對不斷提升的時鐘速度給出了基本的障礙:功率密度隨着時鐘速度超線性的增長,一旦時鐘速度變得足夠快,芯片將有熔化的危險。爲了每秒執行更多計算,芯片被設計成包含不止一個而是幾個處理「核」。多核計算機能夠理解爲單一芯片上的幾臺順序計算機,或者說是「並行計算機」。爲了從多核計算機得到最佳性能,設計算法時必須考慮並行性。設計

 

算法效率

歸併排序算法優於插入排序算法。通常來講,隨着問題規模的增大,歸併排序的相對優點也會增大。對象

算法的地位

應該像計算機硬件同樣把算法當作一種技術。整個系統的性能不但依賴於選擇快速的硬件,還依賴於選擇有效的算法。算法和其餘計算機技術(計算機體系結構與製造技術、GUI、面向對象系統、萬維網技術、有線無線網絡快速組網技術)同樣,正在快速發展。排序

算法是當代計算機中使用的大多數技術的核心。

在解決較大規模的問題時,算法之間的效率的差異變得特別顯著。

是否具備算法知識與技術的堅實基礎是區分真正熟練的程序員與初學者的特徵。

相關文章
相關標籤/搜索