質問
私は読んでいますで、Big $ O $ 表記の説明に少し困惑しています。それは書き込みます:
$ O(g(n))= $ {span class="math-container"> $ f(n)$ :そこ存在する正の定数 $ c $ と $ n_0 $ すべての $ n> n_0 $ 。
のすべての$ 0 \ leq f(n)\ leq c * g(n)$ 。
私の理解方法は、 $ c * g(n)$ を表す $ c $ 逓倍 $ g(n)$ $ 。この場合、上記の式は時間を指定しています。 $ c * g(n)$ が $ f(n)$ ?または私は間違っています、そしてこれは私が理解していないいくつかの表記ですか?時間の複雑さについての私の理解は非常に初歩的であるので、これが私の部分の愚かな間違いであれば私を許しなさい。
解決
f(n)
ではありません。 Bachmann-Landau表記は、単に機能の成長率を比較するための便利な方法です。それはについて何も言わないものはを意味するものであり、私たちは1894年に彼がそれを思い付くときにBachmannがコンピュータについて考えていなかったことを非常に確信しています。
あなたがそれらの機能に割り当てる意味はあなた次第です。たとえば、比較ベースのソート解析アルゴリズムを分析するとき、通常、 $ n $ がコレクション内の要素数と $ f(n)$ 、またはスワップ数、または比較数とスワップ数。
これのすべてが機械モデルまたはコストモデルに対して常に相対的なものであることも注意してください。
非常に簡単な例として、リストをコピーするためのアルゴリズム最悪のステップステップの複雑さが何であるかを尋ねると、 $ o(n)$ 。しかし実際には、正解答は「マシンモデルを指定していないので、私はあなたに言うことができません」です。たとえば、チューリングマシンでは、リストをコピーすることは $ O(n ^ 2)$ です。コピーされている各要素には、TMの先頭にあります。さらに、さらに、次の要素を書き込むためにリストの最後に達するようにさらに駆動するために。
他のヒント
アルゴリズムの走行時間が $ O(g(n))$ にあると言って、あなたが指摘したように、上限だけが与えられます。さらに、上限は、定数 $ c $ と $ n_0 $ が与えられます。 そうはい、それは実行時間に関するかなり弱い情報です。
未指定の定数 $ c $ は、ungorithmの基本操作の実際のコストに関する情報を含めることができます。しかし、それでも境界がある時間を犠牲にすることが知られています。指定されていない定数 $ n_0 $ $ は、与えられたバインドとは、入力の大きなサイズ(または任意のパラメータ "$ n $ < / SPAN>が表現している)。