Saya telah mencari algoritma yang paling efisien (streaming ??) yang memberitahu saya elemen 'k' paling sering terjadi dalam aliran data di setiap titik waktu. Posting ini: "Alur dan taklukkan" algoritma aliran data membuat saya tertarik padanya.
Misalnya, anggap ada angka: (4,3,5,1,6,2,4,3,3,8,9,1) dan saya meminta 3 nomor yang paling sering muncul (katakanlah), maka saya harus dapatkan (3,4,1) sebagai jawabannya.
Saya mencoba mencari online, tetapi tidak dapat menemukan tempat yang memberikan pendekatan dan mengatakan itu yang terbaik. Solusi sepele akan menggunakan tumpukan atau pohon biner seimbang, tapi saya pikir ada cara yang lebih baik dan saya ingin tahu apakah itu didokumentasikan di suatu tempat.
Sunting: Saya mencari sebuah algoritma yang selalu memberikan jawaban yang benar sebagai lawan dari algoritma appromixation (banyak yang muncul dalam hasil pencarian) yang mengandalkan distribusi data dalam beberapa cara atau lainnya
sumber
Jawaban:
sumber
Saya juga merekomendasikan membaca bagian 8.1.3 "Penelusuran Pola-Sering dalam Aliran Data" dari buku berikut:
Jiawei Han, Micheline Kamber. Penambangan Data --- Konsep dan Teknik, Edisi Kedua, Penerbit Morgan Kaufmann , 2006.
Memperkenalkan suatu algoritma, yang dikenal sebagai Lossy Menghitung , yang mendekati sering item (item yang dukungan atas beberapa min_support ) dengan presisi sewenang-wenang.
Bukan apa yang Anda inginkan, tetapi saya pikir itu mungkin membantu.
sumber