두 개의 매우 희소 한 부울 행렬을 곱하기위한 가장 실질적으로 효율적인 알고리즘은 무엇입니까 (예 : N = 200이고 0이 아닌 100-200 개의 요소 만 있음)?
실제로 A에 B를 곱하면 B가 미리 정의되어 있고 임의로 복잡한 전처리를 수행 할 수 있다는 이점이 있습니다. 또한 제품 결과가 항상 원래 행렬만큼 희박하다는 것을 알고 있습니다.
"보다 순진한"알고리즘 (A 행으로 스캔; A 행의 각 1 비트 또는 해당 B 행의 결과에 대해)은 매우 효율적이며 단일 제품을 계산하는 데 수천 개의 CPU 명령 만 필요합니다. 따라서 그것을 능가하는 것은 쉽지 않으며 결과에 수백 개의 비트가 있기 때문에 일정한 요인으로 만 능가합니다. 그러나 나는 희망을 잃지 않고 지역 사회에 도움을 요청하지 않습니다 :)