Apa algoritma yang paling praktis efisien untuk mengalikan dua matriks boolean yang sangat jarang (katakanlah, N = 200 dan hanya ada sekitar 100-200 elemen non-nol)?
Sebenarnya, saya memiliki keuntungan bahwa ketika saya mengalikan A dengan B, B sudah ditentukan sebelumnya dan saya dapat melakukan preprocessing kompleks yang sewenang-wenang pada mereka. Saya juga tahu bahwa hasil produk selalu jarang seperti matriks asli.
Algoritma "agak naif" (memindai baris demi baris; untuk setiap 1 bit baris-A, ATAU hasil dengan baris B yang sesuai) ternyata sangat efisien dan hanya membutuhkan beberapa ribu instruksi CPU untuk menghitung satu produk. , jadi tidak akan mudah untuk melampauinya, dan itu hanya bisa dilampaui oleh faktor konstan (karena ada ratusan bit dalam hasilnya). Tapi saya tidak kehilangan harapan dan meminta bantuan komunitas :)