算法導論 — 思考題4-2 參數傳遞代價

參數傳遞代價)我們有一個貫穿本書的假設——過程調用中的參數傳遞花費常量時間,即使傳遞一個NN個元素的數組也是如此。在大多數系統中,這個假設是成立的,因爲傳遞的是指向數組的指針,而非數組本身。本題討論三種參數傳遞策略:
  1. 數組通過指針來傳遞。時間 = Θ(1)Θ(1)
  2. 數組通過元素複製來傳遞。時間 = Θ(N)Θ(N),其中NN是數組的規模。
  3. 傳遞數組時,只複製過程可能訪問的子區域。若子數組A[p..q]A[p..q]被傳遞,則時間 = Θ(qp+1)Θ(q−p+1)
  a. 考慮在有序數組中查找元素的遞歸二分查找算法(參見練習2.3-5)。分別給出上述三種參數傳遞策略下,二分查找最壞情況運行時間的遞歸式,並給出遞歸式解的好的上界。令N爲原問題的規模,n爲子問題的規模。
  b. 對2.3.1節的MERGE-SORT算法重做(a)。
  
  
  a. 二分查找
  如果忽略參數傳遞時間,二分查找的運行時間的遞歸式爲T(n)=T(n/2)+Θ(1)T(n) = T(n/2) + Θ(1)
  (1) 數組通過指針來傳遞
  最壞情況運行時間遞時式爲T(n)=T(n/2)+Θ(1)+Θ(1)=T(n/2)+Θ(1)T(n) = T(n/2) + Θ(1) + Θ(1) = T(n/2) + Θ(1),求解該遞歸式得到T(n)=O(lgn)T(n) = O({\rm lg}n)
  (2) 數組通過元素複製來傳遞
  最壞情況運行時間遞時式爲T(n)=T(n/2)+Θ(1)+Θ(N)=T(n/2)+Θ(N)T(n) = T(n/2) + Θ(1) + Θ(N) = T(n/2) + Θ(N),其中NN爲原數組規模,求解該遞歸式得到T(n)=O(nlgn)T(n) = O(n{\rm lg}n)
  (3) 數組通過只複製子問題要訪問的區域來傳遞
  最壞情況運行時間遞時式爲T(n)=T(n/2)+Θ(1)+Θ(n)=T(n/2)+Θ(n)T(n) = T(n/2) + Θ(1) + Θ(n) = T(n/2) + Θ(n),用主方法求解該遞歸式得到T(n)=O(n)T(n) = O(n)
  b. MERGE-SORT
  如果忽略參數傳遞時間,MERGE-SORT的運行時間的遞歸式爲T(n)=2T(n/2)+Θ(n)T(n) = 2T(n/2) + Θ(n)
  (1) 數組通過指針來傳遞
  最壞情況運行時間遞時式爲T(n)=2T(n/2)+Θ(n)+Θ(1)=2T(n/2)+Θ(n)T(n) = 2T(n/2) + Θ(n) + Θ(1) = 2T(n/2) + Θ(n),求解該遞歸式得到T(n)=O(nlgn)T(n) = O(n{\rm lg}n)
  (2) 數組通過元素複製來傳遞
  最壞情況運行時間遞時式爲T(n)=2T(n/2)+Θ(n)+Θ(N)=2T(n/2)+Θ(N)T(n) = 2T(n/2) + Θ(n) + Θ(N) = 2T(n/2) + Θ(N),其中NN爲原數組規模,求解該遞歸式得到T(n)=O(n2)T(n) = O(n^2)
  (3) 數組通過只複製子問題要訪問的區域來傳遞
  最壞情況運行時間遞時式爲T(n)=T(n/2)+Θ(n)+Θ(n)=2T(n/2)+Θ(n)T(n) = T(n/2) + Θ(n) + Θ(n) = 2T(n/2) + Θ(n),求解該遞歸式得到T(n)=O(nlgn)T(n) = O(n{\rm lg}n)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章