You are on page 1of 8
Homework of Analysis of algorithms Paper Report of Selection in X+Y Matrices with sorted rows and columns (A.MIRZAIAN and E.ARJOMANDI) Professor:陳維美 Student:張枱謙 Student No.:M9502230 1.問題與目標: 可否再尋找一個更好的 Selecting X+Y 演算法。 在這篇 paper 裡將會找到一個時間複雜度只有 O(n) 的演算法,這個演算法可從 矩陣 A 裡面找到第 K 小的元素,而這個矩陣 A 是由兩個以排序的向量 X 與 Y 使 用 Cartesian sum 的運算所產生的,在這篇發表之前,Jefferson,Shamos and Tarjan 發表了可以從 X+Y 裡找到中位數的演算法,這個演算法花了 O(nlogn)的時間複雜 度,而 Johnson and Mizoguchi 發表了可以從 X+Y 裡找到第 K 小的元素,這個演 算法也花了 O(nlogn)的時間複雜度,還有沒有更好的!有的。在 1982 年 G.N.Frederickson and D.B.Johnson 所發表的 The complexity of selection and ranking in X+Y and matrices with sorted columns,這一篇裡他們從 X+Y 找到第 k 大的元素只 花了 O(max{n,nlog(k/n)}) 的時間複雜度,似乎實現了只花 O(n) 時間複雜度的演 算法,不過 A.Mirzaian 和 E.Arjoandin 將在這篇裡實現從 X+Y 只花了 O(n)的時間 複雜度來找到第 k 小的元素的演算法,這個演算法將會應用一些 divide-and-conquer 的演算法技術來獲得最好也比之前更簡單的演算法。 2.The selection algorithm 需要的基礎理論: 作者先定義一些式子 a 為一實數。A 為一個 nxn 矩陣。 1 而子矩陣 A 的維度為n × n 而 n = n+1 2 𝑟𝑎𝑛𝑘 +(L,a)=|{x∈L | x>a} | 意指在 L 列上比 a 大的個數。 𝑟𝑎𝑛𝑘 −(L,a)=|{x∈L | x k 2 = k 2 + 3 4 4 Because k1 ≥ k 2 ; 4>3 ; 又 n>1 → 4n>0; 故 k1 ≥ k 2 由 n2 ≥ k 1 和 1 ≤ k 2 和 k1 ≥ k 2 得知 n2 ≥ k1 ≥ k 2 ≥ 1 Prove 1.4 1 1 k1 − k 2 = 4n + 4 + k1 − k2 + 3 4 4 1 1 5 = 4n − 1 + k1 − k 2 < 4n − 1 + 4n − 4 = 2n − =4n − 4 4 4 4 故 k1 − k 2 ≤ 4n − 4 CASE2: When n is odd 如 CASE 1 同理可證。 Theorem 5.2 Let A be an nxn ordered matrix and 𝑛2 ≥ 𝑘1 ≥ 𝑘2 ≥ 1 .Then biselect(n,A,k1,k2) returns the k1th and k2th elements of A. Proof. 當 Basis(n ≤ 2):理所當然成立。 那麼 n > 2 呢? induction (n>2) : 因為 Lemma 5.1 的關係 n2 ≥ k1 ≥ k 2 ≥ 1 又k1 與 k 2 皆為子矩陣A的元素 所以 𝑟𝑎𝑛𝑘 +(𝐴,a)≤ 𝑛2 – 𝑘1 𝑟𝑎𝑛𝑘 −(𝐴,b)≤ 𝑘2 − 1 應用 Theorem3.1 得知 1 1 𝑟𝑎𝑛𝑘 +(A,a)≤ 4𝑛2 – 4𝑘1 = 4 n2 + 4n + 4 −4 4n + 4 + k1 = 𝑛2 − 𝑘1 4 4 1 𝑟𝑎𝑛𝑘 −(𝐴,b)≤ 4𝑘2 − 4 = 4 k +3 − 4 = k2 − 1 4 2 故 𝑟𝑎𝑛𝑘 +(A,a)≤ 𝑛2 − 𝑘1 𝑟𝑎𝑛𝑘 −(𝐴,b)≤ k 2 − 1 由上面我們推斷 a ≥ k1 th element ≥ k 2 th element ≥ b 在程式第 7 行 當 𝑟𝑎𝑛𝑘 −(𝐴,a)=𝑟𝑎−≤ k1 − 1 成立時再結合必然成立的 𝑟𝑎𝑛𝑘 +(A,a)≤ 𝑛2 − 𝑘1 ,為了符合兩式,可知 a 還是 a ,所以程式設計傳回的 x 值還是原來的 a 值,也就 是 A 中的第k1 th element元素。 假設第 7 不成立時,往第 8 行執行 當 𝑟𝑎𝑛𝑘 +(𝐴,b)=𝑟𝑏 +≤ 𝑛2 − k1 成立時再結合必然成立的 𝑟𝑎𝑛𝑘 −(𝐴,b)≤ k 2 − 1 和 k1 ≥ k 2 ,由圖可看到,b 值會成為新的 a 值也就是 A 中的第k1 th element元 素。 假設第 8 行不成立時,往第 9 行執行 也就是 𝑟𝑎𝑛𝑘 −(𝐴,a)≥ k1 − 1 𝑟𝑎𝑛𝑘 +(𝐴,b)≥ 𝑛2 − k1 要符合兩個條件,那麼新的 a 值會在原本的 a 與 b 之間,a > k1 th element > b, 又 L = ra− + rb+ − n2 & L > 1 x 的回傳直到證明完畢,y 的回傳值同理可證。 5.時間複雜度分析: 因為 4,5,6 行花 O(n)的時間去執行,那麼就只看第 9 和第 12 行 又 L = rank− A, a + rank+ A, b − n2 ≤ 4rank− A, a + 4rank+ A, b − (2n − 1)2 ≤ 4 k1 − 1 + 4 n2 − k 2 − 4n2 − 4n + 1 = 4 k1 − k 2 + 4n − 5 ≤ 1 4 4n − 4 + 4n − 5 = 20n − 21=20 n+2 − 21 = 10n − 1 < 12n 2 所以也只花 O(n)的時間 1 再來執行 biselect(n,A,k1,k2) 的 T n = T n+2 + O(n) 2 所以 selection 演算法只花 O(n)時間複雜度。