Nếu tôi có hai ma trận và , có kích thước lần lượt là và và muốn tính toán , thì việc viết lại biểu thức thành sẽ hiệu quả hơn và chỉ sau đó đánh giá bằng số, vì có kích thước nhưng có kích thước .B 1000 × 2 2 × 1000 ( A B ) 5000 A ( B A ) 4999 B A B 1000 × 1000 B A 2 × 2
Tôi muốn giải quyết một phiên bản tổng quát của vấn đề này. Có một thuật toán hợp lý hiệu quả (không phải vũ lực) để tối ưu hóa một biểu thức có chứa:
- Biến ma trận miễn phí của kích thước đã biết
- Sản phẩm của subexpression tùy ý
- Sự phụ thuộc tùy tiện được nâng lên thành sức mạnh tự nhiên
... để mất ít công sức nhất để đánh giá bằng số, sau khi thay thế các biến ma trận tự do bằng các giá trị ma trận cụ thể?
Các ma trận chuỗi nhân vấn đề là một trường hợp đặc biệt của vấn đề của tôi.
Biên tập:
Đây là một câu trả lời dự kiến. Nó có vẻ trực giác với tôi, nhưng tôi không có bằng chứng nào cho thấy nó đúng. Nếu nó trở thành chính xác, tôi vẫn quan tâm đến bằng chứng. (Nếu nó không đúng, tất nhiên, xin vui lòng sửa cho tôi.)
Đối với mọi sản phẩm được nâng lên thành một quyền lực, giả sử, , hãy xem xét mọi hoán vị theo chu kỳ của các yếu tố:
- ...
... đệ quy. Mỗi công suất sẽ được tính bằng cách sử dụng lũy thừa bằng bình phương (rõ ràng) và tất cả các sản phẩm khác sẽ được tính bằng cách sử dụng thứ tự tối ưu được trả về bởi thuật toán nhân chuỗi ma trận.
Biên tập:
Ý tưởng được nêu trong chỉnh sửa trước đây của tôi vẫn còn hơi tối ưu. Phép lũy thừa bằng thuật toán bình phương thực sự đánh giá các biểu thức có dạng hoặc , trong đó không nhất thiết là ma trận danh tính. Nhưng thuật toán của tôi không xem xét khả năng sử dụng lũy thừa bằng thuật toán bình phương với không bằng ma trận danh tính.A n K K K