Zufällige Auswahl


14

Der randomisierte Auswahlalgorithmus lautet wie folgt:

Eingabe: Ein Array aus (der Einfachheit halber eindeutigen) Zahlen und einer ZahlAnk[n]

Ausgabe: Das Element "Rang " von (dh das Element in Position wenn sortiert wurde)kAkA

Methode:

  • Wenn es ein Element in , geben Sie es zurückA
  • Wählen Sie ein Element (den "Pivot") gleichmäßig nach dem Zufallsprinzip ausp
  • Berechnen Sie die Mengen undL={einEIN:ein<p}R={einEIN:ein>p}
  • Wenn|L|k , gebe das Element Rang von L zurück .kL
  • Andernfalls geben Sie den Rang Element von Rk-|L|R

Mir wurde folgende frage gestellt:

Nehmen wir an, dass , so dass Sie für den Median suchen und lassen & agr; & egr ; ( 1 / 2 , 1 ) eine Konstante. Wie groß ist die Wahrscheinlichkeit, dass die Menge mit dem Median beim ersten rekursiven Aufruf höchstens α n beträgt ?k=n/2α(1/2,1)αn

Mir wurde gesagt, dass die Antwort , mit der Begründung "Der ausgewählte Drehpunkt sollte zwischen 1 & agr; und & agr ; mal dem ursprünglichen Array liegen".2α-11-αα

Warum? Als ist jedes Element, das als Drehpunkt gewählt wird, entweder größer oder kleiner als mehr als die Hälfte der ursprünglichen Elemente. Der Median liegt immer in der größeren Unteranordnung, da die Elemente in der unterteilten Unteranordnung immer kleiner als der Drehpunkt sind.α(0,5,1)

Wenn der Drehpunkt in der ersten Hälfte des ursprünglichen Arrays liegt (weniger als die Hälfte davon), befindet sich der Median mit Sicherheit in der zweiten größeren Hälfte, da er sich in der mittleren Position des Arrays befinden muss, sobald der Median gefunden wurde Alles vor dem Pivot ist kleiner als oben angegeben.

Wenn der Drehpunkt in der zweiten Hälfte des ursprünglichen Arrays liegt (mehr als die Hälfte der Elemente), wird der Median aus dem gleichen Grund sicherlich die erste größere Hälfte sein, bevor der Drehpunkt als kleiner betrachtet wird.

Beispiel:

3 4 5 8 7 9 2 1 6 10

Der Median ist 5.

Angenommen, der gewählte Drehpunkt ist 2. Nach der ersten Iteration lautet er also:

1 2 .... größerer Teil ....

Nur 1und 2werden nach der ersten Iteration getauscht. Nummer 5 (der Median) befindet sich noch in der ersten größeren Hälfte (entsprechend dem Drehpunkt 2). Der Punkt ist, dass der Median immer auf der größeren Hälfte liegt. Wie kann er eine Chance haben, in einem kleineren Subarray zu bleiben?


Wir haben nicht in Ihrer Vorlesung gesessen, erklären Sie die Methode.
Raphael

.5

Es ist ein Auswahlalgorithmus unter Verwendung einer randomisierten Methode im Gegensatz zu einer deterministischen Methode.
Amumu

Es gibt viele Möglichkeiten, ein Element zufällig auszuwählen.
Raphael

2
@ Amumu: Ich habe es bearbeitet, um den Algorithmus zu beschreiben. In einem solchen Forum wird nicht jeder wissen, wovon Sie sprechen, und es gibt einen ganz anderen randomisierten Ansatz für die Auswahl, der einfacher zu analysieren ist.
Louis

Antworten:


12

nαn(1-α)n(1-α)nα>1/22-2α1-2+2α=2α-1


Danke für die Antwort. Ich habe noch ein paar Dinge unklar. Was hat also α> 1/2 mit disjunkten Mengen zu tun? Ich dachte, wenn wir immer disjunkte Mengen mit dieser Methode unabhängig von der Subarray-Größe haben.
Amumu

1-α<1/2(1-α)n<n-(1-α)n

Nur eine letzte Sache: Was hat ein schlechter / guter Pivot damit zu tun? Soweit ich weiß, liegt ein guter Pivot im Allgemeinen im Bereich von 25 bis 75 (wodurch die ursprünglichen Arrays in 25 bis 75% aufgeteilt werden), und der schlechte Pivot liegt außerhalb dieses Bereichs, und der schlechtere befindet sich normalerweise am Anfang oder Ende des Originals Array. Aber dieses?
Amumu

2
αnα=3/4Ö()α
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.