Eu tenho procurado pelo algoritmo (streaming ??) mais eficiente que me diz os 'k' elementos que ocorrem com mais frequência em um fluxo de dados a qualquer momento. Este post: "Divida e conquiste" algoritmos de fluxo de dados me interessaram.
Por exemplo, suponha que haja números: (4,3,5,1,6,2,4,3,3,8,9,1) e eu pesquise os 3 números que ocorrem com mais frequência (digamos), então devo get (3,4,1) como resposta.
Tentei pesquisar on-line, mas não consegui encontrar nenhum lugar que dê uma abordagem e diga que esse é o melhor. Uma solução trivial seria usar uma pilha ou uma árvore binária equilibrada, mas acho que há uma maneira melhor e eu queria saber se está documentada em algum lugar.
Editar: estou procurando um algoritmo que sempre dê a resposta correta em oposição a um algoritmo de aprovação (muitos dos quais aparecem nos resultados de pesquisa) que dependem da distribuição de dados de uma maneira ou de outra