美文网首页
最小向量积

最小向量积

作者: M_lear | 来源:发表于2018-11-08 15:30 被阅读0次

    调整数组元素的位置使得两数组向量积最小

    问题描述:

    有长度为n的数组a,b,问如何调整数组内元素的位置使得 a\cdot b 最小?

    解的通俗描述:

    对应小的乘大的,大的乘小的,得到的向量积最小。

    证明:

    1. 重定义a的逆序
      依据数组b来定义数组a的逆序,假设有a,b对应位置上的两对数a_{i},a_{j}b_{i},b_{j},如果有b_{i}<b_{j}a_{i}>a_{j},或者b_{i}>b_{j}a_{i}<a_{j},则称a_{i},a_{j}为一对逆序,否则不为逆序。
    2. 证明单调
      假设现在有 b_{i}<b_{j}a_{i}<a_{j}i=0,1,\cdots,n-1j=0,1,\cdots,n-1i\ne j
      则向量积S_{1}=\sum_{k=0,k\ne i,k\ne j}^{n-1}a_{k}\cdot b_{k}+a_{i}\cdot b_{i}+a_{j}\cdot b_{j}
      若现在交换a_{i},a_{j}的位置,即数组a增加了一对逆序。
      向量积变为S_{2}=\sum_{k=0,k\ne i,k\ne j}^{n-1}a_{k}\cdot b_{k}+a_{i}\cdot b_{j}+a_{j}\cdot b_{i}
      可以证得a_{i}\cdot b_{i}+a_{j}\cdot b_{j}>a_{i}\cdot b_{j}+a_{j}\cdot b_{i}(这个简单证明放在第3点)
      S_{1}>S_{2}
      所以结论是:保持b不变,a每增加一对逆序,a,b的向量积就一定会变小,两者呈反比。

    所以当a是相对于b的全逆序时,a,b的向量积最小。相反的,当a是相对于b的全顺序时,a,b的向量积最大。

    1. 下面证明a_{i}\cdot b_{i}+a_{j}\cdot b_{j}>a_{i}\cdot b_{j}+a_{j}\cdot b_{i}
      因为b_{i}<b_{j}a_{i}<a_{j},所以b_{i}-b_{j}<0a_{i}-a_{j}<0
      (a_{i}-a_{j})\cdot(b_{i}-b_{j})>0
      对上式展开移项即可得到要证明的结论。

    相关文章

      网友评论

          本文标题:最小向量积

          本文链接:https://www.haomeiwen.com/subject/girwxqtx.html