漸近表記の使用におけるエラー


10

次の再発の証拠で何が問題なのかを理解しようとしています

T(N)≤2(C⌊N

T(n)=2T(⌊n2⌋)+n
T(n)≤2(c⌊n2⌋)+n≤cn+n=n(c+1)=O(n)

という帰納的仮説があるため、ドキュメントには間違っていると記載されてい ます。

T(n)≤cn

2
この形式の繰り返しは、マスター定理を使用して解決することもできます。
— Juho

2
@蘭:マスター定理はこの質問にふさわしいタグではないと思います。問題はそれをどのように解決するかではなく、特定の議論の誤りを指摘することです。その上、マスター定理はおそらく具体的すぎて、おそらく独自のタグを持つに値しません。一般的に、可能な答えではなく質問に基づいてタグ付けする必要があります。たとえば、このakra-bazziにタグを付けますか?
— Aryabhata

「次の証明の何が問題になっていますか」-証明が表示されません。間違いを見つけるために、完全な証明を書き留める(つまり、帰納法を明示する)ことがしばしば役立ちます。
— ラファエル

回答:


12

最終的な目標がを証明することであるとしましょう。導入仮説から始めます。T(n)=O(n)

I < NT(i)≤ci for all。i<n

証明を完了するには、も示す必要があります。T(n)≤cn

ただし、推定できるのはであり、証明を完了するのに役立ちません。(ほぼ)すべてに対して1つの定数が必要です。したがって、結論を出すことはできず、は証明されません。c n T (n )= O(n )T(n)≤(c+1)ncnT(n)=O(n)

結果と証明プロセスの間で混乱していることに注意してください。そしてもう1つ、は実際にはこの場合のなので、適切な帰納法の仮説を検討してそれを証明することができます。Θ (n log n )T(n)Θ(nlog⁡n)


c '= c + 1を置き換えると、変更されますか?
— Erb

@erb:いいえ、ありません。選択した定数について証明する必要があります。置き換えると、最終的に (または)が得られ、結果は同じになります。T (n )≤ (c ′ + 1 )n T (n )≤ (c + 2 )nc′=c+1T(n)≤(c′+1)nT(n)≤(c+2)n
— パッド

8

いくつかの手順を省略しました。であることを帰納法で証明しようとしているようで、証明は次のようになります。T(n)=O(n)

に対してと仮定します。これは、一部のを意味し。その後、なので、。K < N T (K )≤ CT(k)=O(k)k<nC T (N )= 2 T (⌊ N / 2 ⌋ )+ N ≤ 2 C ⌊ N / 2 ⌋ + N ≤ (C + 1 )T(k)≤ckcT (n )= O (n )T(n)=2T(⌊n/2⌋)+n≤2c⌊n/2⌋+n≤(c+1)nT(n)=O(n)

この証明は最初から正しくありません。「 for」は意味がありません。ビッグオーは漸近的な概念です:は、定数としきい値Nが存在することを意味し、ます。そして最後に、「」と結論付けることはできません。これは、関数全体についての何かを示しており、特定の値についてのみ証明したためです。K < N T (K )= O (K )C ∀ K ≥ N 、T (K )≤ CT(k)=O(k)k<nT(k)=O(k)c T (n )= O (n )T T (n )∀k≥N,T(k)≤ckT(n)=O(n)TT(n)

意味を明確にする必要があります。おそらくあなたの証明は行くでしょう:O

すべてのと仮定します。次に、です。K < N T (N )= 2 T (⌊ N / 2 ⌋ )+ N ≤ 2 C ⌊ N / 2 ⌋ + N ≤ (C + 1 )T(k)≤ckk<nT(n)=2T(⌊n/2⌋)+n≤2c⌊n/2⌋+n≤(c+1)n

これは帰納的なステップを証明していませんから始め、、ことを証明しました。これは弱い境界です。これが何を意味するか見てください:はがの成長率の限界であることを意味し。しかし、が大きくなると、速度も大きくなります。それは直線的な成長ではありません!k = n T (k )≤ (c + 1 )T(k)≤ckk=nT (K )≤ CT(k)≤(c+1)kc T c kT(k)≤ckcTck

よく見ると、 2倍になるたびに、レートがずつ増加します。したがって、非公式に、場合、です。つまり、です。c1km=2pkcm=ck+pck=c0log2⁡k

これは正確にすることができます。そのための誘導により証明、。k≥1T(k)≤clog2⁡(k)

回帰関係は、データを線形時間で2つの等しい部分に分割する分割統治アルゴリズムの典型です。そのようなアルゴリズムは、時間で動作します(はありません)。Θ(nlog(n))O(n)

期待される結果が何であるかを確認するには、マスター定理に対して反復関係をチェックします。除算はあり、実行される追加の作業はです。なので、これは増加がである2番目のケースです。2T(n/2)nlog2⁡(2)=1Θ(nlog⁡(n))


7

おそらく私のコメントをより詳細に説明することによってのみ、すでに与えられた答えを拡張しています。

推測は明らかに困難で面倒な場合があるため、より良い方法が存在する場合があります。そのような方法の1つがマスター定理です。繰り返しはの形式になりました。ここでとは定数で、は関数です。この場合、はを意味すると解釈できることに注意してください。厳密に言うと、ため、反復は明確に定義されていない可能性があります。T(n)=aT(n/b)+f(n)a≥1b>1f(n)⌊n/2⌋n/2n/2整数ではない可能性があります。ただし、再発の漸近的な振る舞いには影響しないため、これは許可されています。したがって、床や天井を落とすと便利なことがよくあります。これの正式な証明は少々退屈ですが、興味のある読者は、例えばCormenらからそれを見つけることができます。本。

この場合、、、ます。これは、ます。マスター定理の2番目のケースは、から適用され、解ます。b = 2 f (n )= Θ (n )n log b a = n log 2 2 = n f (n )= Θ (n )T (n )= Θ (n log n )a=2b=2f(n)=Θ(n)nlogb⁡a=nlog2⁡2=nf(n)=Θ(n)T(n)=Θ(nlog⁡n)


ありがとう!「床と天井を落とすこと」は、一般的に行われると仮定することに対応することに留意されたい。基本的な観察は、非減少関数の場合、サブシーケンスの漸近的成長はシーケンス全体の漸近的成長に等しいということです。n=2k
— ラファエル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.