この歩数の問題について質問があります。私は基本的な考えを持っていると思いますが、数学を紙にまっすぐにするのに苦労しています。最初に擬似コード:
for i = 1 to n
x = x + 1
j = n
while (j>1)
j = j/2
と私の解釈:
n / 2 + 1
n / 2
n / 2
n / 2 <-4行目の合計の上部(whileループ)
Σlogn+2
i = 1 <-4行目の合計の下部(whileループ)
n / 2 <-5行目の合計の上部(whileループの本体)
Σlogn+1
i = 1 <-5行目の合計の下部(whileループの本体)
したがって、ステップ数の最初の3行は見た目が悪くありませんが、ループ内の2つの合計は少し注意が必要です。したがって、最初の1つのlogn + 2については、2つのステップに分割できます。
n / 2
Σ2
i = 1
と
n / 2
Σlogn
i = 1
だから私はn/2ではなくnの直線和を扱うことに慣れています。しかし、私はそれに簡単なショットを与えます。
2 *((n ^ 2 + n)/ 2)または、この分数をドロップして、まっすぐにします:n ^ 2+n。
次に、lognピースの場合:
logn *((n ^ 2 + n)/ 2)=?今、私はここで本当によくわかりません。これがまったく単純化するかどうかさえわかりません。誰かがこれについて何か提案があれば私はそれを感謝します、しかし私がそこに得たものはこの半分のためのものだと思います。したがって、2つを組み合わせて、擬似コードの最初の合計4行目の最終的な答えを取得します。
logn *(n ^ 2 + n)/ 2 + n ^ 2 + n
そして、2回目の合計では、次のようになると思います。
logn * n ^ 2 + n
(上記ですでに完了したものから少し借りることができます。2*(n ^ 2 + n)/ 2の部分を削除するだけで、代わりに2セットの半分を組み合わせて1つのn^を作成します。 2 + nそれが理にかなっているとしたら?
完全に紛失した場合はお知らせください。ありがとうございました!!