整数分割1

整数分割の方法のアルゴリズム、

  1. The first integer partition of n is [n](最初のパーティションは [n]
  2. B consists only 1’s, then done(パーティションが1のみで構成されたなら終了)
  3. there is a smallest non-1 part m(リストのうち1以外の最小数を m と置く)
  4. subtract 1 from mmから1を引く)
  5. collect all the units so as to much the new smallest part m -1(残りの要素すべてを最大でm-1となるようすべて集める)

最後がかなり怪しい訳になった。このアルゴリズの例が、

The partition after [1, 1, 3, 3] is [1, 2, 2, 3], for after subtracting 1 from 3, we should pack the three units that result in parcels of size 2. The partition after [1, 1, 1, 1, 1, 1, 5] is [3, 4, 4], for after subtracting 1 from 5, we should pack the seven units that result in parcels with maximum size 4, which gives three units and one parcel of size 4, which in turn gives one parcel of size 3 and one of size 4. The partition after [3, 3, 5] is [1, 2, 3, 5]. The partition after [1, 3, 3, 4] is [2, 2, 3, 4].

これ。理解できてないのでコードが書けん。

ゼロ乗が1

ゼロ乗が1になるのは直感的にはわかりにくい。

    \begin{eqnarray*} a^{3} &=& 1\times a\times a\times a \\ a^{2} &=& 1\times a\times a \\ a^{1} &=& 1\times a \\ a^{0} &=& 1 \end{eqnarray*}

という説明が他人には説明しやすいが、1はナンだ?と聞かれたら面倒(単位元で良いのだろうか?)

    \begin{eqnarray*} a^{0} &=& a^{3-3} \\ &=& a^{3}\times a^{-3} \\ &=& a\times a\times a\times \frac{1}{a\times a\times a} \\ &=& \frac{a\times a\times a}{a\times a\times a} \\ &=& 1 \end{eqnarray*}

を知ったら、1がなくても説明できたので好き。吉田氏の本に載ってた。

ソフトウェア生産性

「情報セキュリティ(理念と歴史)」という本で面白い一節、

ソフトウェア生産は理論的な基礎と専門的な実践を備えた「工学」になりえるのか、という挑発を参加者に投げつけたのであった(略)草創期の大プログラマーであったダイクストラは、ソフトウェア工学は既存の工学に比べて未熟な段階にある、とこの会議で指摘していた。(略)それらの結果をみると、謙虚なプログラマと独善的なプログラマとのあいだには、プログラミングの進度に1桁の違いがあった。バラツキのある仕事をだれも「工学」と呼ばない。

経験から言えば、どんな手法を用いても生産性を均一化するのは無理だと思う。ブルックスの言うとおり、

「ソフトウェア工学は今後も泥沼のまま推移するだろう」当時のプログラマは大いに感情移入してこの本を読んだものである

今でも大手メーカーなんかでは研究されているのかもしれないが、プログラマの気持ちはきっと今も同じじゃないかと思う。

Hello world!

これまでのコンテンツはすべて捨てて、好きな算数・数学や、プログラミング・珈琲・本について書くつもり。とりあえず、Easy Latex Latex for WordPress のsandboxだけ試しておく。

(a+b)^2=a^2+2ab+b^2

思ったよりきれい。インラインで \frac{2}{3} とか書けるのも便利。