V = (|A(1) – B(1)| + |A(2) – B(2)| + ... + |A(N) – B(N)|) + (|B(1) – B(2)| + |B(2) – B(3)| + ... +|B(N-1) – B(N)|)
将公式简单变形就可以推出b[0]=a[0]和b[n-1]为区间[a[n-1],b[n-2](不知道a[n-1]与b[n-2]大小关系)内的任意一个数或者b[n-1]=a[n-1]和b[0]为区间[a[0],b[1]]区间内的任意一个数,而考虑b[i],即要使 |b[i]-a[i]|+|b[i]-b[i+1]|+|b[i-1]-b[i]|的值最小,即在数轴上找一点满足到点a[i],b[i+1],b[i-1]的距离之和最小,显然该点(即b[i])为这在数轴上三个点中间的一个点(即三个数的中位数),由上面的叙述b[0]已知,现在求b[1],我们可以将a[2]后面的数字暂时去掉,可知这时b[2]=a[2],由b[0],b[2],a[1]这时可以求出b[1],同理求b[2]时采用同样的方法处理。*
本文介绍了一种用于寻找序列间距离最小化的算法实现方案。通过分析特定数学模型,该算法能够确定一组数值序列B,使得序列B与序列A之间的距离和序列B内部相邻元素间的距离总和达到最小值。文章提供了完整的C语言实现代码,并详细解释了关键步骤,如如何确定序列B中每个元素的位置,特别是通过计算三个点的中位数来确定最佳位置。
694

被折叠的 条评论
为什么被折叠?



