誤解の元凶は「計算量」ということば?

…結局気になってこればっかりかんがえちゃうから仕事できないじゃないか (笑)
まぁA君 (S君?) の舌鋒鋭さに少し引き気味ではあるけども.

というわけで,dankogai氏の次の記事のことです.また.

私の言いたいことは以前「アルゴリズムとプログラム」で書いたことと変わらなくて,もしこれに同意していただけるなら,こういう書き方にはならない気もするわけです.ここについてはそれだけですが,他の方もはっきりしていない部分があると思うので,書いていきたいわけです.

その前に,計算量をオーダー記法で書く必要は全くありません.オーダー記法は計算量を記述するためだけのものでもありません.オーダー記法は関数の漸近的評価をするためのものです.大学でテイラー展開とかやれば低次項の表現として必ず出てくるので,普通の理工系大学教育を受けた人には分かってもらえると思います.この「漸近的」というのが分からなければ,そこは調べるか勉強するか,まぁなんにしても頑張ってください,ということになるわけです,はい.

たとえばn桁の足し算は、2つの整数および結果が適当なレジスタに収まるうちは、1クロック(程度)でできるのでご機嫌に速いわけですが、O(1)というわけではもちろんなく、O(n)だと考えるのがふつうでしょう

http://www.unfindable.net/~yabuki/blog/2007/12/o1.html

O(1)とするかO(n)とするかは計算モデルに依存します.以上.どちらが「ふつう」かという議論はあるでしょうが,それはどちらの計算モデルがふさわしいかという議論です.状況によります.

この定義だと、フィボナッチ数列の一般項を求める式を使ってもO(1)にはならないと思います。

http://d.hatena.ne.jp/textfile/20071204/algo

オーダー記法の定義だけからdankogaiさんの主張どおりO(1)なのかどうかは判断できません.なぜかというと,dankogaiさんは自身の計算モデルを示していないからです.計算モデルによってはO(1)なのかもしれません.

まぁ,私は日記上の説明が丁寧ではない方なので (直接会ってる人にはこの話について聞かれたときに丁寧に返答してる気ではいますが),たぶん私と同じ主張をもっと丁寧にid:smoking186さんがしてくれていると思いますので,そちらをご参照下さい.