2つの再帰呼び出しによる再帰関係の解決


10

私はそれは決してしないだろうという条件の下でクイックソートの最悪のランタイムを勉強して、非常の定義を変更するためのアンバランスパーティションを非常に。

これを行うために、私は自分自身に、ランタイム何質問をクイックソート常にそうになりますが、いくつかの画分にパーティションに起こるよう要素は左側のパーティションにあり、は右側のパーティションにあります(要素、ピボット、中央に残ります)。T(n,p)0<p≤12⌊p(n−1)⌋⌈(1−p)(n−1)⌉1

が最悪の場合の上限を与えることを確認することは難しくありません。ここで、は最大不均衡許容パーティションです。フラクションパーティションはよりバランスがとれており、実行時間が短くなります。端数許可されていません。T(n,p)p>p<p

が最良のケースであり、がクイックソートの最悪のケースであることは明らかです。どちらにも、あらゆる教育リソースで見られる簡単な再発関係があります。しかし、私はを一般的にどのように研究するかについての手がかりはありません。明らかな関係は次のとおりです。T(n,12)T(n,0)T(n,p)

T(n,p)=n+T(⌊p(n−1)⌋,p)+T(⌈(1−p)(n−1)⌉,p)

ここで行き詰まっています。私は周りを検索してみましたが、分割統治アルゴリズムについて理解できるすべての文献は、文字通り「分割」を行い、パーティションのサイズが常に等しいという事実を使用して分析を「だまし」、用語を1回にマージしました。絶え間ない。

2つの再帰呼び出しを処理する方法がわかりません。丸めを削除しても安全かどうかはわかりません。これは分析的に解決することは可能ですか?はいの場合、どのように?

PS:私は漸近論には興味がありません(定数に対してを示すのは簡単です)。が小さくなるにつれて、クイックソートがどのくらい遅くなるかに興味があります。たとえば、の比率に興味があります。p p T (n 、0.25 )Θ(nlog⁡n)ppT(n,0.25)T(n,0.5)

PPS:学部生として、明白なことを長くしすぎたり、説明が不十分であったりすれば、すさまじいことをお詫びします。ここで他のSEサイトほど見下されているかどうかはわかりませんが、これは宿題ではなく個人的な関心事であることに注意します。

回答:


9

あなたは、言及したようAkra-Bazzi定理ショー再発を解決することをあるすべてのための。ただし、これはへの依存の性質を明らかにしません。後者を決定するには、再帰ツリーアプローチを使用できます。O (N ログN )P ∈ (0 、1 )PT(n,p)O(nlog⁡n)p∈(0,1)p

再帰ツリーのルートには、間隔ます。その2つの子は、間隔とで、これらの合計の長さは再びです。これらの各ノードには2つの子があります(が十分に大きいと想定)。簡単にするために、丸め誤差は無視します。つまり、は整数であると想定します。これは単なる技術であり、心配する必要はありません。ノードの長さが最大、プロセスを停止します。アルゴリズムの複雑さは、ツリー内の区間の全長に比例します。とき、葉{ 1 、… 、p n } { p n + 1 、… 、n } n n p n 1 p ≠ 1 / 2{1,…n}{1,…,pn}{pn+1,…,n}nnpn1p≠1/2 (プロセスを停止するノード)には異なる深さがあるため、全体的な複雑さを判断することがさらに困難になります。

ツリーには最大でレベルがあることに注意することで、単純な上限を取得できます。各ノードは、少なくともその親より倍小さくなっています。分析と同様に、任意のレベルの間隔の合計長は最大でであり、上限を取得します実行時間。以来、と、小さな場合、これを書くことができ。1 - PのP = 1 / 2 N O (N ログ1 - P(1 / N ))ログイン1 - P(1 / N )= ログN /ログ(1 - P )− 1ログ(1 − p )− 1log1−p⁡(1/n)1−pp=1/2nO(nlog1−p⁡(1/n))log1−p⁡(1/n)=log⁡n/log⁡(1−p)−1p O (n log n / p )log⁡(1−p)−1=−log⁡(1−p)=p±O(p2)pO(nlog⁡n/p)

