最大 determinant 問題についてしばらく考えた.combination を用いる方法以上のものはわからないが,n=6 の場合を計算せよという問題には十分答えることができる.ただし,最大 determinant は理論的に研究されており,100程度までの数表ができている.これはここで示した方法ではとうてい太刀打ちできないような,賢い方法である.なまじ計算機があるとそれに頼って頭脳が劣化してしまうのかもしれない.
以下は速度を手元の計算機(Core2 Duo P8400@2.26GHz, Linux 2.6.35)で計測した結果である.Joachim の C++ 実装のものは組合せの計算は n が一つ小さいことを考慮して欲しい.また,Joachimのプログラムは time command,octave/matlab は tic/toc コマンドで計測した.ただし,time command の場合,n<=5 までは user time が 0 なので,あまり意味はない.また,() 内部は推定である.

今回同一のアルゴリズムを octave/matlab と C++ で実装した.Determinant を計算する回数を統一して比較すると,C++ の実装は matlab に比較して 3.7倍,octave に対して 55 倍高速である.この数字をどうみるかは意見が別れると思うが,私は matlab の実装が C++ に比較して 3.7 倍しか時間がかからないというのは結構高速であるという印象を受けた.
Acknowledgements
Thanks to Leo, Joachim, and Marc for the discussion.