матричная оценка муль макс значения - PullRequest
2 голосов
/ 14 февраля 2011

Учитывая матричный продукт C = A*B, существует ли N^2 способ оценить максимальное значение в C? Или, скорее, какой хороший способ сделать это?

Ответы [ 3 ]

5 голосов
/ 14 февраля 2011

Как насчет этого:

  1. Для каждой строки в A и каждого столбца в B найдите квадрат векторной нормы (то есть сумма квадратов). O (N ^ 2)
  2. Для каждой комбинации строки из A и столбца из B, умножьте соответствующие квадраты вектор-нормы. O (N ^ 2)
  3. Найдите максимум из них. * * тысяча двадцать-одна O (N ^ 2) * ** тысяча двадцать два ** тысячи двадцать-три 1024 *

Квадратный корень этого будет верхней границей для max(abs(C)). Зачем? Потому что из неравенства Коши-Шварца мы знаем, что |<x,y>|^2 <= <x,x>.<y,y>, где <> обозначает внутренний продукт. Мы вычислили RHS этого отношения для каждой точки в C; поэтому мы знаем, что соответствующий элемент C (LHS) должен быть меньше.

Отказ от ответственности: Вполне может быть, что метод дает более жесткую оценку; это было первое, что пришло в голову.

2 голосов
/ 14 февраля 2011

Очевидно,

N * max(abs(A)) * max(abs(B))

является верхней границей (поскольку каждый элемент C является суммой N произведений двух значений из A и B).

0 голосов
/ 14 февраля 2011

это мой дубль:

A,B,C

a(i) = max(abs(A(i,:)))
b(j) = max(abs(B(j,:)))

c(i,j) = N*max(a(i)*b(j))

Что ты думаешь? Попробую ответ Оли и посмотрим, что дает мне лучшее приближение / производительность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...