n log nステップをとるアルゴリズム(ヒープソートなど)があり、ステップがlog n時間かかる場合(0からn-1の範囲の「大きな」整数の比較/交換など)、プロセス全体。
言うまでもなく「n(log n)(log n)」と言えますが、これを「nlogn」に単純化できないことを納得させるのに苦労しています。同時に、私は自分ができると主張する本能を正当化するのに苦労しています。
私の本能はこれについてまったく間違っていますか?
編集
問題を複雑にすることを避けるための私の単純な例が問題を複雑にしているようです。しかたがない。
質問の本当の理由は、私はしばしば既知の複雑さを持つ標準アルゴリズムを持っていますが、異なる基礎となるコンテナーを使用して実装されているため、個々のステップはO(1)ではなくO(log n)であるということです。たとえば、Hopcroftsオートマトン最小化アルゴリズムはO(n log n)ですが、状態、遷移、および中間結果にバイナリツリーコンテナを使用し始めると、ステップ自体がO(log n)になります-O(n log n)はO(1)アクセスの仮定が無効であるため、無効になりました。
それでも、人々はn個の状態とm個の遷移があると主張しますが、遷移注釈の数が一定であり、オートマトンが多かれ少なかれ決定論的であると仮定すると、nとmはオートマトンに対して線形に関連する傾向があります。
私は過去にこれについてあまり心配していませんでした-私が扱っているケースはそれほど大きくありません。しかし、まあ、私はオートマトンコードの主要なリファクタリングを行っており、いくつかの主要なアルゴリズムについては、計算を適切に行う方がよいと思いました。
編集
また、「n(log n)(log n)」が間違っていると私はますます確信しています。
aがO(b log b)であり、bがO(log c)である場合、cに関してaは何ですか?