[英]Bit Model Cost For Counting to N
考慮一個類似於教科書加法的計算模型,其中每個操作的成本為1個單位,那么用於計數到n的二進制加法的位模型成本是多少,其中n是2的冪?
模型
該計算模型基於上面寫有0和1的玩具塊。 最初,零塊位於桌子上(空閑)。 每個塊操作(刪除或添加塊)花費1個單位。
目的是將表上的(二進制)數字替換為1、2、3,...,n。 這是通過模仿“ 隨身攜帶”來完成的 。
例如,我們以0開頭。要計數為1,我們需要刪除0(成本1)並加1(成本1)。 然后,要計數到2,我們需要添加1(成本1)。 然后,我們刪除兩個(成本2),將其替換為0(成本1),並在前面添加1(成本1)以得到10(基數2)(成本1)。 依此類推,直到n 。
我計算出,當最低有效位為0時,開銷為2(刪除0,加1)。 當lsb為1時,成本為5。
增加數字的成本
0000 -> 0 (0 time unit to go to 0 - block already there)
0001 -> 2 (2 operations to go to 2)
0010 -> 1*4 + 1 (1 carry)
0011 -> 2
0100 -> 2*4 + 1 (2 carries)
0101 -> 2
0110 -> 5
0111 -> 2
1000 -> 3*4 + 1 (3 carries)
1001 -> 2
1010 -> 5
1011 -> 2
1100 -> 2*4 + 1
1101 -> 2
1110 -> 5
1111 -> 2
10000 -> 4*4 + 1
10001 -> 2
10010 -> 5
...
我開始看到一種模式,但是無法將其形式化。
看起來T(n) = sum from k = 1 to log n of (4k +1) + 9 * 2^(log n - 2)
。
考慮這一點的一種方法是跨列而不是行求和。 假設您最多計數2 k 。 然后:
(在上面,我指的是將新的1位數字添加為“翻轉”而不是“添加”,因為您可以將其視為從0翻轉為1或在前面添加新的1位數字。)
這意味着必須更改的總位數為
2 k + 2 k-1 + 2 k-2 + ... + 1
= 2 k + 1-1
因此,總共將翻轉2 k + 1-1位。 我們可以檢查一下:從0到1,我們得到
0
1
因此,一位被翻轉了(如我們所預測的,1 = 2 1-1 )。 當從0到2計數時,我們得到
00
01
10
這是一個總三個比特的翻轉(0 -在1的地方> 0和0 - - > 1中的2個位> 1),和3 = 2 2 - 1,正如我們猜測。
希望這可以幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.