排序列表的最小换位数


15

在尝试设计自己的排序算法时,我正在寻找可以与之进行比较的最佳基准。对于元素的未排序的顺序一个和排序顺序乙,什么是计算换位的最优数量得到一种有效的方式一至乙?

换位定义为切换列表中2个元素的位置,例如

1 2 4 3

有一个变调(变调4和3)

1 2 3 4

就像是

1 7 2 5 9 6

需要4个换位(7,2),(7,6),(6,5),(9,7)

更新(9/7/11):问题更改为使用“换位”而不是“掉期”来指代不相邻的交易所。


如果您可以交换邻居该怎么办?如何确定最小交换次数?

Answers:


23

如果你只处理的排列元素,那么你就需要确切ñ - Ç (π )掉期,其中Ç (π )是在周期数不相交的周期分解的π。因为这个距离是双向不变,转化π成σ(或甲成乙,或相反地)需要ñ - Ç (σ - 1 ○ π )这样移动。ñn−c(π)C(π)ππσ一种乙ñ-C(σ-1个∘π)


尽管很久以前对此进行了投票,但今天它还是点击了。就像魔方,对:D?
— sova 2012年

11

交换距离也可以等距地嵌入到欧几里得空间中。对于每个字符串s,构造一个矩阵,如果i在j之前出现,则M i j = 1,否则为零。然后弗罗贝尼乌斯距离‖ 中号(小号)- 中号(小号')‖ 2是交换距离d (小号,š ')。(摘自Graham Cormode的幻灯片)。不像安东尼的回答那么优雅,但是很容易计算。中号(s)中号一世Ĵ=1个一世Ĵ‖中号(s)-中号(s′)‖2d(s,s′)

更新:请参阅Oleksandr的评论


在我看来,在格雷厄姆的陈述中,它们表示频谱范数(),而不是弗罗贝尼乌斯范数(“ A ” F)。‖一种‖2‖一种‖F
— Oleksandr Bondarenko

尽管如果您只想计算差异,那么frobenius范数的平方应该正确吗?
— Suresh Venkat

这当然是0-1矩阵的汉明距离
— Suresh Venkat

2

Oleksandr:我想您将“交换”解释为“交换两个相邻元素”?
— Anthony Labarre 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.