Як Страссен придумав свій метод множення матриць?


18

Відомий алгоритм множення матриць Страссена - справжнє задоволення для нас, оскільки він зменшує часову складність від традиційного O (n 3 ) до O (n 2.8 ).

Але з усіх ресурсів, які я пройшов, навіть із книгою Кормен та Стівена Скієни, вони явно не свідчать про те, як думав про це Страссен.

Яке обґрунтування алгоритму множення матриць Страссена? Це щаслива випадковість чи є в ній щось глибше?


Мені сказали, що ніхто насправді не знає, що б то не було, головним чином, міркування. Однак я знайшов це, що може бути застосовно (хоча я не читав цього).
Герцогство

Я думаю, що Strassen alg. зрозуміло у вікіпедії.
МаршалШІ

4
@meshuai Я думаю, що це просто пояснює, чому це працює , а не як він про це думав , як з більшістю інших ресурсів.
Герцогство

2
Ви можете подивитися оригінальний документ Страссена: scgroup.hpclab.ceid.upatras.gr/class/SC/Papers/Strassen.pdf
Аксель Кемпер

Відповіді:


26

Крім Страссена, ніхто не може сказати вам, як Страссен зрозумів свою ідею. Говебер, я можу вам сказати, як ви могли самі знайти цю формулу - за умови, що вас цікавить алгебраїчна геометрія та теорія представлення. Це також дає вам інструменти, щоб показати, що формула Страссена настільки ж хороша, а точніше, що не існує формули, що обчислює добуток двох матриць 2 × 2, що використовує менше 7 множень .

Оскільки вас цікавлять матриці, я припускаю, що ви знаєте основні лінійні алгебри і будете трохи розмитими для більш досконалих деталей.

Спочатку нехай буде E сукупність усіх лінійних карт від площини до площини. Це в основному сукупність усіх 2 × 2 матриць, але ми забуваємо про конкретну систему координат, оскільки, якби була краща система координат, ніж «стандартна», ми могли б зацікавити її використанням для множення матриць. Позначимо також через E † подвійний простір E, а через X = P (E⊗E † ⊗E †) проективний простір, пов'язаний з тензорним твором E⊗E † ⊗E † .

Елемент X = P (E⊗E † ⊗E †) спеціальної форми [c⊗α⊗β] можна інтерпретувати як елементарну операцію на матрицях, яка в деяких відповідних системах координат зчитує коефіцієнт матриці і коефіцієнт матриці B і записують твір цих коефіцієнтів в деякій матриці C . Загальний елемент X - це комбінація цих елементарних операцій, тому добуток π з двох матриць, розуміється як карта від P (E) × P (E) до P (E), є точкою в X .

Звичайна формула матричного продукту та формула Страссена можна виразити як комбінації цих лінійних операцій, тому дозвольте мені позначити через W₁ множину цих елементарних операцій [c⊗α⊗β] і дозвольте мені геометрично описати їх комбінації.

Нехай W₂ буде різноманіттям січних з W₁ в X. Це виходить взяття (закриття) об'єднання всіх ліній , що проходять через два (родовий) точок W₁ . Ми можемо вважати це як сукупність усіх комбінацій двох елементарних операцій.

Нехай W₃ буде різноманіттям січних площин в W₁ в X. Це виходить взяття (закриття) об'єднання всіх площин , що проходять через три (родовий) точок W₁ . Ми можемо вважати це як сукупність усіх комбінацій трьох елементарних операцій.

Аналогічно ми визначаємо секантні сорти для більших показників. Зауважте, що ці різновиди зростають і збільшуються, тобто W₁⊂W₂⊂W₃⊂ ⋯ Отже, класична формула матричного продукту показує, що добуток матриць є точкою W₈ . Насправді

ПРОПОЗИЦІЯ (Strassen) - Добуток матриць π лежить в W₇.

