我有矩阵A:
[x1, x2, x3, x4]
矩阵B:
[y1,
y2,
y3,
y4]
是否可以对A中的元素和B中的元素进行排序,使A*B=[z],其中z总是尽可能小的数字,而不使用暴力?元素可以是负数。是否存在这样的算法?矩阵可以很大。
如果所有数字都是正数,那么您只需按升序对一个因子进行排序,按降序对另一个因子排序,即可获得尽可能小的结果。
如果你正在寻找最低的结果,而不是最接近零的结果,那么即使有些数字是负数,这也是有效的。
考虑在每个单元格中添加一个大的正常数:
(x1+a,x2+a,x3+a,x4+a(•(y1+a,y2+a,y3+a,y4+a(
=(x1,x2,x3,x4(•(y1,y2,y3,y4(+a(x1+x2+x3+x4+y1+y2+y3+y4(+4a2
不同顺序的结果之间的差异是不变的,就像数字之间的差异一样。由于排序会在向每个单元格添加足够大的a后找到尽可能低的结果,因此它也会在不添加任何内容的情况下找到尽可能最低的结果。