логические операции над матрицами

Jun 18, 2013 01:53

Всем привет, подскажите, пожалуйста, есть ли такая вещь как subj? eg:

0 1 0
1 0 0
0 1 0
&
0 1 0
1 1 0
1 0 0
=
0 1 0
1 0 0
0 0 0

т.е.

A&B=C

интересует более-менее академический подход и алгоритмы луче полного перебора, спасибо.

Leave a comment

alex_djk1 June 18 2013, 04:54:30 UTC
А что вы пытаетесь найти? Можно ли так делать? Оптимальные способы? Еще что-то?

Reply

rootkid June 18 2013, 05:30:38 UTC
пытаюсь найти результирующую матрицу, каждый элемент которой получается в результате логической операции между двумя данными

Reply

alex_djk1 June 18 2013, 05:38:28 UTC
Не хочу казаться капитаном очевидность, но может просто к одинаковым элементам (в плане позиции) применить операцию?

Reply

rootkid June 18 2013, 05:40:42 UTC
ну да, но придётся перебрать все элементы, а хочется иметь некий профит за счёт того, что данные организованы в матрицу

Reply

alex_djk1 June 18 2013, 05:48:28 UTC
Обьедините элементы строк в байты и делайте побайтовые операции, а не побитовые.

Reply

antilamer June 18 2013, 05:51:27 UTC
Матрицы разреженные или имеют особую форму? Если нет (произвольные) то очевидно ничего сделать нельзя - невозможно вычислить результат, не ознакомившись со входными данными, т.е. вопрос лишь в том, насколько компактно можно представить интересующие вас матрицы.

Reply

rootkid June 18 2013, 06:12:39 UTC
матрицы имеют особую форму, значение каждого элемента зависит от позиции в строке и столбце(это пермутация).
такой пример выбран лишь для наглядности, дерево квадрантов раскуриваю, спасибо, может ещё чтонить подскажете

"возможно, но если отвлечься от конкретного примера, в какую сторону можно копать A&B=C ?"

Reply

diam_2003 June 18 2013, 06:35:58 UTC
Если это матрицы специального вида, про которые вам довольно много известно, вы явно что-то недоговариваете. Алгоритмов умножения матриц специального вида есть сколько-то, все разные :)

Reply

gegmopo4 June 18 2013, 10:22:57 UTC
Какая же это пермутация? У вас несколько единичек в строке или столбце.

Reply

rootkid June 18 2013, 10:26:32 UTC
>>такой пример выбран лишь для наглядности,

Reply

gegmopo4 June 18 2013, 11:32:15 UTC
Какая же тут наглядность, если уводит в неверном направлении? Предоставьте правдивое условие, если хотите получить ответ на свой вопрос.

Reply

antilamer June 18 2013, 17:24:19 UTC
Мне кажется, Вы то ли не понимаете чего-то фундаментального, то ли неправильно формулируете вопрос ( ... )

Reply

rootkid June 18 2013, 17:30:29 UTC
да, хотелось бы выполнить операцию над данными размера N за менее чем N операций в надежде на то, что структура данных известна (http://ru-algorithms.livejournal.com/102901.html?thread=1082357#t1082357)

допустим элемент равен 1 если сумма его индексов(i,j), разделенная на кол-во строк(m)-простое число, иначе 0, две матрицы m*n и (m-1)*n, вторую (более короткую) сверху дополнить нулями до m.

Reply

antilamer June 18 2013, 17:38:53 UTC
Вас интересует конкретно эта закономерность, или Вы хотите программу, которая сама догадается, что там за закономерность? Второе теоретически невозможно. Для каждой конкретной закономерности нужно думать отдельно.
См.тж. operations on compressed data - некоторые способы сжатия позволяют делать некоторые операции над сжатыми данными, не разжимая их. Но для этого нужно, чтобы данные хорошо поддавались сжатию данным конкретным способом. Квадродеревья, кстати, один из таких способов для разреженных матриц.

Reply

rootkid June 18 2013, 18:39:18 UTC
спасибо

Reply


Leave a comment

Up