疑問
例えば3次元配列Aがあるとして、A[i][j][k]へのアクセスはO(3)?それともo(1)?
普通に考えてみればいいのでは?
普通に考えると、「3次元配列Aのi番目の配列の中のj番目の配列の中のk番目」でO(1 * 3)で、実際一次元の配列のアクセスより遅いことが確認できているのですが、このテーマについて言及されているソースや記事がぱっと見で見つからなかったので、詳しい説明ができる人がいないかと思い投稿してみました。
現状ではO(n)表記の理解が間違っているので、O(n)表記を使って質問したいのなら、正しく理解しましょう。
O(n)表記を使わないで知りたいことを質問できるなら、そちらの方が良いと思います。
タイトルで
> n元配列へのアクセスはO(n) ?
という問いをしているので
Aが3次元配列の時の A[0][0][0]
Aが4次元配列の時の A[0][0][0][0]
Aが5次元配列の時の A[0][0][0][0][0]
:
:
Aがn次元配列の時の A[0][0][0][0][0]……[0]
:
となった時の必要な計算時間の話をしていることになるのですが、それで合っているんでしょうか??
もし、
n元配列へのアクセスはO(n) なのであれば、3次元配列ならO(3)なんでしょうか?
というのが質問の主旨なのだとしたら、otn さんが"O(n)表記の理解が間違っている"と指摘したのが合ってますね。
メモリアクセスについてランダウの記法による計算量を考えることには意味がありません。
回答3件
あなたの回答
tips
プレビュー