選択と挿入の並べ替えに敵対的な引数を使用するにはどうすればよいですか?


8

選択と挿入の並べ替えの下限を見つけるために必要な敵対的な引数を見つけるように求められました。それへの参照がどこにも見つかりませんでした。

これについてはいくつか疑問があります。私は通常、「アルゴリズム」ではなく特定の「問題」の下限を見つけるために敵対的な議論が使用されることを理解しています。

マージの問題を理解しました。しかし、どのようにして選択および挿入ソート用に作成できますか?


1
ヒント:敵対者がすべてのアルゴリズムよりも既知のアルゴリズムをだますのははるかに簡単です。
ラファエル

@Raphael敵がアルゴリズムを知っているため、アルゴリズムが動作する最悪のケースを知っているので、私はその単純さを知っています。したがって、選択/挿入ソートの場合、複雑度はO(n ^ 2)であり、下限はそれ自体でしょうか?特定のアルゴリズムについて少し混乱しています。下限は、最悪の場合の下限を意味しますか?
user5507 2012

@ user5507:はい、通常、特定のアルゴリズムではなく、問題のクラス全体の下限を証明するために敵対的な議論が行われます。この場合、これらの2つのアルゴリズムの最悪の場合の入力となる敵の戦略を指定する必要があるだけです。
Peter

1
この設定では、「敵対的」は単に「最悪の場合の入力」を意味します。
JeffE 2012

回答:


8

あなたのコメントから、あなたは下限、上限、そして漸近表記の意味を混乱させているようです。たとえば、挿入ソートを使用します。その最良の実行時間はΘ(n)(これは、入力が既にソートされている場合に発生します)。最悪の実行時間はΘ(n2)(これは、入力が逆ソート順の場合に発生します)。したがって、実行時間は次の線形関数の間にあるため、n との二次関数 n、挿入ソートの実行時間は両方とも言える Ω(n) そして O(n2)。この場合、実行時間はであるとは言えないことを理解することが重要ですΩ(n2)。どうして?アルゴリズムを実行させる入力が存在するためO(n)。ただし、最悪の場合の実行時間はΩ(n2)、アルゴリズムを実行させる入力が存在するため、 Ω(n2)。私たちは通常、O ただし、アルゴリズムによって実行される操作の数の上限に関心があるため、最悪の場合の表記法。

ここで、挿入ソートの敵対的な引数について考えてみましょう(同じアイデアを適用して、選択ソートの引数を導出しようとする場合があります)。

挿入ソートアルゴリズムが、敵と呼ばれる対戦相手と対戦する場合を考えます。敵対者の目的は、アルゴリズムによる比較の数を最大化するアルゴリズムの入力Xを提供することです。これは通常、意思決定ツリーのコンテキストで分析されます。決定木は、アルゴリズムが実行できるすべての比較可能なシーケンスを示します。決定木の各内部ノードは、単一の比較を表します。ノードの2つの子は、比較の2つの結果(yes / noまたはtrue / false)を表します。各リーフは可能な出力を表します。ソートアルゴリズムの場合、葉は順列ですキーの。アルゴリズムはルートから始まり、葉までのパスをたどります。各内部ノードでは、実行された比較の答えにより、次にアクセスする必要があるノードがアルゴリズムに通知されます。アルゴリズムが葉に到達すると、対応する順列を出力します。与えられた入力に対するアルゴリズム(決定木として見られる)の実行時間は、ルートから出力リーフまでのパスで行われた比較の数です。さて、敵対者は、挿入ソートを含む比較ベースのソートアルゴリズムに対して機能する単純な戦略を持っています。アルゴリズムが比較を行うときはいつでも、敵対者は可能な限り少ない順列を排除する答えを選択します。

一般的に、 n 要素があります n! 可能な順列、ソートの決定木には少なくとも n! 葉、そしてそれで深さがなければなりません Ω(log(n!))=Ω(nlogn)(スターリングの近似による)。挿入ソートの場合、攻撃者は特定の入力を作成して、対応する決定木に少なくとも次の深さを持たせることができます。Ω(n2)

アルゴリズムは配列を使用します A[1..n] 入力要素を格納し、次の不変式に基づいています。

forループの各反復の開始時に、サブ配列 A[1..j1] 元々の要素で構成されています A[1..j1]、しかしソートされた順序で。

各反復で、 A[1..j1] したがって、すでにソートされた順序であり、アルゴリズムは A[j] の値を比較することにより、それを最終的な適切な場所に挿入します A[j] の要素の値に対して A[1..j1]、 から始まる A[j1] そしてに戻る A[j2] などまで A[j]比較ではもはや最大のものではありません。の要素A[j+1..n] (ソート順に関して)不明な状態にあり、後の反復で処理されます。

これが敵の戦略です。アルゴリズムが挿入によって機能することを知っているA[j] 要素を移動することにより、適切な場所に A[1..j1]の場合、明らかな戦略は、 j-番目の反復では、対応するために移動する必要がある要素の数 A[j]。これは、逆にソートされた順序になるように入力を注意深く選択することで簡単に実現できます。実際、この場合、各反復で移動する必要がある要素の数はj1。これはΩ(n2) 最悪の場合の実行時間(対応する算術級数によって決定)。


9
tl; dr:敵の戦略は、逆ソートされた配列を入力として提示してから、どこかのビーチでくつろぎ、ドリンクを飲み、サーフィンを学ぶことです。
JeffE 2012
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.