演算法導論筆記第一章

2021-09-09 00:24:31 字數 2089 閱讀 2915

首先從別人的博文中看到乙個對演算法的最為簡單而又簡潔的理解:

演算法=輸入+良好的計算過程+正確輸出。

仔細想,就是這個樣子的。

有時間,習慣了有問題就上網查詢,而漸漸使大腦變的遲鈍許多,遇到問題第一反應不是仔細想想而是想要去查查怎麼回事,這不是個好的習慣。要改正。

下面是自己對習題的一些想法:

1.1-1:給出乙個真實世界的例子,其中包含著下列的某種計算問題:排序,確定多矩陣相乘的最佳順序,或者找出凸殼

排序:很多成績都可以用到排序,這個自然很常見。

確定多矩陣相乘的最佳順序:矩陣相乘這個在現實世界中除了做題的時候會遇到其他還真沒有遇到什麼,也希望廣大博友看了可以給我個提示一起來想一下,關於做題的結合律 a*b*c=a*(b*c)用到了這個,而實際上,這跟沒說一樣,舉證相乘的最終目的就是減少運算,為了減少運算量的例子就是矩陣本身的計算,在

matlab中的矩陣運算應該是算做這個吧。

找出凸殼:給定平面上n個點,希望找出這些點的凸殼,即包含這些點的最小凸多邊形。從直觀上看,可以將每乙個點看成由一塊板上突起的乙個釘子表示。因此,包圍這些點的凸殼可以看成是一根包圍了所有這些釘子的緊繃的橡皮繩。每乙個令橡皮繩發生方向變化的釘子都是該凸殼的乙個頂點。這些點的2n個子集中的任何乙個都可能是凸殼的頂點。知道哪些是該凸殼的頂點還不夠,還需要知道他們出現的順序,因此,該凸殼的頂點構成有多重選擇。

1.1-2除了執行速度以為,在真實世界問題背景中,還可以使用哪些效率指標。

空間複雜度,占用內純大小;

1.1-3選擇你原來見過的某種資料結構,討論一下其長處和侷限性。問起資料結構的第乙個想到就是鍊錶,下面將鍊錶和陣列做個對比:

鍊錶:方便插入和刪除,但是在查詢的時候,不能直接索引需要遍歷。

陣列:方便直接索引,但是對於插入和刪除的操作可能需要移動位置。

1.1-4上文中給出的最短路徑問題和旅行商人問題有哪些相似之處?有哪些不同之處?

相似之處:這兩個問題都是求最短的路徑

不同之處:最短路徑問題其實是給定了情景並且不需要遍歷所有的點只需要得到乙個點到另外乙個點的最短路徑就可以了,而旅行商人問題則需要遍歷所有的點並求得最短的路程,問題的複雜度不一樣。亦可以找到乙個最短的路徑,但是你無法找到乙個選擇一條送貨車行駛距離最短的送貨順序。其實是乙個np完全問題。(其實這個想了很久,由於要遍歷所有的點,得到乙個整體最短的路徑,實際上是肯定可以找到的,但是這個演算法還沒有得到,另外我的想法是,在這些點中,(有的點可以走多次)每兩個點中肯定可以找到乙個最短路徑,有點像最有子結構的感覺,但是整體的如何找到乙個最短路徑,還是個np完全問題)

1.1-5舉出乙個現實世界問題的例子,他只能用最佳的解決方案來解決。再舉出另乙個例子,在其中「近似」最優解決也足以解決問題。

1)有乙個固定大小的紙箱子,怎樣將不同大小的東西更多的放入紙箱中儲藏;(

揹包問題)(貪心演算法基本上找到的都是最有解決方案)

2)解一元二次方程的時候使用逼近法來獲得在範圍之內的解(無限逼近就是近似的值)。

1.2-1給出乙個實際應用的例子,他在引用這一層次上要求有演算法性的內容。討論其中所設計的演算法功能。

例如工廠流水線上的流水作業排程問題,就要用到流水作業排程演算法,其目的就是為了提高工作效率,(當然,演算法也要根據實際來變更。)

1.2-2假設我們要比較在同一臺計算機上插入排序和合併排序的實現。對於規模為n的輸入,插入排序要執行8n*n步,而合併排序需要執行64n*lgn步。當n取怎樣的值時,插入排序的效能要優於合併排序?

實際上是計算8n^2=64nlgn的n的值,演算法導論上是lgn,這裡的lg是以2為底的而不是已10為底。

n=2時, 8n*n < 64n*lgn即8*2*2=32<64*2*1

n=2^6=64時8*64*64<64*64*6

大概得出n的範圍為[2,64]都是的插入排序小於合併排序。

1.2-3對於乙個執行時間為100n*n的演算法,要使其在同一臺機器上,在比乙個執行時間為2^n的演算法執行的很快,n的最小值是多少?

100n^2=2^n畫圖可以得到n應該有兩個值,乙個小於0捨去,另外乙個為15

n>15的時候,(注:看的別人計算出來的,高數學的那些計算方法都忘記了。)

1-1思考題

計算方法是f(n)=t,就可以求解n的規模了,注意時間單位是毫秒級別的。

演算法導論筆記第一章

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

演算法導論第一章

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

第一章 導論

c 是物件導向的高階語言,將客觀事物都看作物件,將同類物件進行抽象,形成類,類封裝起來只暴露介面,符合人類的思維方式。用源語言寫的,有待翻譯的程式 源程式通過翻譯程式加工以後生成的機器語言程式 連線目標程式以及庫中的某些檔案,生成乙個可執行檔案 加一位,0表示正,1表示負,符號絕對值表示的編碼,但是...