Was ist die geeignete Datenstruktur für diese Aufgabe?Schnelles Sampling und Update von gewichteten Elementen (Datenstruktur wie Rot-Schwarz-Bäume?)
Ich habe eine Reihe von N-Elemente. N ist groß. Jeder Gegenstand hat einen positiven Gewichtswert.
würde Ich mag folgende tun, schnell:
innere Schleife:
Probe, das ein Element, das sein Gewicht nach.
[Ein ...]
Aktualisieren Sie das Gewicht von K Elementen, wobei K < < N.
Wenn ich Probst Gewicht sagen, dies ist anders als einheitliche Probenahme. Die Wahrscheinlichkeit eines Gegenstands ist proportional zu seinem Gewicht. Wenn also zwei Elemente vorhanden sind, und eines ein Gewicht von .8 hat und eines ein Gewicht von .2, dann haben sie eine Wahrscheinlichkeit von 80% bzw. 20%.
Die Anzahl der Elemente N bleibt fest. Gewichte liegen in einem begrenzten Bereich, sagen wir [0, 1]. Gewichte addieren sich nicht immer zu eins.
Eine naive Methode benötigt O (n) Zeitschritte zum Abtasten. Gibt es einen O (log (n)) Algorithmus?
Was ist die geeignete Datenstruktur für diese Aufgabe? Ich glaube, dass rot-schwarze Bäume ungeeignet sind, da sie jeden Gegenstand als gleichwertig behandeln.
aktualisiert die Summe der Gewichte in Schwierigkeiten geraten kann, wenn ungenaue Darstellungen verwenden, wie Floating-Point. –
Dies ist kein großes Problem - das Schlimmste, was Sie bekommen können, sind ungenaue Ergebnisse. – jpalecek