Я фактично написав оригінальний код у Matlab для A * B, як A, так і B розріджених. Попередньо виділення місця для результату справді було цікавою частиною. Ми спостерігали, що вказує Годрік, - що знати кількість ненулів в АВ так само дорого, як і обчислення АВ.
Ми здійснили первинну реалізацію розрідженого Matlab близько 1990 року, перш ніж документ Едіт Коен дав перший практичний, швидкий спосіб точно оцінити розмір AB. Ми зібрали оцінку неповноцінного розміру, і якщо нам не вистачало місця в середині обчислення, подвоїли розподіл і скопіювали частково обчислений результат.
Я не знаю, що зараз у Matlab.
Іншою можливістю було б обчислити AB один стовпчик одночасно. Кожен стовпець може тимчасово зберігатися в розрідженому акумуляторі (для пояснення цього див. Розріджений папір Matlab) та простір, призначений для розміщення точно відомого розміру стовпця результатів. Результатом буде розсіяна стисла розріджена форма стовпців - кожен стовпець у CSC, але без суміжності між стовпцями - з використанням 2-х векторів нуклеолів довжини (стовпчик стовпців, довжина стовпчика), а не один, як метаданих. Його форма зберігання, яку, можливо, варто переглянути; це має ще одну силу - ви можете виростити стовпчик, не перерозподіляючи всю матрицю.