Quali sono gli algoritmi più efficienti per moltiplicare due matrici booleane molto sparse (diciamo, N = 200 e ci sono solo circa 100-200 elementi diversi da zero)?
In realtà, ho il vantaggio che quando sto moltiplicando A per B, le B sono predefinite e posso eseguire una pre-elaborazione arbitrariamente complessa su di esse. So anche che i risultati dei prodotti sono sempre scarsi come le matrici originali.
L'algoritmo "piuttosto ingenuo" (scansiona A per righe; per ogni 1 bit della riga A, O il risultato con la corrispondente riga di B) risulta molto efficiente e richiede solo un paio di migliaia di istruzioni CPU per calcolare un singolo prodotto , quindi non sarà facile superarlo, ed è superabile solo con un fattore costante (perché ci sono centinaia di bit nel risultato). Ma non sto perdendo la speranza e chiedendo aiuto alla community :)