Professional Documents
Culture Documents
Paper Report of
Professor:陳維美
Student:張枱謙
Student No.:M9502230
1.問題與目標:
也就是
母矩陣 A 裡小於元素 a 的個數必定比小於 4 倍子矩陣A比元素 a 小的個數。
母矩陣 A 裡大於元素 a 的個數必定比小於 4 倍子矩陣A比元素 a 大的個數。
不過這是可以以直覺想到的
必定比由母矩陣 A 小於 a 的個數來得多,因為是排序過的,所以以左上角的矩陣
最有可能是如此。
function pick(L,k);
begin
p=L[k]
return p
end;
k2 定義如下:
為了仔細分析演算法的詳細過程,這裡
先行把 function 分成如左圖 3 部分
CASE1:
當 n is even 時
Prove 1.1
1 1 1
由n = n + 2 ; n2 = n+2 2
= n2 + 4n + 4
2 4 4
1 1
又 k1 = n + 1 + k1 = 4n + 4 + k1
4 4
and we have n2 ≥ k1 ≥ 1 故 n2 ≥ k1
Prove 1.2
1
k2 = k2 + 3 k 2 = 4k 2 − 3
4
and we have 1 ≤ k 2 ≤ n2 1 ≤ 4k 2 − 3 ≤ n2 1 ≤ k2
Prove 1.3
1 1
k1 = 4n + 4 + k1 > 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