Ich habe nach dem effizientesten (Streaming ??) Algorithmus gesucht, der mir die 'k' am häufigsten vorkommenden Elemente in einem Datenstrom zu einem beliebigen Zeitpunkt angibt. Dieser Beitrag: Algorithmen zum Teilen und Erobern von Datenströmen haben mich interessiert.
Angenommen, es gibt Zahlen: (4,3,5,1,6,2,4,3,8,9,1) und ich frage nach den 3 am häufigsten vorkommenden Zahlen (etwa), dann sollte ich bekomme (3,4,1) als Antwort.
Ich habe versucht, online zu suchen, konnte aber keinen Ort finden, der einen Ansatz bietet und sagt, dass dies der beste ist. Eine triviale Lösung wäre, einen Heap oder einen ausgeglichenen Binärbaum zu verwenden, aber ich denke, es gibt einen besseren Weg und ich wollte wissen, ob er irgendwo dokumentiert ist.
Bearbeiten: Ich bin auf der Suche nach einem Algorithmus, der immer die richtige Antwort liefert, im Gegensatz zu einem Genehmigungsalgorithmus (von dem viele in Suchergebnissen auftauchen), der auf die Verteilung von Daten in der einen oder anderen Weise angewiesen ist