目标是“很好地”可视化价值矩阵。矩阵看起来像
a b c
A 2 3 1
B 5 6 7
C 2 9 5
我们有两套{A}和{a},它们没有预定义的顺序。我们还为每个组合M(A,a)=数字的度量值。
我们希望通过为两个集合排序这些值来以“漂亮”的方式显示值。我们想要在左下方显示较小的值,在右上方显示最大值。
因此,对于每个度量矩阵M,我们可以定义一个基于渐变的函数。对于集合{A}和{a}的每个可能顺序,我们将渐变定义为:
Gradient(i,j) = F(M(i+1,j) - M(i,j)) + F(M(i,j+1) - M(i,j))
where F(x) = x if x >0 and F(x) = 2*x if x < 0 as we want to go 'up'
Gradient( M(A,a) ) - Sum( Gradient(i,j), for all i,j except the top and right border )
“好”的订单是我们的订单(确实不保证它是唯一的)。 F(x)函数中的值2是任意的,但目标是给下降的梯度赋予更多的负权重。如果有人有更好的想法欢迎。
Max( Gradient )
除了做一个糟糕的算法O(n ^ 4)的所有组合,还有更好的解决方案吗?关于这个问题的一些正式想法?