Quais são os algoritmos mais eficientes para multiplicar duas matrizes booleanas muito esparsas (por exemplo, N = 200 e existem apenas 100-200 elementos diferentes de zero)?
Na verdade, tenho a vantagem de que quando estou multiplicando A por B, os B são predefinidos e posso executar um pré-processamento arbitrariamente complexo neles. Sei também que os resultados dos produtos são sempre tão esparsos quanto as matrizes originais.
O algoritmo "bastante ingênuo" (varre A por linhas; para cada 1 bit da linha A, ou o resultado com a linha correspondente de B) resulta muito eficiente e requer apenas algumas milhares de instruções da CPU para calcular um único produto , portanto, não será fácil superá-lo e só poderá ser superado por um fator constante (porque há centenas de um bit no resultado). Mas não estou perdendo a esperança e pedindo ajuda à comunidade :)