数组a[],b[]转换过程分析
想求a[]与b[]之间的Kendall tau distance,表面上是将a[]作为标准,期望在inversion函数中运算b[],求b[]以a[]为参照时的distance。但显然这样比较困难。那么如果想在普通标准下通过运算b[],求得a[]与b[]之间的Kendall tau distance,即使用以普通标准做为参照的newb[],则需要:a[]从普通标准上做了哪些变换,就要在b[]上逆向转换回去,得到newb[]。
普通标准中0->0, 1->1,…,i->i,新标准的数组a[]需要映射规则来表示其在普通标准上发生的变化,所以需要ainv[]:
// generate ainv[]
ainv[ a[i] ] = i;
ainv[]表示的是a将普通标准值ainv[i]在新标准中变为了i。
即将b[]还原回普通标准下时,需要将b[]中的值(新标准值b[i])还原为普通标准值(ainv[b[i]]):
// generate newb[]
newb[i] = ainv[ b[i] ];
转换过后的newb[]即以a[]为新标准的可运算数组。
普通标准:
index | 0 | 1 | 2 | 3 | 4 |
---|---|---|---|---|---|