練習
1.1-1 給出現實生活中需要排序的一個例子或者現實生活中需要計算凸殼的一個例子。
排序:購物網站需要知道當前商品下價格最低的店鋪或者銷量最高的店鋪。
凸殼:當需要在一片海域搜救時,必須通過重要的點來計算搜尋范圍。只有確定了凸殼的面積,才能確定最小搜救面積。
1.1-2 除速度外,在真實環境中還可能使用哪些其他有關于效率的量度?
功率,也就是焦耳/秒。代表一個物體制造或者消耗能量的速度。
1.1-3 選擇一種你以前已知的數據結構,并討論起優勢和局限。
數組,C語言內置的數據結構。
優勢:可以進行隨機訪問所以訪問的速度很快。
劣勢:但是無法快速的插入或者刪除,并且也不能隨意的改變容量。
1.1-4 前面給出的最短路徑與旅行商問題有哪些相似之處?又有哪些不同?
相似:最短路和旅行商問題都是計算最短路徑的問題。
不同:普通的最短路徑是定點求解,而旅行商問題是求解點和最短路徑,復雜度更高。
1.1-5 提供一個現實生活的問題,其中只有最優解才行。然后提供一個問題,其中近似最優解也足夠好。
唯一解:銀行卡在取款的時候,賬號必須精確匹配密碼才能進行取款操作。
近似解:電燈的電壓只要控制在一定的范圍之內就可以很好的工作。
練習
1.2-1 給出在應用層需要算法應用的一個例子,并討論涉及算法的功能。
計算一個電子地圖上出發地和目的地之間最短的路程。該應用需要使用以距離為權重的無向圖最短路算法。
1.2-2 假設我們正比較插入排序與歸并排序在相同的機器上實現。對規模為n的輸入,插入排序運行8n^2步,而歸并排序運行64nlgn步,問對哪些n值,插入排序優于歸并排序?
首先聯立,令:8n^2 = 64nlgn; 然后計算出n為43.5593時等式成立,即輸入規模n不超過43時插入排序優于歸并排序。
1.2-3 n的最小值為何值時,運行時間為 100n^2 的一個算法在相同的機器上快于運行時間為 2^n 的另一個算法?
首先聯立,令:100n^2 = 2^n;計算出n = 14.32,也就是說當輸入規模大于15時,前者快于后者。