《算法导论3rd第一章》算法在计算中的作用
前言
什么是算法?為什么算法值得研究?算法的作用是什么
算法
算法就是任何良定義的計算過程,該過程取某個值或值的集合作為輸入并產生某個值或值的集合做為輸出。即就是把輸入轉換成輸出的計算步驟的一個序列。
良定義的解釋:良好的定義,讓人一看就懂得
拿排序問題舉例:
即其排序的過程就是我們所謂的算法, 如果對每個輸入實例都能得到期望的輸出那么稱該算法是正確的,當然,某些時候當算法的錯誤率可控時對于我們來說仍然是可用的。
算法能夠解決哪些問題?
以上是一些概括,最終會具體到實際問題:
練習題
- 1-1給出現實生活中需要排序的一個例子或現實生活中需要計算凸殼的一個例子。 排序:輸入班級所有學生的考試成績,輸出成績排名 凸包:求省/城市邊界范圍,城市規劃等
- 1-2除速度外,在真實環境中還可能使用哪些其他有關效率的量度 內存、通信的帶寬、精度、健壯性。
- 1-3 選擇一種你以前已知的數據結構并討論其優勢和局限。 單向鏈表: 優勢:可以不用連續的內存空間,插入和刪除比較方便 劣勢:不能向數組一樣隨機訪問。
-
1-4 前面給出的最短路徑與旅行商問題有哪些相似之處
相似之處:都是尋求最短路徑 不同之處:最短路線問題:從若干條可選線路中選擇一條線路使之在兩個點之間最短旅行商問題:需要遍歷所有的點。
作為一種技術的算法
假設計算機是無限快的并且計算機存儲器是免費的,那么用于求解某個問題的任何正確的方法都行。?我們還有什么理由研究算法?
當然,計算機也許是快的,但它們不是無限快。存儲器也許是廉價的,但不是免費的。所以計算時間是一種有限資源,存儲器中的空間也一樣。你應該明智地使用這些資源,在時間或空間方面有效的算法將幫助你這樣使用資源。舉一個1000w數組排序的例子:
計算機A就純計算能力來說比計算機B快1000倍,插入排序排序n個數,需要指令;歸并排序需要指令.即
- ? ?計算機A需要,? ?1000w * 1000w / 100億??= 10000?秒
- ? ?計算機B需要,1000w *? / 1000W? = 23秒
計算機B比計算機A還快接近500倍!因此表明我們應該像計算機硬件一樣把算法看成是一種技術。整個系統的性能不但依賴于選擇快速的硬件而且還依賴于選擇有效的算法。
練習題
- 2-1給出在應用層需要算法內容的應用的一個例子,并討論涉及的算法的功能。 當我們使用高德或百度地圖,查找兩地點的路徑。 在此情況下,我們最關心的是最近路徑就是通過算法計算出來的
- 2-2假設我們正比較插入排序與歸并排序在相同機器上的實現。對規模為n的輸入,插入排序運行步,而歸并排序運行64nlgn步。問對哪些n值,插入排序優于歸并排序? 1. 滿足8n^2 < 64n*lg(n) 2. n < 8*lg(n); 3. 可得n<= 43 ,不考慮n為1.
思考題
? ? 以計算機1s一般可執行最大操作10^6次為前提,?假設求解問題的算法需要f(n)毫秒,對下面中的每個函數f(n)和時間t,確定可以在時間t內求解的問題的最大規模n
總結
以上是生活随笔為你收集整理的《算法导论3rd第一章》算法在计算中的作用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android自动识别文字,Androi
- 下一篇: RTP 发送PS流工具(已经开源)