Quindi, sto usando matrici booleane la cui dimensione è in genere di un paio di dozzina o duecento, di solito sono piuttosto scarse (solo alcuni 2-4 non zeri nella maggior parte delle righe e delle colonne) e il mio runtime è fortemente dominato dal loro moltiplicazione.Qual è il modo più veloce per rappresentare e moltiplicare le matrici booleane sparse?
Quale struttura si adatta meglio per accelerare la moltiplicazione in queste circostanze?
Attualmente sto memorizzando ciascuna matrice in un insieme di bit contigui (array di bit lunghi 64 bit) e moltiplicandoli con l'algoritmo standard, appena accelerato per la scarsità con l'operazione rapida di localizzazione del set successivo bit in una parola e con vettorizzazione tramite operazioni di maschera di bit.
Dovrei forse usare qualche rappresentazione sparsa?
Che cosa intendi per "la dimensione è in genere un paio di dozzina o duecento"? Sembra più un numero di elementi (o una lunghezza di una dimensione) rispetto alla dimensione (cioè il numero di coordinate che devi specificare per scegliere un elemento). –