Я искал наиболее эффективный (потоковый ??) алгоритм, который сообщает мне «k» наиболее часто встречающихся элементов в потоке данных в любой момент времени. Этот пост: «Разделяй и властвуй» алгоритмы потока данных заинтересовали меня.
Например, предположим, что есть числа: (4,3,5,1,6,2,4,3,3,8,9,1), и я запрашиваю 3 наиболее часто встречающихся числа (скажем), тогда я должен получить (3,4,1) в качестве ответа.
Я пытался искать в Интернете, но не смог найти место, которое дает подход и говорит, что это лучшее. Тривиальным решением было бы использование кучи или сбалансированного бинарного дерева, но я думаю, что есть лучший способ, и я хотел знать, документировано ли оно где-нибудь.
Редактировать: я ищу алгоритм, который всегда дает правильный ответ, а не алгоритм согласования (многие из которых всплывают в результатах поиска), которые так или иначе полагаются на распределение данных