Каковы наиболее практически эффективные алгоритмы умножения двух очень разреженных логических матриц (скажем, N = 200 и всего 100-200 ненулевых элементов)?
На самом деле, у меня есть преимущество в том, что когда я умножаю A на B, B заранее определены, и я могу выполнять произвольную сложную предварительную обработку на них. Я также знаю, что результаты продуктов всегда так же скудны, как и исходные матрицы.
«Довольно наивный» алгоритм (сканирование A по строкам; для каждого 1 бита A-строки, ИЛИ результата с соответствующей строкой B) оказывается очень эффективным и требует только нескольких тысяч инструкций ЦП для вычисления одного продукта. поэтому его будет непросто превзойти, и его можно превзойти только по постоянному коэффициенту (потому что в результате сотни битов). Но я не теряю надежды и прошу сообщество помочь :)