[理工] 演算法 時間複雜度 Amotized cost

看板Grad-ProbAsk作者 (chen)時間5年前 (2018/12/28 01:26), 5年前編輯推噓0(006)
留言6則, 2人參與, 5年前最新討論串1/1
問題: 有一個binary counter 給予某一種操作A A操作的時間複雜度是O(lgn) n代表的是 當bit為1時 所在的位置的值 例如 對101做A操作 第一個bit是1 -> n=2^0=1 -> O(lg(1)) 第二個bit是0 -> 不理 第三個bit是1 -> n=2^2=4 -> O(lg(4)) 所以"一次A操作"時間複雜度是 O(lg(1))+0+O(lg(4)) 1. A操作amotized cost 我的方法是對binary counter 從1加到n (每次+1) 也就是1=001做一次A操作,2=010做一次,3=011做一次....n做一次 最後再除n 2. A操作的worst case 我認為worst case應是 0111111...1 也就是n=2的次方-1時 ------ 我算出來 amotrized cost 是O(lg(n)lg(n)) worst case 也是O(lg(n)lg(n)) amotrized 沒有比 worst case少 請問是否是算錯了? 附上amotized cost的計算過程 https://i.imgur.com/j5hAn5k.jpg
https://i.imgur.com/ZsawILX.jpg
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.150.48 ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1545931567.A.A53.html ※ 編輯: cschenptt (140.112.150.48), 12/28/2018 01:38:32

12/28 01:41, 5年前 , 1F
請問n是prob. size嗎? n是指所有的bit數量嗎?
12/28 01:41, 1F
請問大大是問lgn的n嗎? 是的話 n是指 該bit的值 eg. 10 = 1010 第二個bit=1 代表2 -> n=2 -> lg(2) 第四個bit=1 代表8 -> n=8 -> lg(8) bit=0 -> 不理 所以對10做A操作 時間複雜度是 lg2+lg8 ※ 編輯: cschenptt (140.112.150.48), 12/28/2018 01:57:43

12/28 08:47, 5年前 , 2F
應該是在問計算過程裡面的n吧
12/28 08:47, 2F

12/28 08:48, 5年前 , 3F
另外不是很清楚你計算第一行的式子怎麼來的@@
12/28 08:48, 3F

12/28 08:54, 5年前 , 4F
如果n指的是counter value, lg(1)前面乘的應該是n, 每次
12/28 08:54, 4F

12/28 08:54, 5年前 , 5F
都會跳
12/28 08:54, 5F

12/28 10:58, 5年前 , 6F
可否給原始的題目?
12/28 10:58, 6F
文章代碼(AID): #1S9GilfJ (Grad-ProbAsk)