Швидкий розріджений булевий матричний продукт з можливою попередньою обробкою


12

Назвіть найбільш практично ефективні алгоритми множення двох дуже розріджених булевих матриць (скажімо, N = 200 і є лише деякі 100-200 ненульових елементів)?

Насправді, я маю перевагу в тому, що коли я множу A на B, B є заздалегідь визначеними, і я можу робити довільно складну попередню обробку на них. Я також знаю, що результати продуктів завжди такі ж рідкісні, як і оригінальні матриці.

Алгоритм "досить наївного" (сканування A рядками; для кожного 1 біта рядка A АБО результат з відповідним рядком B) виявляється дуже ефективним і вимагає лише декількох тисяч інструкцій CPU для обчислення одного продукту , тож перемогти його буде непросто, а його можна перевершити лише постійним коефіцієнтом (адже в результаті є сотні одного біта). Але я не втрачаю надії і прошу громади про допомогу :)


1
Я сумніваюся, ми можемо значно перемогти константу в 10 машинних інструкцій за кожне слово виводу. Чи можливо, якась неявна форма результату була б прийнятною?
— Воррен Шуді

Так до тих пір, поки його можна помножити на Bs далі.
— jkff

На яких операціях додавання та множення (для бітів) визначено множення матриць? Ваш наївний алгоритм пропонує відповідь відповідно "або" і "і", але це досить дивне множення матриць, оскільки ті не визначають поле. Ви маєте на увазі "xor" замість "або"?
— Воррен Шуді

Ні, я маю на увазі "або" і "і". Мені не потрібні операції для визначення поля, це насправді проблема, схожа на доступність графіків (я обчислюю склад декількох функцій один на багато).
— jkff

Відповіді:


11

Я неохоче відповідав на це, тому що єдиний теоретичний результат, про який я знаю в цих рядах, має своє ім'я на папері ...

n×nAAn

(Примітка: цей алгоритм дійсно корисний лише у випадку, коли одна матриця є щільною, а інша - рідкою. Цей випадок виникає багато, хоча, наприклад, при обчисленні транзитивного закриття розрідженого графіка перехідна матриця закриття з часом стає щільною порівняно з вихідною матрицею суміжності.)

Папір є

Гай Е. Блеллох, Вірджинія Василевська, Райан Вільямс: новий комбінаторний підхід до проблем з обмеженими графіками. 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
Я щойно помітив, що ви також припускаєте, що вихід множення матриці також є рідким. У цьому випадку існують ще швидші алгоритми; здійснити пошук в Інтернеті для "матричного множення з урахуванням вихідних даних".
— Райан Вільямс

Райан Вільямс - у мене швидке запитання: чи знаєте ви, чи ви вивчали будь-який метод, який узагальнює розрізнені -значні матриці (а не просто булеві)? {−1,0,1}
— Олександр Кассань

5

Я думаю, що ви називаєте матрицю "гіперспарш" (nnz <n). Я написав документ кілька років тому, як їх розмножувати. По суті, це об'єднання зовнішнього продукту з розумним багатостороннім злиттям, щоб усунути реалізацію проміжних потрій.

Buluc and Gilbert, IPDPS 2008: http://gauss.cs.ucsb.edu/publication/hypersparse-ipdps08.pdf

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.