Ich werde kurz eine Skizze eines gegnerischen Arguments skizzieren.
Stellen Sie sich Ihren Auswahlalgorithmus vor, der gegen einen Gegner spielt, den wir als Gegner bezeichnen. Das Ziel des Gegners besteht darin, eine Eingabe X. für Ihren Algorithmus bereitzustellen , die die Anzahl der von Ihrem Algorithmus durchgeführten Vergleichsoperationen maximiert. In der Tat kann Ihr Algorithmus als Vergleichsbaum angesehen werden, in dem ein Pfad einer Teilreihenfolge entspricht. Wenn der Algorithmus den Gegner nach einem Paar ( x , y) von Elementen fragt , gibt der Gegner entweder x < y oder y< x . Die Antworten des Gegners können niemals früheren Ergebnissen widersprechen.
Angenommen, das k te größte Element ist x∗ : Unter Berücksichtigung der Teilreihenfolge, die einem Blatt des Vergleichsbaums zugeordnet ist, muss x∗ mit jedem anderen Element vergleichbar sein, damit der Algorithmus korrekt ist, so dass der Algorithmus haben muss machte mindestens einen Vergleich ( y, z) ∀ y≠ x∗ dessen Ergebnis entweder y< z≤ x∗ oder x∗≤ z< y . Nennen Sie einen solchen Vergleich entscheidend für ein Element y. Offensichtlich möchte der Gegner die Anzahl der nicht entscheidenden Vergleiche maximieren, die von Ihrem Algorithmus durchgeführt werden.
Sei L. die Menge der k - 1 größten Elemente; Ihr Algorithmus muss alle Elemente in L. und auch das größte Element in X.∖ L. , dh x∗ , korrekt identifizieren . Beachten Sie, dass jedes Element in X.∖ L. mindestens einen entscheidenden Vergleich verloren hat. Jetzt hat der Gegner eine Strategie, die jedes der k - 1 Elemente in L.zwingt, mindestens ⌈ lgnk - 1⌉Vergleiche, von denen keiner fürX.∖ L.. Addiert man die verbleibendenn - kentscheidenden Vergleiche fürX.∖ L.so erhält man die Untergrenze. Für Details lesen Sie bitte die folgenden ausgezeichnetenNotizen vonJeff Erikson.
crucial comparison for $y$