Angesichts einer unortigen Liste von $ N $ -Plits, wie viele zufällige Vergleiche im Durchschnitt benötigt werden, um die Liste sortieren zu können?
-
28-09-2020 - |
Frage
Es gibt eine unortige Liste von $ N $ Elemente $ x_1, \ ldots, x_n $ . Bis Sie die Liste sortieren, erhalten Sie einen der $ {n \ wähle 2} $ Mögliche binäre Vergleiche gleichmäßig (mit Austausch) einheitlich (mit Austausch).
Wie viele dieser zufälligen Vergleiche müssen Sie im Durchschnitt die Liste sortieren?
Einige Follow-up-Fragen:
- .
- Wie sieht die Verteilung für die Anzahl der benötigten Vergleiche aus?
- Wie lautet die Antwort, wenn Sie $ K $ -Ang-Vergleiche anstelle von Binärnen verwenden.
- Was ist die Antwort, wenn die Vergleiche ohne Ersatz vorgenommen werden (d. H. Sie erhalten nicht zweimal den gleichen Vergleich)?
- Angesichts eines Satzes von Vergleiche, wie kann man überprüfen, ob die Liste sortierbar ist? Ich bin fast sicher, dass die Antwort eine DAG und eine topologische Sorte erstellt, aber ich möchte nur bestätigen.
Eine exakte ISH-Antwort wäre schön, aber ein großer
Lösung
asympotisch, Sie benötigen $ \ theta (n ^ 2 \ log n) $ Vergleiche.
Angenommen, $ x _ {(1)}, \ dots, x _ {(n)} $ Bezeichnet die Elemente in sortierter Reihenfolge. Wenn Sie dann keinen Vergleich zwischen $ X _ {(1)} $ und $ x _ {(2)} sehen $ , Sie haben keinen Weg, um zu sagen, welche Reihenfolge sie erscheinen sollten. Gleiches gilt für jedes Paar benachbarter Element. Es gibt also
Die anschließenden Fragen kochen auf Fakten über das Coupon Collector-Problem, und Sie können die Schwanzgrenze auf Wikipedia verwenden, um die Informationen über die Verteilung zu binden.
Wenn Vergleiche ohne Ersatz ausgewählt werden, benötigen Sie
Ein vernünftiger Weg, um zu prüfen, ob die Liste sortierbar ist, ist die topologische Sortierung, um zu überprüfen, ob Sie einen Vergleich zwischen jedem Paar benachbarter Elemente in der topologisch sortierten Reihenfolge beobachtet haben.