1. 程式人生 > >【讀書筆記】演算法導論(第三版)第一章

【讀書筆記】演算法導論(第三版)第一章

第一章概要

練習:

  • 1.1-1 給出現實生活中需要排序的一個例子或者現實生活中需要計算凸殼的一個例子
    排序:淘寶銷量排序,凸殼:淘寶綜合排序
    注:凸殼是一個點集中最小點集,就像一碗盛著飯的碗,凸殼就是那個碗

  • 1.1-2 除速度外,在真實環境中還可能使用哪些其他有關效率的量度?
    店鋪轉化量

  • 1.1-3 選擇一種你以前已知的資料結構,並討論其優勢和侷限
    樹形結構,優勢:條例比較清晰,一級一級巢狀下去,有層次(可以參考思維導圖);侷限:如果結點很多的話,會浪費大量資源,例如看淘寶轉連結時,流量會浪費很多
    注:資料結構分邏輯結構(集合、線性結構、樹形結構、圖形結構)和物理結構(順序、連結、索引、雜湊)

  • 1.1-4 前面給出的最短路徑與旅行商問題有哪些相似之處?又有哪些不同?
    相似之處:所求的都是最短路徑
    不同之處:最短路徑只是一輛車的問題,而旅行商是一家公司多輛車的問題;最短路徑是一個點到另一個點的問題,旅行商是從一個點出發,經過了多個點最後返回到原點處。
    注:最短路徑是指一輛快遞車從A點到B點的最短路徑;旅行商問題是指快遞車從出發快遞公司算出每輛快遞車行駛的最短總距離。

  • 1.1-5 提供一個現實生活的問題,其中只有最佳解才行。然後提供一個問題,其中近似最佳的一個解也足夠好。
    從A乘地鐵到B最短時間,地下交通一般站與站之間比較遠,所以只有一條路線可以走
    從A乘公交車到B最短時間,考慮到地面交通的發達,可以選擇一部車到底,然後多走路到B,也可以選擇中途轉車直接到B

  • 1.2-1 給出在應用層需要演算法內容的應用的一個例子,並討論涉及的演算法的功能
    遊戲中的自動導航功能,涉及到了最短路線的演算法

  • 1.2-2 假設我們正比較插入排序與歸併排序在相同機器上的實現。對規模為n的輸入,插入排序執行8n2步,而歸併排序執行在64nlg2n步。問對哪些n值,插入排序優於歸併排序?
    8n264nlg2n化簡得n8lgn
    通過exl進行計算,得出在44時呈正數,意味著此時插入排序的步數大於歸併排序
    =SUM(A44)-8*LOG(SUM(A44),2)

  • 1.2-3 n的最小值為何值時,執行時間為100n2的一個演算法在相同機器上快於執行時間為2n的另一個演算法?
    100n22n
    通過exl進行計算,得出在15時開始出現負數,意味著此時第一個演算法開始慢於第二個演算法
    =100*SUM(A14)^2-2^(SUM(A14))