Ich finde widersprüchliche Informationen über die Suche auf einem binären Heap. Danach https://en.wikipedia.org/wiki/Binary_heap, es ist O (n) (edit: es ist eigentlich O (log n)), nach diesem Search an element in a heap, es ist O (n/2).Komplexität der Binärbaumsuche
Antwort
Wikipedia war einfach falsch. Binäre Heaps sind nicht darauf ausgelegt, nach einzelnen Elementen durchsucht zu werden, sondern sind nur für den Zugriff auf das kleinste Element optimiert. So können sie beispielsweise in der Zeit Θ (n) konstruiert werden; Die Reihenfolge, die sie benötigen, ist nicht annähernd so streng wie bei einem binären Suchbaum.
Es sieht aus wie jemand Wikipedia aktualisiert hat, was gut ist. Danke, dass du das unterstrichen hast!
Eine Anmerkung - die Terminologie O (n/2) gilt, obwohl technisch korrekt, als eine schlechte Verwendung der Groß-O-Notation. Die Big-O-Notation ignoriert konstante Faktoren, daher ist O (n/2) dasselbe wie O (n). Wenn Sie die bestimmte Anzahl von Operationen zählen möchten, die Sie am Ende ausführen, vermeiden Sie die Groß-O-Notation und sagen Sie etwas wie "genau n/2 Vergleiche sind erforderlich".
- 1. Heapsort - Komplexität der Implementierung
- 2. Komplexität der Teilmenge Produkt
- 3. Komplexität der Graph-Traversierung
- 4. Komplexität der Vergleichsoperatoren
- 5. Komplexität der Menge :: Einfügen
- 6. der Suche nach Komplexität Induktion
- 7. Zeit Komplexität der folgenden Wiederholung?
- 8. Untergrenze der Zeit Komplexität Verwirrung
- 9. Zeit Komplexität der Hash-Tabelle
- 10. Verständnis der Zeit Komplexität der angegebenen Code
- 11. Komplexität - Eingangslänge
- 12. `append` Komplexität
- 13. Algorithmus Komplexität
- 14. Sortierzeit Komplexität
- 15. Schleifen Komplexität
- 16. Kolmogorov Komplexität
- 17. Komplexität Berechnung
- 18. nPath Komplexität
- 19. Ermittlung der Worst-Case-Komplexität eines Algorithmus
- 20. Zeit Komplexität der Textausrichtung mit dynamischer Programmierung
- 21. Verständnis einer zyklomatischen Komplexität der JavaScript-Funktion
- 22. Code Reduzierung der Komplexität für GWT
- 23. Messung der Komplexität von SQL-Anweisungen
- 24. Vereinfachung der Big-O-Komplexität dieses Exponentialalgorithmus
- 25. Ableiten der zyklomatischen Komplexität in .NET
- 26. Algorithmus zur Schätzung der Komplexität von Wörtern
- 27. Komplexität der String-Operationen in Swift
- 28. Zeit Komplexität der Suche nach einem Becken
- 29. Komplexität der Einfügung in die Prioritätswarteschlange
- 30. Zeit Komplexität der Tiefe-erste Graph-Algorithmus
Es tut mir leid, ich meinte, dass der Wikipedia-Link sagt, es ist O (log n). –
Ein echter binärer Haufen wäre O (n/2) wegen der in Wikipedia erwähnten * Heap-Eigenschaft *: Wenn A ein Elternknoten von B ist, dann ist der Schlüssel von Knoten A in Bezug auf den Schlüssel von Knoten B mit geordnet die gleiche Reihenfolge gilt für den ganzen Haufen. * Die Reihenfolge teilt im Wesentlichen den Aufwand der Suche in zwei Hälften. Diese Komplexität ist jedoch in einem Graphen linear, so dass es im Wesentlichen nach O (n) gemittelt wird. Der binäre Suchbaum hat Kinder angeordnet und ermöglicht eine echte binäre Suche mit einer Komplexität von O (log n). –
Wenn "Suchen" bedeutet, den Heap nach einem bestimmten Datum zu durchsuchen, sollte es "O (n)" sein. Ich bin mir nicht sicher, was die Wiki-Seite eigentlich bedeutet. Aber in der Regel unterstützen Heaps die "Such" -Operation nicht - sie sind einfach nicht dazu gedacht. Vielleicht sollte jemand die Wiki-Seite modifizieren oder deutlicher benennen. – WhatsUp