Pada cs.stackexchange saya bertanya tentang perpustakaan scala algebird di github, berspekulasi tentang mengapa mereka mungkin membutuhkan paket aljabar abstrak.
Halaman github memiliki beberapa petunjuk:
Implementasi Monoids untuk algoritme aproksimasi yang menarik, seperti filter Bloom, HyperLogLog, dan CountMinSketch. Ini memungkinkan Anda untuk memikirkan operasi canggih ini seperti jumlah Anda, dan menambahkannya dalam hadoop atau online untuk menghasilkan statistik dan analitik yang kuat.
dan di bagian lain dari halaman GitHub:
Awalnya dikembangkan sebagai bagian dari Matrix API Scalding, di mana Matriks memiliki nilai yang merupakan elemen Monoids, Grup, atau Cincin. Selanjutnya, jelas bahwa kode memiliki aplikasi yang lebih luas dalam Scalding dan proyek-proyek lain di Twitter.
Bahkan Oskar Boykin dari Twitter menimpali:
Jawaban utamanya adalah bahwa dengan mengeksploitasi struktur semi-grup, kita dapat membangun sistem yang paralel dengan benar tanpa mengetahui operasi yang mendasarinya (pengguna menjanjikan asosiatif).
Dengan menggunakan Monoids, kita dapat mengambil keuntungan dari sparsity (kita berurusan dengan banyak matriks yang jarang, di mana hampir semua nilai adalah nol di beberapa Monoid).
Dengan menggunakan Rings, kita bisa melakukan perkalian matriks atas hal-hal selain angka (yang kadang-kadang kita lakukan).
Proyek algebird itu sendiri (serta sejarah masalah) dengan cukup jelas menjelaskan apa yang sedang terjadi di sini: kami sedang membangun banyak algoritma untuk agregasi kumpulan data besar, dan meningkatkan struktur operasi memberi kami kemenangan di sisi sistem (yang biasanya merupakan titik sakit ketika mencoba memproduksikan algoritma pada 1000s node).
Selesaikan masalah sistem satu kali untuk Semigroup / Monoid / Group / Ring, dan kemudian Anda dapat menyambungkan algoritma apa pun tanpa harus memikirkan Memcache, Hadoop, Storm, dll ...
Bagaimana Bloom filters
/ hyperloglog
/ countminsketch
seperti angka?
Bagaimana agregasi database memiliki struktur monoid?
Seperti apa bentuk monoid ini? Apakah mereka pernah memiliki struktur kelompok?
Referensi literatur akan sangat membantu.