- ベストアンサー
対数logについて
対数logについて 基本情報処理技術者試験の勉強をしているのですが、 オーダ記法のところで、よく使われる表現として O(1) O(log n) O(n) O(n log n) O(n^2) ←計算時間小 計算時間大→ という五つの表現が紹介されているのですが、 このうち対数logを用いた物が理解できません。 例えば0(n)は、データ量nが2倍に増えれば計算時間も2倍になるということですよね。 しかしO(log n)だとどういう考え方になるのかわかりません。 対数についてもまだ理解できていないので、 対数のことから教えていただけないでしょうか。回答お待ちしてます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
基本情報技術者試験で出題される対数であるなら, 常用対数(底が10である対数)ではなく,底が2である対数でしょう。 O(log n),O(n log n) のように底を省略した表記は誤解を生みます。 O(log2N),O(N×log2N) のように表記した方が良いです。 (nが底でないことを分かりやすくするため,大文字かつ全角文字でNと書きました) x=log2N,とは,2のx乗=N,と同じ意味です。 http://www.orcaland.gr.jp/kaleido/juken/taisu.html http://www.shunzei.com/lecture/stepup/log.html 例えばO(log2N)とは,データ量Nが1024倍に増えても計算時間は10倍,データ量が100万倍に増えても計算時間は20倍,ということです。 (2の10乗=1024,2の20乗≒1Mなので)
その他の回答 (1)
- debukuro
- ベストアンサー率19% (3634/18947)
通常使うのは常用対数なのでそれでお答えします 10を0乗すれば1になります 10を1乗すれば10 10を2乗すれば100 このようにある数nを表すのに10を何乗すればいいかを10を底としたnの対数といいます 単にnの対数といいます たとえば2の対数は0.3010です 10を0.3010乗すると2になります 実際には端数が沢山付くのですが実用上は0.3010 対数の良いところはかけ算を足し算に置き換えられることです 10の対数は1です 100の対数は2です 10×10は1+1に置き換えることが出来ます これは複雑な計算に威力を発揮します 計算尺の目盛りは対数目盛になっているのです
お礼
丁寧な回答ありがとうございます。 O(log n)の考え方についてもよろしければ教えていただけないでしょうか。