簡體   English   中英

計數到N的位模型成本

[英]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 然后:

  • 在所有2 k個操作中,1的位將翻轉。
  • 在這些操作的2 k / 2 = 2 k-1中,2的位將翻轉。
  • 在這些操作的2 k / 4 = 2 k-2中,4的位將翻轉。
  • 在這些操作的2 k / 8 = 2 k-3中,8的位將翻轉。
  • ...
  • 在這些操作的2 k / 2 k = 1中,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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM