この人頭いいなと思ったエピソード

挿入ソートとマージソートの問題を解いているのですが、
途中で行き詰ってしまいました。

(問題文)
サイズnの入力に対して、挿入ソートの実行には8n~2ステップかかり、
マージソートの実行には64nlnnステップかかる。
挿入ソートがマージソートに勝るnの値を求めよ。
補足:ln=eを底とするlog

(挿入ソートがマージソートに勝る=挿入ソートがマージソートより実行時間が早い)
8n~2 <= 64nlnn
8lnn=n
e~n=n~8

こういう感じで自分なりに考えてみたのですが、nの値をどのように出して良いのかわからず困っています。
どなたかご教授いただける方いましたらよろしくお願いします。

A 回答 (3件)

数学の方で質問を見てどういう背景かと思いましたが、こういう問題だったのですね。


問題からすると自然対数(ln)ではなく2を底とする対数(lg)と考えた方が自然なのですけど、自然対数で間違いないのでしょうか。

lgなら
8*n*n<=64*n*lg(n)
から
1/8<=lg(n)/n
だから、右辺を評価して
2<=n<=43

lnなら
1/8<=ln(n)/n
だから、数学の方の質問に回答されているように
2<=n<=26
です。

lgでもlnでも割り切れる計算にはならないので、グラフを書いて範囲を絞り、整数nについて評価して範囲を確定するしかないですね。
    • good
    • 0
この回答へのお礼

非常にわかりやすい回答ありがとうございました。
先日、授業で解答を得たところrinkunさんの解答とほぼ同じでした。
参考になりました。

お礼日時:2008/10/21 23:19

挿入ソートは 計算量(オーダ)がO(N^2)のアルゴリズム,マージソートは O(N×log2N)のアルゴリズムとして知られていますから,Nが大きくなるほどマージソートが速い。


ということで,挿入ソートの方が勝る例があり得るなら,Nがある値以下のときということになります。

8lnN=N,という式をどう解くか,というのは,コンピューター分野にこだわらない,数学の問題だと思います。私はてんで数学音痴なので,それをどう解くのか,きれいに求める方法は存在しないのか,さっぱり分かりません。

数学カテゴリの方で助力を仰いでみてはいかがでしょう。
(この問題,私も興味があります。解けるのなら,私にも教えていただきたいなあ)
    • good
    • 0

その式が正しいなら, そこから先の「きれいに求める方法」は存在しないです. n にあたりをつけてなんとか計算していくしかないと思う

.
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!