【发布时间】:2016-05-04 17:47:35
【问题描述】:
有没有办法定量计算两个排列之间的距离?
假设我们有以下两个元素序列:
A = {0, 1, 2, 3}
B = {0, 3, 2, 1}
我可以说排列 B 与 A 不同,因为:
- 我需要 1 交换操作才能将
B转换为A -
B中有 2 个元素,它们的索引与A中的相同元素的索引不同
还有其他方法可以比较和描述这两者之间的区别吗?
主要目标是定义一种算法,该算法能够将第二个排列B 逼近到第一个排列A,这样如果应用此过程的所有步骤,结果将是排列A本身。
但为了做到这一点,我认为最好先定义一个合理的过程,描述B 与A 的差异。
是否有任何已知的算法允许对另一个排列进行逼近?
【问题讨论】:
-
如何定义转换操作?这只是一个循环转变吗?
-
@zaratustra 转换是排列的两个元素之间的交换集。
-
Hamming distance 是否与您的问题有关?
-
@kebs 可能是汉明距离,可能是 Levenshtein distance,OP 甚至可能正在寻找 permutation matrices。要求不明确。
标签: c++ c algorithm permutation