アルゴリズム (続)

牧野さんにちょっと質問されている気がするので,書きます.私の「アルゴリズムとプログラム」についてコメントですが.
http://grape.mtk.nao.ac.jp/~makino/journal/journal-2007-12.html#18

個人的には「キャッシュ再利用のための方法や並列化のための方法」というのもアルゴリズムだと思っていて,私の書いたアルゴリズムの説明 (私自身は定義だとあんまり思ってませんが) にも外れないとは思うんです.しかし,おそらくアルゴリズムとプログラムを対比させてしまったのがよくなくて,「アルゴリズムはプログラムとして実現されなくてはならない」ような印象を文章からは受けてしまいますね.でも,アルゴリズムはプログラムとして (ソフトウェア的に) 実現されていなくてもよいですし,ハードウェア的でもよいですし,そうでなくても,例えば人間が手を動かしてソートとかしてもそれはある種の実現なので,それでもいいんですが,数学的な抽象物とその実現を分けなくてはいけないと思うっていうのが本来の主旨です.それで,キャッシュとか並列性は普通のアルゴリズムでは考えないと思われてるかもしれませんが,それは「計算モデル」に関わるところなのでそういうモデルを考察対象にすれば「キャッシュ再利用のための方法や並列化の方法」も数学的な抽象物としてのアルゴリズムと捉えられます.例えば,ページングアルゴリズムオンラインアルゴリズムの分野での大きなテーマでいろいろなモデルが提案されていろいろな角度から研究がされています.