これはより正確な計算です。レベル考えます。短い間隔に達したときにプロセスを停止しないと仮定します。ステップを取ることでランダムな頂点を生成できます。各ステップでは、確率で左(たとえば)に、確率で右(たとえば)に進みます。左のステップを実行するたびに、間隔の長さのログはだけ減少し、右のステップを実行するたびにだけ減少し。頂点は、ログの実際のツリー内にあり、長さが最大で減少し。レベルの区間の合計重みttp1−p−log⁡p−log⁡(1−p)log⁡ntツリーの確率は、このプロセスに従って生成された頂点が最大で減少に対応する確率とまったく同じです。場合すなわち、に等しい分布である確率ととの確率、及び独立しており、次いでレベル総重みはです。超定数を、ランダム変数概ね通常、平均して分布しているの直線と分散log⁡nD−log⁡pp−log⁡(1−p)1−pX1,…,Xt∼DtTPr[X1+⋯+Xt≤log⁡n]t [ − p log p − (1 − p )log (1 − p )] p − (1 − p )log (X1+⋯+XtT T [ - P ログP - (1 - P )ログ(1 - P )] T ≤ (ログn )/ 2 1 t [ − p ログ[−plog⁡p−(1−p)log⁡(1−p)]tt、つまり、が場合、確率はに非常に近くなりますが、満足と言う、それは非常にゼロに近いであろう。(バイナリエントロピー関数として知られてい定義すると、実行時間は(ようにで均一)。我々は我々の以前の推定値がタイトではなかった、となります。t[−plog⁡p−(1−p)log⁡(1−p)]t≤(log⁡n)/21tH (P )[−plog⁡p−(1−p)log⁡(1−p)]t≥2log⁡nΘ (N ログN / H (P ))P N → ∞ P → 0 時間(h(p)=−plog⁡p−(1−p)log⁡(1−p)Θ(nlog⁡n/h(p))pn→∞p→0h(p)≈−plog⁡p

同じ分析を見る別の方法は、以前のように独立したランダム変数無限シーケンスを持ち、ような最初の時間になるように停止時間を定義することです。。実行時間は比例します。次に、基本的な更新定理はであると述べており、間隔の合計サイズは等しくなり。より正確には、すべての定数について、間隔の合計サイズは。ここで、T T X 1 + ⋯ + X T ≥ ログN N E [ T ] LIM N → ∞ E [ T ] /ログN = 1 / E [ D ] = 1 / H (P )(1 + o (1 ))n ログnX1,X2,…TtX1+⋯+Xt≥log⁡nnE[T]limn→∞E[T]/log⁡n=1/E[D]=1/h(p)、P (1 + α P(N ))N ログN / H (P )α P(N )= o ((1+o(1))nlog⁡n/h(p)p(1+αp(n))nlog⁡n/h(p)ログN 、N α P(N )= O (N - C P)P ∈ (δ 、1 - δ )δ > 0αp(n)=o(n)。基本更新定理の収束は、時間パラメーター(この例ではで指数関数的であるため、多項式、つまりなければなりません。また、収束は、任意のでもおそらく均一です。log⁡nnαp(n)=O(n−Cp)p∈(δ,1−δ)δ>0


、、実行時間に比例する再帰ツリーにおける間隔の全長を要約すると、すべてのために、次の形式のものである:ここでとは同じベースに取られ、依存し、傾向がある関数です。T (n 、p )= (1 + o (1 ))n log npログ

T(n,p)=(1+o(1))nlog⁡nh(p),
h (p )= − p log p − (1 − p )log (1 − p )o (1 )p 0 nlog⁡nh(p)=−plog⁡p−(1−p)log⁡(1−p)o(1)p0n

さらに、および場合、区間の全長がここでと隠された大きなO定数はのみに依存します。特に、すべての定数、 そして収束は多項的に高速です。P ∈ (δ 、1 - δ )T (N 、P )= (1 + O (N - Cのδ))N ログNδ>0p∈(δ,1−δ)Cδ>0δP1、P2LIMN→∞T(N、P1)

T(n,p)=(1+O(n−Cδ))nlog⁡nh(p),
Cδ>0δp1,p2
limn→∞T(n,p1)T(n,p2)=h(p2)h(p1),

迅速な回答をしていただきありがとうございます。要約でを使用したという事実に少し混乱しています。は定数であり、それが無関係であることを意味しませんか?私は書くことにした少しテストプログラムのためにあることを示した、比較分析方法及び0.03の誤差を与えた計算一方との間に。それはかなり大きいようです、またはこれは予想されますか?Θh(p)Θn=100000000000000T(n,0.1)/T(n,0.5)
— orlp 2014年

の定数はで均一です。より正確には、いくつかの定数の場合、各にが存在するため、、。おそらく、固定されたごとにという形式のさらに強力なステートメントを取得でき。ここで、小さなoは(しかし、依存する可能性があります)。は依存すべきではありません。p個のC 、C P NのP N ≥ Nのp個の C N ログN / H (P )≤Θpc,CpNpn≥Npcnlog⁡n/h(p)≤T(n,p)≤Cnlog⁡n/h(p)p n p C pT(n,p)=(1+o(1))Cnlog⁡n/h(p)pnpCp
— Yuval Filmus 2014年

制限への収束は依存するため、本当に良い近似を得るにはを大きくする必要がある場合があり。一方、0.03の相対誤差はそれほど大きく聞こえません。を修正して、実行時間を関数としてプロットし、と比較することができます。log n n p 1 / h (p )log⁡nlog⁡nnp1/h(p)
— Yuval Filmus 2014年

ああごめんなさい、私は0.03の相対誤差を意味していませんが、絶対誤差(2.13222対2.10339)を意味しています。に対する関数としてをプロットすると、4%の相対差が得られ、は 96%になります。、P 1 / H (P )T (10 11、0.05 )* H (0.05 )T (10 11、0.4 )* H (0.4 )T(n,p)p1/h(p)T(1011,0.05)∗h(0.05)T(1011,0.4)∗h(0.4)
— orlp 2014年

1
超定数は、関連する変数(この場合は)に関して無限大になりがちな関数です。と同じです。ω (1 )nω(1)
— Yuval Filmus 2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.