2.2.28

簡単に書くために[x]:=xmod2[x] := x \bmod 2と定義する。 パスカルの三角形と二項係数の関係から、 g(n)=[(n0)]+[(n1)]++[(nn)]g(n) = [\binom{n}{0}] + [\binom{n}{1}] + \cdots + [\binom{n}{n}] である。 これを簡単な式で表せるようにするのが目的である。

パスカルの三角形を偶数を0、奇数を1で表すと以下のようになる。

               1
              1 1
             1 0 1
            1 1 1 1
           1 0 0 0 1
          1 1 0 0 1 1
         1 0 1 0 1 0 1
        1 1 1 1 1 1 1 1
       1 0 0 0 0 0 0 0 1
      1 1 0 0 0 0 0 0 1 1
     1 0 1 0 0 0 0 0 1 0 1
    1 1 1 1 0 0 0 0 1 1 1 1
   1 0 0 0 1 0 0 0 1 0 0 0 1
  1 1 0 0 1 1 0 0 1 1 0 0 1 1
 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

よってg(n)g(n)

nn 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
g(n)g(n) 2 2 4 2 4 4 8 2 4 4 8 4 8 8 16

となる。g(n)g(n)が2の累乗の形になっているのでnnを2進法で表し、またg(n)g(n)を2を底とする対数と比較してみると次のようになる。

nn 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111
lg(g(n))\lg(g(n)) 1 1 2 1 2 2 3 1 2 2 3 2 3 3 4

これからg(n)=2"nの立っているビットの数"g(n) = 2^{"\text{nの立っているビットの数}"}と予想できる。

これをnnに関する帰納法で示す。 証明しやすいようにg(n)g(n)を漸化式の形で書き換えると、 g(0)=1g(2n)=g(n),(n>0)g(2n+1)=2g(n),(n0) \begin{array}{rcl} g(0) &=& 1\\ g(2n) &=& g(n), (n>0)\\ g(2n+1) &=& 2g(n), (n \geq 0) \end{array} となりこれを示せば良い。ただし便宜上g(0)=1g(0) = 1とした。

(2nk)\binom{2n}{k}が扱いづらいので、まず以下の補題を示す。 (2nk)=i+j=k0i,j(ni)(nj) \binom{2n}{k} = \sum_{\begin{array}{c}i+j=k\\0\leq i,j\end{array}}\binom{n}{i}\binom{n}{j} 二項定理より(2nk)\binom{2n}{k}(x+1)2n(x+1)^{2n}xkx^kの係数である。 一方(x+1)2n=(x+1)n(x+1)n=(i=0n(ni)xi)(j=0n(nj)xj)(x+1)^{2n} = (x+1)^n(x+1)^n = (\sum_{i=0}^n\binom{n}{i}x^i)(\sum_{j=0}^n\binom{n}{j}x^j) であるからxkx^kの係数はi+j=k0i,jn(ni)(nj)\sum_{\begin{array}{c}i+j=k\\0\leq i,j\leq n\end{array}}\binom{n}{i}\binom{n}{j}である。 n<in < iのとき(ni)=0\binom{n}{i} = 0なのでi,jni,j \leq nの制約をなくしてもよいのでこれは i+j=k0i,j(ni)(nj)\sum_{\begin{array}{c}i+j=k\\0\leq i,j \end{array}}\binom{n}{i}\binom{n}{j}である。 これらのxkx^kの係数が一致するので補題が成り立つ。

まず漸化式g(2n)=g(n)g(2n) = g(n)が成り立つことを示す。 補題を使えば、 [(2nk)]=[(n0)(nk)+(n1)(nk1)++(nk)(n0)] \left[\binom{2n}{k}\right] = \left[\binom{n}{0}\binom{n}{k} + \binom{n}{1}\binom{n}{k-1} + \cdots + \binom{n}{k}\binom{n}{0}\right] なのでkkが奇数のときk=2l+1k=2l+1として [(2nk)]=[2(n0)(nk)+2(n1)(nk1)++2(nl)(nl+1)]=0 \left[\binom{2n}{k}\right] = \left[2\binom{n}{0}\binom{n}{k} + 2\binom{n}{1}\binom{n}{k-1} + \cdots + 2\binom{n}{l}\binom{n}{l+1}\right] = 0 と打ち消すようにして0となる。 一方kkが偶数のときはk=2lk=2lとして [(2nk)]=[2(n0)(nk)+2(n1)(nk1)++2(nl1)(nl+1)+(nl)(nl)]=[(nl)(nl)]=[(nl)] \begin{array}{rcl} \left[\binom{2n}{k}\right] &=& \left[2\binom{n}{0}\binom{n}{k} + 2\binom{n}{1}\binom{n}{k-1} + \cdots + 2\binom{n}{l-1}\binom{n}{l+1} + \binom{n}{l}\binom{n}{l}\right]\\ &=& \left[\binom{n}{l}\binom{n}{l}\right] = \left[\binom{n}{l}\right] \end{array} となる。

結局g(2n)g(2n)は偶数の部分しか残らないので g(2n)=[(2n0)]+[(2n1)]++[(2n2n)]=[(n0)]+[(n1)]++[(nn)]=g(n) \begin{array}{rcl} g(2n) &=& \left[\binom{2n}{0}\right] + \left[\binom{2n}{1}\right] + \cdots + \left[\binom{2n}{2n}\right]\\ &=& \left[\binom{n}{0}\right] + \left[\binom{n}{1}\right] + \cdots + \left[\binom{n}{n}\right]\\ &=& g(n) \end{array} となり漸化式が成り立つ。

次にg(2n+1)=2g(n)g(2n+1) = 2g(n)を示す。 (nk)=(n1k1)+(n1k)\binom{n}{k} = \binom{n-1}{k-1} + \binom{n-1}{k}を使えば g(2n+1)=[(2n0)]+[(2n0)+(2n1)]++[(2n2n1)+(2n2n)]+[(2n2n)] g(2n+1) = \left[\binom{2n}{0}\right] + \left[\binom{2n}{0} + \binom{2n}{1}\right] + \cdots + \left[\binom{2n}{2n-1} + \binom{2n}{2n}\right] + \left[\binom{2n}{2n}\right] となる。 [(2ni)]\left[\binom{2n}{i}\right]iiが奇数のとき0であったから [(2ni)],[(2ni+1)]\left[\binom{2n}{i}\right], \left[\binom{2n}{i+1}\right]のどちらかは0になる。従って [(2ni)+(2ni+1)]=[(2ni)]+[(2ni+1)] \left[\binom{2n}{i} + \binom{2n}{i+1}\right] = \left[\binom{2n}{i}\right] + \left[\binom{2n}{i+1}\right] とかける。故に g(2n+1)=2([(2n0)]+[(2n1)]++[(2n2n)])=2g(2n)=2g(n) \begin{array}{rcl} g(2n+1) &=& 2\left(\left[\binom{2n}{0}\right] + \left[\binom{2n}{1}\right] + \cdots + \left[\binom{2n}{2n}\right]\right)\\ &=& 2g(2n) = 2g(n) \end{array} が成り立つ。

results matching ""

    No results matching ""