Наскільки мені відомо, Страссен не ставив речі так, проте це геометрична точка зору на це питання. Ця точка зору є дуже корисною, оскільки дозволяє також довести, що формула Страссена найкраща, тобто π не лежить у W₆ . Геометричні методи, розроблені тут, можуть також використовуватися для широкого кола проблем.

Сподіваюся, я захопив вашу цікавість. Ви можете піти далі, прочитавши цю статтю Ландсберга та Манівеля:

http://arxiv.org/abs/math/0601097

¹ Я не буду виправляти цю помилку, бо застудився.


Досить просто показати, що можливість виготовлення матричного виробу (3x3) з 21 множенням призведе до асимптотично більш швидкого алгоритму. Будь-яка ідея, чи це можливо / неможливо / невідомо?
gnasher729

3

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

Я буду використовувати приклад множення двох складних чисел разом, щоб проілюструвати баланс " операцій проти компонентів ":

Рівняння для складних чисел.

Зауважте, що ми використовуємо 4 множення, в результаті яких 4 компоненти продукту :

У нас є 4 компоненти продукту.

Зауважимо, що 2 кінцеві компоненти, які ми хочемо: реальна та уявна частини комплексного числа, насправді є лінійними рівняннями: вони є сумами масштабованих добутків. Тож ми маємо справу з двома операціями тут: додаванням та множенням.

Справа в тому, що наші 4 компоненти продукту можуть представляти наші 2 кінцеві компоненти, якщо ми просто додаємо або віднімаємо наші компоненти:

Наші компоненти продукту можуть представляти наші заключні.

Але наші останні 2 компоненти можна представити у вигляді суми продуктів. Ось що я придумав:

Нам фактично потрібні лише 3 різні компоненти продукту.

Якщо ви бачите, нам фактично потрібні лише 3 різні компоненти продукту, щоб зробити наші останні два:

Наші 3 різні компоненти.

Але зачекайте! Кожна з великих літер - самі по собі продукти! Але суть полягає в тому, що ми знаємо, що можемо генерувати (A + B + C + D) з (a + b) (c + d), що становить лише 1 множення.

Отже, врешті-решт, наш алгоритм оптимізований для використання менших, але «жирних» компонентів, де ми торгуємо кількістю множень для більшої операції підбиття підсумків.

Частина, що дозволяє це, є властивість розподілу, яка дозволяє A (B + C) бути еквівалентним (AB + AC). Зверніть увагу, як перше можна обчислити, використовуючи 1 операцію додавання та 1 множення, а друга вимагає 2 множення та 1 суму.

Алгоритм Страссена - це розширення оптимізації, яку ми застосували до продуктів складного числа, за винятком того, що існує більше цільових термінів продукту та можливо більше інших компонентів продукту, які ми можемо використати для отримання цих термінів. Для матриці 2x2 алгоритм Страссена перетворює алгоритм, який потребує 8 множень на той, якому потрібно 7 множень, і використовує властивість розподілу для "об'єднання" двох множень в одну операцію, а замість цього віднімає новий вузол "жирніше" для вилучення одного термін товару чи інше тощо

Хороший приклад: щоб отримати (-1) і (2) і (5), ви можете думати про це як просто (-1), (2), (5), або можете думати про це як (2-3 ), (2), (2 + 3). Однак у другій операції використовуються менш чіткі числа. Проблема полягає в тому, що кількість різних чисел еквівалентна кількості компонентів продукту, які потрібно обчислити для множення матриці. Ми просто оптимізуємо для цього, щоб знайти певний вигляд основних операцій, які використовують ізоморфні виводи, використовуючи різні варіації через властивість розподілу.

Можливо, це якимось чином може бути пов’язане з топологією? Це просто спосіб мого мирянина це зрозуміти.

Редагувати: Ось малюнок моїх записок, який я намалював у процесі пояснення складного числа:

Деякі примітки для з'ясування складної числової частини.

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