質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

Q&A

解決済

3回答

7298閲覧

オーダー記法の証明について

BitCoin

総合スコア53

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

0グッド

0クリップ

投稿2018/05/19 14:10

関数 f(n) を f(n) = 2 n^2 + 10n と定義する.

(1) f(n) が2次のオーダー O(n^2) であることを証明せよ.

と問題があり回答が
ある正整数以上の正整数 n で常に f(n) ≦ c n^2 となる,正実数 c を見つける.
正整数 n について常に n ≦ n^2 だから,f(n) = 2 n^2 + 10n ≦ (2+10) n^2.
よって,c=12 とおけば,n≧0 で常に f(n) ≦ c n^2.
とあるのですが、
いきなり,f(n) = 2 n^2 + 10n ≦ (2+10) n^2.となる過程がよくわかりません。

Cがc=12 とおけば,n≧0 で常に f(n) ≦ c n^2.となる意味もよくわかりません。
どなたかお教授ください

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

普通に数学の問題です。

Cを12としていますが、別に100でも問題はありません。nが自然数であるならばf(n) <= 100 * n * nですから。

この条件を満たすならばCはなんでも良いのです。そして、これ自体がオーダーの定義です。f(n)はO(n^3)でもあり、O(n^4)でもあります。

投稿2018/05/19 14:28

HogeAnimalLover

総合スコア4830

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

BitCoin

2018/05/19 14:33

Cの意味が分かりました。ありがとうございます
guest

0

コメント

関数 f(n)は正の整数nに対して定義されてるんですかね。もし正の実数に対して定義されているのであれば、nを正整数と置いているその回答はマズいっすね。


回答

10 n ≦ 10 n^2の両辺に2 n^2を足すと

2 n^2 + 10 n ≦ 2 n^2 + 10 n^2 = (10 + 2) n ^2

左辺はf(n)そのものなので、正整数nに対して、

f(n) ≦ (10+2) n^2 = 12 n^2

が成り立つ。

Cがc=12 とおけば,n≧0 で常に f(n) ≦ c n^2.となる意味もよくわかりません。

これはオーダーの定義に立ち返りませう。

投稿2018/05/19 14:25

tachikoma

総合スコア3601

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

BitCoin

2018/05/19 14:32

うまいことf(n)=<12n^2としたわけですね 分かりやすかったです、冒頭でおっしゃった もし正の実数に対して定義されているのであれば、nを正整数と置いているその回答はマズいっすね。 これはどういうことでしょうか?
tachikoma

2018/05/19 14:45 編集

n=1,2...等の正の整数については上から押さえられることを示していますが、n=1.2, √2, ...などの実数に対してC n^2で上から押さえられることを証明していません。オーダーの定義から、もし仮に関数f(n)が実数で定義されていれば、ある実数Nよりも大きな全てのnについて上から押さえられることを示さなくてはなりません。もっとも、この場合証明の中にある"正整数n"を”正実数n"と書き換えれば済む話ですが。
BitCoin

2018/05/19 14:55

なるほど、正整数なら12ですが正実数ならCがどのような数になればいいのでしょうか?
tachikoma

2018/05/19 15:01

cは正実数 c としているので、12以上の実数ならokですよ。
BitCoin

2018/05/19 15:05

ありがとうございます
guest

0

いきなり,f(n) = 2 n^2 + 10n ≦ (2+10) n^2.となる過程がよくわかりません。

すでに上で示してあるように正整数 n について常に n ≦ n^2 だから、2 n^2 + 10n ≦ 2 n^2 + 10n^2 = 12n^2です。

投稿2018/05/19 14:13

maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

BitCoin

2018/05/19 14:21

なるほど、2 n^2 + 10n ≦ (2+10) n^2の過程は分かりました。 問題の定数Cなのですが この証明はいってみればべき乗数が一番大きいもの以外は無視していいことを証明しろということですよね? n ≦ n^2 をつかい2 n^2 + 10n ≦ (2+10) n^2となりC=12となるのはわかったのですが Cがなぜでできたのか?正実数 cを見つければ証明可能なのがよくわかりません。 なぜですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問