Назвіть найбільш практично ефективні алгоритми множення двох дуже розріджених булевих матриць (скажімо, N = 200 і є лише деякі 100-200 ненульових елементів)?
Насправді, я маю перевагу в тому, що коли я множу A на B, B є заздалегідь визначеними, і я можу робити довільно складну попередню обробку на них. Я також знаю, що результати продуктів завжди такі ж рідкісні, як і оригінальні матриці.
Алгоритм "досить наївного" (сканування A рядками; для кожного 1 біта рядка A АБО результат з відповідним рядком B) виявляється дуже ефективним і вимагає лише декількох тисяч інструкцій CPU для обчислення одного продукту , тож перемогти його буде непросто, а його можна перевершити лише постійним коефіцієнтом (адже в результаті є сотні одного біта). Але я не втрачаю надії і прошу громади про допомогу :)