【发布时间】:2013-11-11 22:16:35
【问题描述】:
我有两个大小相同的数组:
A = [a1, a2, a3]
B = [b1; b2; b3]
我需要执行一个数组乘法来构建以下矩阵:
|a1|
M = A * B = |a2| * |b1 b2 b3| //M31 * M13 ==> M33 and M13 * M31 ==> M11. Mnk: Matrix with n lines and k columns.
|a3|
| a1b1 a1b2 a1b3 |
M = | a2b1 a2b2 a2b3 |
| a3b1 a3b2 a3b3 |
完成这项任务的最快算法是什么?
更详细一点:我需要使用 8086 指令集来完成这项工作,但这里我更愿意接收 C 代码中的算法。
【问题讨论】:
-
好问题。但是你尝试过什么?
-
另外,有什么数据可以保证帮助简化一些计算吗? (即,如果它是一个典型的 2d 旋转/缩放/平移矩阵,那么有一些 1 和 0 将很容易优化)
-
你为什么不做显而易见的事情呢? AFAIK 8086 没有任何缓存可言,因此任何不明显方式(更好地使用缓存)的通常动机都不适用。
-
这是你可以使用库的东西,还是需要你自己做的某种练习?
-
@MOHAMED 我尝试使用简单的 for 循环 O(n^2)...
标签: c arrays algorithm assembly matrix-multiplication