2

漸近記法についてテストしたところ、次の質問がありました。

次の点を考慮してください。

O(o(f(n)) = o(f(n))

  1. 漸近記法の規則を使用して、ステートメントの意味を言葉で書きます。
  2. 陳述は真か偽か?正当化します。

私はそれを間違えました(私が書いたことを正確に覚えていません)が、次のようなものだと思います:

任意の関数 g(n) = o(f(n)) に対して、h(n) = O(f(n)) となる関数 h(n) = o(f(n)) が存在します。

それが正しいか?

(2)については、よくわかりません。誰かがこれで私を助けることができますか?

前もって感謝します。

4

3 に答える 3

1

彼らは Big O と little O の漸近表記法との関係について質問しようとしていたと思います。

A) Little O 境界関数の Big O 境界は、その関数の Little O 境界に縮小/実装します。

B) そうです。Big O は、x >= x0 に対して f(n) <= M * g(n) となる M と x0 が存在することを規定しているという点で、「厳密な」範囲はそれほど大きくありませんが、Little O は、すべての正の M に対してそれを規定しています。 、f(n)がM * g(n)によって上限されるようなx0があります。

したがって、大きな O の「M」は、小さな O の「すべての M」のサブセットであり、O(o(f(n)) は o(f(n)) と同等です。

私の弱いアスキーではなく、実際の数学については、ウィキペディアのページを参照してください

于 2011-07-05T04:21:08.007 に答える
0

これが少し余談のように思える場合は申し訳ありませんが、かなり大きな表記の乱用であるため、(アレクサンドル C がほのめかしたように) 危険な質問だと思います。

big-O 表記法が一般的に (特にコンピューター サイエンスのクラスで) 教えられる方法は、あたかも O(f(n)) が関数であるかのようです。「n = O(n)」と「2n = O(n)」はどちらも真ですが、「n = 2n」はそうではないため、これは警鐘を鳴らすはずです。「f(n) は g(n) の Big-O である」と言いたい場合、技術的には「f(n) = O(g(n))」と言うべきではなく、「f(n) )O(g(n))" の要素です。前者は便利な略記です。

実際の質問に戻ると、O(o(f(n))) は実際にはあまり意味がありません (または、少なくとも関数セットの big-O の正式な定義を見たことがありません)。しかし、それを解釈する論理的な方法は、g(n) = o(f(n)) を使用して、enjay の回答に従っていると思います。

于 2011-07-11T01:48:13.223 に答える
0

平易な英語での意味: 厳密に f(n) よりも大きい関数の上限は厳密に f(n) よりも大きい ステートメントは次のように書くことができます: For any function g(n)=o(f(n) ) h(n)=O(g(n)) が存在し、h(n) が o(f(n)) => O(g(n)) = o(f(n)) => O であることを意味する(o(f(n))) = o(f(n)) はい、ステートメントは正しいです。(もちろん、上記のステートメントはすべての正しい定数と「厳密に大きい」の使用を前提としています。読みやすさと理解です。それは「厳密な上限」でなければなりません)

于 2011-07-05T04:29:44.440 に答える