演算法導論 學習筆記 第一章 演算法在計算中的作用

2021-10-21 06:20:19 字數 1126 閱讀 3657

非形式地說,演算法是任何良定義(指無歧義的、不會導致矛盾的、符合其應滿足的所有要求的定義)的計算過程,該過程取某個值或值的集合作為輸入並產生某個值或值的集合作為輸出。演算法就是把輸入轉換成輸出的計算步驟的乙個序列。

我們也可以把演算法看成是用於求解良說明的計算問題的工具,問題陳述說明了期望的輸入/輸出關係,演算法則描述乙個特定的計算過程來實現該輸入/輸出關係。

關於排序問題的定義:

輸入:n個數的乙個序列。

輸出:輸入序列的乙個排列,滿足a1』<=a2』<=…<=an』。

例如給定輸入序列<31, 41, 59, 26, 41, 58>,排序演算法將返回序列<26, 31, 41, 41, 58, 59>作為輸出。這樣的輸入序列稱為排序問題的乙個例項,問題例項由計算該問題解所必需的(滿足問題陳述中強加的各種約束的)輸入組成。

對於排序演算法,哪個更好依賴於以下因素:將被排序的項數,這些項已被稍微排序的程度,關於項值的可能限制,計算機的體系結構,使用的儲存裝置種類(主存、磁碟、磁帶)。

若對每個輸入例項,演算法都以正確的輸出停機,則稱該演算法是正確的,並稱正確的演算法解決了給定的計算問題。不正確的演算法對於某些輸入例項可能根本不停機,也可能以不正確的回答停機,不正確的方法只要其錯誤率可控有時可能是有用的。

演算法可以用英語說明,也可以說明成電腦程式甚至說明成硬體設計,唯一的要求是這個說明必須精確描述所要遵循的計算過程。

階乘函式比指數函式增長還快。

n個元素的集合有2n個子集(包括空集和它自己),因為對於每個元素,它只有在和不在集合中兩種情況。

資料結構是一種儲存和組織資料的方式,旨在便於訪問和修改。沒有單一的資料結構對所有用途均有效,重要的是知道幾種資料結構的優勢和侷限。

為從多核計算機獲得最佳效能,設計演算法時必須考慮並行性。

為求解相同問題設計的不同演算法在效率方面常有顯著差異,這些差異可能比由於硬體和軟體造成的差別要重要得多。如兩種排序演算法:第乙個是插入排序,為排序n項,該演算法所花時間大致等於c1n2,其中c1是乙個不依賴於n的常數;第二個是歸併排序,為排序n個項,該演算法所花時間大致等於c2nlgn,其中lgn代表以2為底n的對數且c2是乙個不依賴於n的常數。與歸併排序相比,插入排序通常具有乙個較小的常數因子(c1上面的例子表明我們應該像計算機硬體一樣把演算法看成是一種技術,整個系統的效能不但依賴於選擇快速的硬體而且還依賴於選擇有效的演算法。

演算法導論筆記第一章

首先從別人的博文中看到乙個對演算法的最為簡單而又簡潔的理解 演算法 輸入 良好的計算過程 正確輸出。仔細想,就是這個樣子的。有時間,習慣了有問題就上網查詢,而漸漸使大腦變的遲鈍許多,遇到問題第一反應不是仔細想想而是想要去查查怎麼回事,這不是個好的習慣。要改正。下面是自己對習題的一些想法 1.1 1 ...

演算法導論筆記第一章

首先從別人的博文中看到乙個對演算法的最為簡單而又簡潔的理解 演算法 輸入 良好的計算過程 正確輸出。仔細想,就是這個樣子的。有時間,習慣了有問題就上網查詢,而漸漸使大腦變的遲鈍許多,遇到問題第一反應不是仔細想想而是想要去查查怎麼回事,這不是個好的習慣。要改正。下面是自己對習題的一些想法 1.1 1 ...

演算法導論第一章

第一章 演算法在計算中的作用 1.1演算法 非形式地說,演算法就是任何良定義的計算過程,該過程取某個值或值的集合作為輸入並產生某個值或值的集合作為輸出。這樣,演算法就是把輸入轉換成輸出的計算步驟的乙個序列。若對每個輸入例項演算法都以正確的輸出停機,則稱該演算法是正確的,並稱正確的演算法解決了給定的計...