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


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/)/logn)k(k)nε=logcnk=ε(logn)/loglognnt/logn+n2/logcnc

- Оновлення рядків та стовпців до можна обчислити за час .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.