推 polomoss:後天要寫~寫完再跟你對~ 02/01 23:17
推 hanbz:2-3的0到4為1 非無窮大 02/06 22:22
喔喔打錯了,已修正感謝
※ 編輯: taitin 來自: 61.230.227.76 (02/07 00:04)
※ 編輯: taitin 來自: 61.230.220.229 (02/08 00:46)
推 qwertz:1-3我算是 1+2+3+4+6+7+11 = 34 耶 02/08 17:29
推 qwertz:5-2好像只有merge sort 02/08 17:44
我寫錯了,已修正
→ qwertz:5-3 我寫 2 ,merge sort 與 heap sort 02/08 17:46
→ qwertz:5-4 我寫 4 ,bubble insert quick selection 02/08 17:48
寫反了囧,看著打都會打錯QQ,已修正
推 qwertz:5-9 的 algo 我想不出來 可以請教一下嗎@@" 02/08 17:54
find(S,n/2);
find (S,k)
{
假設一個數列S有n個數,將S切個成數個集合,每個集合五個數字,因此共有(n/5)個集合
1.對每個集合排序 n/5* O(5log5)=O(n)
2.找到每個集合的中位數,即每個集合第3個數 O(1)
3.令S'=上述每個集合的中位數,m=find(S',(n/5)2) T(n/5)
4.則可利用M將S分成三個部份 S1(<m) S2(=m) S3(>m) O(n)
5.a. 若|S1|個數>=k,則第K數落在S1裡面,find(S1,n/2) T(n/4)
b. 否則若|S1|+|S2|>=k,則第K數落在S2裡面,return(m) O(1)
c. 否則find(s3,k-|s1|-|s2|); T(3n/4)
}
整體複雜度討論
T(n)=T(n/5)+T(n/4)orT(3n/4)orO(1)+O(n)
=T(n/5)+T(3n/4)+O(n)
由於 1/5+3/4<1
因此
T(n)=O(n)
至於為什麼第四步是n/4
考慮下列情況
集合1 * * * * *
集合2 * * * * *
集合3 * * * * *
集合4 * * * * *
集合5 * * * * *
紅色為上述演算法中的M
而由於每個序列都被排序,而紅色點又是各集合中位數的中位數
因此可知道可以找到至少1/4的數字小於m
因此可知道|S1|最多只有n/4
而|S3|最多只有3n/4(若s2不存在)
推 hanbz:1-3 我也是算34= = 02/08 17:54
1-3我算錯了,已修正感謝樓上兩位
※ 編輯: taitin 來自: 61.230.226.58 (02/08 21:08)
※ 編輯: taitin 來自: 140.113.7.249 (02/09 13:01)
推 stevenwin:請問1-1答案是 -1 -1 0 1 2 0 嗎? 02/09 23:14
恩,是0我打錯了ˊˋ
※ 編輯: taitin 來自: 61.230.226.58 (02/09 23:20)
推 stevenwin:想問 4 (1) A 的 big-O 和 B 的 Omega為何都是yes? 02/09 23:27
→ stevenwin:4 (2) 請問是哪8個是polynomial bounded? 02/09 23:29
推 qwertz:4 (2)我選的是從頭到尾數來 第 2 3 4 5 9 10 14 15這八個 02/09 23:39
跟我一樣
→ qwertz:4 (1) A是P(n)的絕對上界(小big-o) 所以也是P(n)的big-O 02/09 23:40
→ qwertz:4 (2) B則是P(n)的絕對下界(小omega)所以也是P(n)的大Omega 02/09 23:42
→ qwertz: (1) 上一行打錯 02/09 23:42
推 stevenwin:常數算是polynomial bounded? 想說常數可以想成n^0 02/09 23:48
→ stevenwin:我終於瞭解了,感謝!! 02/09 23:50
推 polomoss:2(1)應該就是建立max-heap 02/10 01:16
他程式有沒有錯阿?好像跑不出來。
推 polomoss:3(1)請問c錯在哪~? 02/10 01:19
→ polomoss:3(3)可以解釋一下a.c錯在哪嗎? 02/10 01:20
→ polomoss:4(2) 我算10個,4(3)(C)nlglgn 02/10 01:21
推 qwertz:3(1)的c 應該是theta(nlogn)而不是O(nlogn) 02/10 15:58
→ qwertz:而3(3) a錯在recursion 應是 T(n) = 2T(2/n) + (n-1) 02/10 16:00
應該還是T(n) = 2T(n/2) + cn,但是不見得balance造成best result
→ qwertz:而3(3)的 c有點像是玩文字遊戲 我是想quick sort 雖然有 02/10 16:01
→ qwertz:最高的performance 但是並不能說他是代表comparison sort中 02/10 16:02
→ qwertz:複雜度最低的 02/10 16:02
跟樓上想法大致相同,我認為不能說某個演算法是最好的,
這個問題最佳解的複雜度就是這樣,因為也許有更好的演算法只是沒被發現而已。
推 qwertz:另外4(3) 我也是算 nlglgn polomoss請問你4(2)選哪幾個@@? 02/10 16:07
4(3)我算錯,已修正,感謝二位
※ 編輯: taitin 來自: 140.113.7.249 (02/10 18:28)
※ 編輯: taitin 來自: 140.113.7.249 (02/10 18:33)
※ 編輯: taitin 來自: 61.230.219.56 (02/15 19:26)
推 stevenwin:2(3) 我最大寫13耶 02/23 01:03
→ taitin:題目是 A1的意思是可以通過vetex number 1到達其他點 02/23 01:08
※ 編輯: taitin 來自: 220.136.209.215 (03/08 18:33)
※ 編輯: taitin 來自: 220.136.209.215 (03/08 18:34)
推 hswayne:(3) all-pairs那一題答案13吧 03/08 19:21
→ KarmaPolice:我也寫13 03/09 18:01
推 zensword:13 +1 02/14 19:33