Визначення показника множення матриці-множення


15

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

У цьому випадку ми не можемо сказати, що існує алгоритм множення матриць в або навіть , лише те, що для всіх існує алгоритм в . Однак часто документи та результати, які використовують матричне множення, повідомляють про свою вартість як просто .nωnω+o(1)ϵ>0nω+ϵO(nω)

Чи існує якесь альтернативне визначення яке дозволяє це використання? Чи є якісь результати, які гарантують, що алгоритм часу або повинен існувати? Або використання просто неохайне?ωnωnω+o(1)O(nω)


2
Якщо ви просто хочете використовувати множення матриці як чорну скриньку, найпростіший спосіб - сказати "Нехай буде такою, що ми можемо множити -матриць за допомогою арифметичних операцій ". Звичайно, не є показником множення матриці тоді, але може бути довільно близьким. Якщо ви хочете вказати показник вашого остаточного запуску у десятковому представленні, наразі вам доведеться все-таки заокруглювати, оскільки всі нетривіальні оцінки для які я знаю, це або нераціональні числа, або нескінченні послідовності. n × n O ( n ω ) ω ωωn×nO(nω)ωω
Маркус Блазер

2
як правило, визначається як мінімальний за всіма значеннями k для n, що переходить до ∞, таким чином, існуєалгоритм часу O ( n k ) , який помножує дві n × n матриць (де час - кількість додавань, множень і ділень у нижнє поле). Це також означає, що технічно ми завжди повинні писати n ω + o ( 1 ), але це стає безладним, тому, коли ви бачите O ( n ω ), ви повинні думати O ( M ( nωknO(nk)n×nnω+o(1)O(nω) де M ( n ) - час виконання алгоритму множення матриці. O(M(n))M(n)
virgi

Відповіді:


20

Експонент множення матриці, який є , не гарантує існування алгоритму, який працює в часі O ( n ω ) , а лише те, що для кожного ϵ > 0 існує алгоритм, який працює в O ( n ω + ϵ ) . Дійсно, якщо ви можете знайти алгоритм, який працює в часі O ( n 2 p o l y l o g ( n ) ) , то це показує, що ω = 2 .ωO(nω)ϵ>0O(nω+ϵ)O(n2polylog(n))ω=2

Офіційне визначення ви можете знайти в книзі «Алгебраїчна теорія складності» Пітера Бюргіссера, Майкла Клаузена, Аміна Шоклаллахі.


7

Незначний коментар, який занадто довгий, щоб бути коментарем:

Іноді, коли у вас виникає проблема, для якої існує алгоритм із часом виконання для кожного ϵ > 0 , існує алгоритм із часом виконання n k + o ( 1 ) .O(nk+ϵ)ϵ>0nk+o(1)

Наприклад, іноді ви отримуєте алгоритми, які йдуть як для деякої швидко зростаючої функції f (як 2 2 1 / ϵ ). Якщо встановити f ( 1 / ϵ ) на (скажімо) log n , тоді ϵ буде o (1). У прикладі з F ( 1 / ε ) є 2 2 1 / ε , ви можете вибрати 1 / εf(1/ϵ)nk+ϵf221/ϵf(1/ϵ)lognϵf(1/ϵ)221/ϵ1/ϵщоб , що дає е = 1 / ( лог - лог - лог - п ) , який є O (1). Отже, кінцевий час виконання цього алгоритму буде n k + o ( 1 ) , оскільки log n також n o ( 1 ) .logloglognϵ=1/(logloglogn)nk+o(1)lognno(1)


Я уявляю, що алгоритм Копперсміта-Винограда потрапляє до цієї категорії?
Девід Харріс

2
@DavidHarris: Не знаю про це. Можливо, хтось, хто розуміє алгоритм, міг би пролити на це світло. Я просто хотів сказати, що часто не так погано, як виглядає. O(nk+ϵ)
Робін Котарі

5

Загальновідомий результат Копперсміта та Вінограда, що -час не може бути реалізований жодним єдиним алгоритмом. Але я читав, що вони обмежилися алгоритмами, заснованими на Страссена як білінеарні ідентичності, тому я не знаю точно, оскільки папір стоїть за платною стіною.O(nω)


3

Я не згоден з вашим твердженням у питанні, що недостатньо чітко визначений «найменшим значенням, для якого існує відомий алгоритм множення матриці n ω ». Коли люди використовують цю константу, це тому, що їх алгоритм спирається на матричне множення, а за складністю n ω вони означають, що "оптимальна складність нашого алгоритму задається оптимальним алгоритмом для матричного множення".ωnωnω

Я не кажу, що не можна визначити інакше (наприклад, сказати, що ω - найкраща досяжна складність).ωω

Btw, найвідоміша верхня межа для множення матриці щойно була покращена до якщо я не помиляюся. 2.3737


3
Я не бачу, як знання людини можуть бути частиною математичного визначення
Девід Гарріс

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