Chuỗi sản phẩm ma trận boolean thưa thớt nhanh


13

Vì vậy, tôi đã có khoảng 100-200 ma trận boolean vuông rất thưa thớt với độ dài cạnh ~ vài chục và tôi cần tính toán sản phẩm của họ. Tôi biết rằng nếu tôi nhân chúng một cách thanh thản, sản phẩm thường sẽ vẫn thưa thớt ở mỗi bước.

Có bất kỳ thuật toán sản phẩm chuỗi ma trận nào hoạt động đặc biệt nhanh trong trường hợp này không?

Ở cấp độ cao hơn, vấn đề là tính toán thành phần của một loạt các ánh xạ một-nhiều trên một biểu đồ nhỏ hợp lý (các hàm chuyển tiếp của NFA), trong đó hầu hết các phần tử ánh xạ không quá 0-3.

(xin lưu ý rằng đây không phải là vấn đề "sản phẩm chuỗi ma trận" thông thường, bởi vì tất cả các ma trận đều có cùng kích thước và tôi không phải chọn dấu ngoặc đơn tối ưu)


5
trên thực tế, thứ tự bạn nhân chúng vào có thể ảnh hưởng đến độ thưa của kết quả trung gian, vì vậy nó vẫn có thể là một vấn đề quan trọng trong bất kỳ thuật toán nhanh như vậy.
Joshua Grochow

từ câu hỏi khác của bạn, bạn dường như được sử dụng 0/1 semiring VÀ / HOẶC hoạt động, không bổ sung / nhân (tùy theo từng vấn đề dường như nhà nước), xin vui lòng làm rõ này trong câu hỏi
vzn

Câu trả lời:


10

Điều này quá dài để trở thành một nhận xét - Tôi tự hỏi liệu những ma trận đó có cấu trúc khiến chúng hành xử khác với ma trận ngẫu nhiên hay không. Sản phẩm của ma trận thưa thớt ngẫu nhiên về không hoặc trở nên không thưa thớt một cách nhanh chóng.

Đây là một thử nghiệm đơn giản - lấy 200 ma trận nhị phân 50x50 ngẫu nhiên và số lô không phải là số 0 làm hàm số lượng ma trận nhân lên. Các ô bên dưới hiển thị độ lệch chuẩn trên 2000 lần chạy. Âm mưu thứ nhất dành cho 2% thưa thớt, âm mưu thứ hai dành cho 3%


(nguồn: yaroslavvb.com ) (nguồn: yaroslavvb.com )

việc này mất 3 phút trên máy tính xách tay của tôi bằng cách nhân ma trận tiêu chuẩn

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.