肯德尔距离(Kendall’s-τ)
肯德尔距离定义为两个序列Order排序的最小交换距离(定义是这样的,但直接理解成物品交换次数结果是一样的,不需要先转换成Order排序,只是转换后代码实现时算法的时间复杂度会变成线性的),用下面的实例进行讲解。
1.初始化序列
给定五个物品{1,2,3,4,5}和两个物品序列
σ
=
(
2
,
1
,
4
,
5
,
3
)
\sigma=(2,1,4,5,3)
σ=(2,1,4,5,3)和
π
=
(
1
,
2
,
3
,
4
,
5
)
\pi=(1,2,3,4,5)
π=(1,2,3,4,5)
2.计算序列的Order
首先可以生成两个序列的Order排序分别为 σ − 1 = ( 2 , 1 , 5 , 4 , 3 ) \sigma^{-1}=(2,1,5,4,3) σ−1=(2,1,5,4,3)和 π − 1 = ( 1 , 2 , 3 , 4 , 5 ) \pi^{-1}=(1,2,3,4,5) π−1=(1,2,3,4,5),其中 σ − 1 \sigma^{-1} σ−1的3号位是5的原因是原本 σ \sigma σ的物品3放在了序列的第五个位置上,后面的 σ − 1 \sigma^{-1} σ−1中出现的4和3原因是一样的。 π − 1 \pi^{-1} π−1中刚好每个物品都在对应位置上,所以是 ( 1 , 2 , 3 , 4 , 5 ) (1,2,3,4,5) (1,2,3,4,5)
3.计算肯德尔距离 D k ( σ , π ) D_k(\sigma,\pi) Dk(σ,π)
将上述
σ
−
1
=
(
2
,
1
,
5
,
3
,
4
)
\sigma^{-1}=(2,1,5,3,4)
σ−1=(2,1,5,3,4)相邻位置的order值两两交换,使其变成
π
−
1
=
(
1
,
2
,
3
,
4
,
5
)
\pi^{-1}=(1,2,3,4,5)
π−1=(1,2,3,4,5),交换用下图示表示。我们将
D
k
(
σ
,
π
)
D_k(\sigma,\pi)
Dk(σ,π)定义为最小的交换次数。如图中需要交换3次,故
D
k
(
σ
,
π
)
=
3
D_k(\sigma,\pi)=3
Dk(σ,π)=3