전처리가 가능한 빠른 희소 부울 매트릭스 제품


12

두 개의 매우 희소 한 부울 행렬을 곱하기위한 가장 실질적으로 효율적인 알고리즘은 무엇입니까 (예 : N = 200이고 0이 아닌 100-200 개의 요소 만 있음)?

실제로 A에 B를 곱하면 B가 미리 정의되어 있고 임의로 복잡한 전처리를 수행 할 수 있다는 이점이 있습니다. 또한 제품 결과가 항상 원래 행렬만큼 희박하다는 것을 알고 있습니다.

"보다 순진한"알고리즘 (A 행으로 스캔; A 행의 각 1 비트 또는 해당 B 행의 결과에 대해)은 매우 효율적이며 단일 제품을 계산하는 데 수천 개의 CPU 명령 만 필요합니다. 따라서 그것을 능가하는 것은 쉽지 않으며 결과에 수백 개의 비트가 있기 때문에 일정한 요인으로 만 능가합니다. 그러나 나는 희망을 잃지 않고 지역 사회에 도움을 요청하지 않습니다 :)


1
출력 워드 당 10 개의 기계 명령어를 상당히 능가 할 수 있을지 의문입니다. 암시 적 형태의 출력이 허용 될 수 있습니까?
— 워렌 슈디

B를 더 곱할 수 있다면 가능합니다.
— jkff

행렬 곱셈이 기반으로하는 덧셈과 곱셈 연산 (비트)은 무엇입니까? 순진한 알고리즘은 대답이 각각 "또는"과 "and"라고 제안하지만 필드를 정의하지 않기 때문에 다소 이상한 행렬 곱셈입니다. "또는"대신 "xor"를 의미합니까?
— 워렌 슈디

아니요, "또는"과 "and"를 의미합니다. 필자는 필드를 정의하기 위해 연산이 필요하지 않습니다. 실제로 그래프 도달 가능성과 같은 문제입니다 (일대 다 함수의 구성을 계산하고 있습니다).
— jkff

답변:


11

이 선을 따라 내가 아는 유일한 이론적 결과는 종이에 내 이름이 있기 때문에 나는 이것에 대답하기를 꺼려했다 ...

n×nAAn

(참고 :이 알고리즘은 하나의 행렬이 밀도가 높고 다른 행렬이 희박한 경우에만 유용합니다. 예를 들어, 희소 그래프의 전이 폐쇄를 계산할 때 전이 폐쇄 행렬은 결국 밀도가 높아집니다. 원래 인접 매트릭스와 비교)

종이는

Guy E. Blelloch, Virginia Vassilevska, Ryan Williams : 희소 그래프 문제에 대한 새로운 조합 접근법. ICALP (1) 2008 : 108-120

ε>0O(n2+ε)n×nA

vtAvO(n(t/k+n/ℓ)/log⁡n)ℓk(ℓk)≤nεℓ=logc⁡nk=ε(log⁡n)/log⁡log⁡nnt/log⁡n+n2/logc⁡nc

AO(n1+ε)

이 데이터 구조를 사용하여 희소 비가 중 그래프에서 APSP에 대한 더 빠른 이론적 알고리즘을 제공했습니다.


3
방금 행렬 곱셈 의 출력 도 희박 하다고 가정합니다 . 이 경우 더 빠른 알고리즘이 있습니다. "출력 감지 매트릭스 곱셈"에 대한 웹 검색을 수행하십시오.
— Ryan Williams

{−1,0,1}

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.