Tôi thực sự đã viết mã gốc trong Matlab cho A * B, cả A và B đều thưa thớt. Phân bổ trước không gian cho kết quả thực sự là phần thú vị. Chúng tôi đã quan sát những gì Godric chỉ ra - rằng việc biết số lượng các số khác trong AB cũng tốn kém như tính toán AB.
Chúng tôi đã thực hiện ban đầu Matlab thưa thớt vào khoảng năm 1990, trước khi bài báo Edith Cohen đưa ra cách thực tế đầu tiên, nhanh chóng để ước tính kích thước của AB một cách chính xác. Chúng tôi kết hợp một công cụ ước tính kích thước kém hơn và nếu chúng tôi hết dung lượng ở giữa tính toán, tăng gấp đôi phân bổ và sao chép kết quả tính toán một phần.
Tôi không biết những gì trong Matlab bây giờ.
Một khả năng khác là tính AB một cột tại một thời điểm. Mỗi cột có thể được lưu trữ tạm thời trong một bộ tích lũy thưa thớt (xem bài viết Matlab thưa thớt để biết giải thích về những điều này) và không gian được phân bổ để giữ kích thước chính xác của cột kết quả. Kết quả sẽ ở dạng cột thưa thớt rải rác - mỗi cột trong CSC nhưng không có sự liên tục giữa các lớp - sử dụng 2 vectơ độ dài chữ số (col start, col length), chứ không phải một, làm siêu dữ liệu. Đây là một hình thức lưu trữ có thể đáng xem; nó có một sức mạnh khác - bạn có thể phát triển một cột mà không cần phân bổ lại toàn bộ ma trận.