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
Comments 37
Reply
Reply
Reply
Reply
Reply
Reply
Reply
мой не первой свежести процессор теоретически способен складывать-умножать порядка 3ггц * 64бит = 192 гигабит в секунду. проблема только в том, как эти гигабиты в него скормить. так, скорость чтения с хдд в лучшем случае на два порядка меньше. в итоге процессор 1 такт складывает битики, потом 99 тактов ждет следующей порции.
вот если ваш источник единиц и нулей будет отдавать их в сжатом виде, это разгрузит ввод-вывод и позволит более эффективно использовать цпу.
Reply
1) Все элементы матрицы хранятся в памяти (а не, например, вычисляются на лету)
2) Операция, которую Вам необходимо реализовать - поэлементная. Т.е. C(i,j) = f(A(i,j), B(i,j)) ?
Reply
2. да, но поэлементно не хочется, т.к. очень долго
Reply
1) Матрица у Вас - это класс MatrixFunc
2) MatrixFunc - это абстрактный класс с чистой виртуальной функцией eval(int i, int j). Элементы нигде не хранятся.
3) У Вас есть какие-то собственные реализации этого класса ("каждый элемент можно вычислить в зависимости от позиции в строке и столбце")
4) Вы делаете реализацию LogicBinaryMatrixFunc, которая в качестве конструктора принимает пару объектов класса MatrixFunc и объект класса std::binary_function. Элементарным образом реализовываете функцию eval в классе LogicBinaryMatrixFunc.
5) По вкусу добавьте операторы &, | для класса MatrixFunc
6) Аналогичным образом реализуйте класс LogicUnaryMatrixFunc
Reply
Reply
Reply
Reply
Reply
Reply
Reply
Leave a comment