Betrachten Sie die Aufgabe, die Top-k-Elemente in einer Menge von N unabhängigen und identisch verteilten Gleitkommawerten zu finden. Durch die Verwendung einer Prioritätswarteschlange/Heap, können wir einmal über alle N Elemente iterieren und eine Top-k durch die folgenden Operationen eingestellt halten:Durchschnittliche Zeitkomplexität zum Auffinden von Top-K-Elementen
, wenn das Element x „schlechter“ als der Kopf des Heap: Verwerfungs x ⇒ Komplexität O (1)
wenn das Element x ist "besser" als der Kopf des heap: den Kopf entfernen, und legen x ⇒ Komplexität O (log k)
die ungünstigste Zeitkomplexität von Dieser Ansatz ist offensichtlich O (N log k), aber was ist mit der durchschnittlichen Zeitkomplexität? Aufgrund der iid-Annahme, die Wahrscheinlichkeit der O (1) Betrieb erhöht sich im Laufe der Zeit, und wir haben nur selten die teure O durchführen (log k), insbesondere für k < < N.
Ist das durchschnittliche Zeit Komplexität dokumentiert in jeder zitierbaren Referenz? Wie hoch ist die durchschnittliche Zeitkomplexität? Wenn Sie eine Referenz für Ihre Antwort haben, fügen Sie sie bitte hinzu.
IMO für k << N, nähert sich die Komplexität asymptotisch O (N). –
Ich bin ziemlich sicher, dass die Frage nach einer 'zitierbaren Referenz' als eine Empfehlungsfrage klassifiziert wird, die für [so] nicht im Thema ist, wie in der [Hilfe/zum Thema]. Fühlen Sie sich frei, Ihre Frage entsprechend zu ändern. – Dukeling
@Dukeling: Ich frage nicht nach einer Empfehlung. Soll ich die Frage so ändern, dass sie eine eindeutige Antwort hat? Zum Beispiel, indem Sie nach der _first_ Publikation fragen, die dieses Ergebnis enthält? Für mich ist die Frage eher, ob ein solcher Verweis überhaupt existiert. – bluenote10