【发布时间】:2016-08-01 08:03:24
【问题描述】:
我遇到了a spreadsheet,它解释了一种对包含二进制数据的矩阵的行和列进行排序的方法,以便最小化连续行和列之间的更改次数。
例如,开头为:
在电子表格的选项卡中描述的 15 个手动步骤后,得到下表:
我想知道:
- 此算法或方法的通用名称是什么?
- 如何将其应用于更大的表(其中 2^n 会溢出...)
- 如何将其推广到非二进制数据,例如使用 Levenshtein 距离?
- 如果有任何代码链接(Excel VBA,Python,...)已经实现了这个(否则我会写它...)
谢谢!
【问题讨论】:
-
这是 {0,1}^n 中的欧几里得哈密顿路径;我认为可能存在常数因子逼近算法,因为 hampath 与 TSP 密切相关(hampath 和 TSP 对于一般图都是 np-hard),并且我们有 TSP 的逼近算法,但不要期望以最佳方式解决它 - 虽然我不完全确定这个特定空间的硬度证明是否存在,如果这是在 P 中,我会感到惊讶。我不知道 VBA 能做什么,所以我不能告诉你是否可以实现近似算法在那里。
-
再看一遍,距离其实不是欧几里得,而是汉明距离;我不知道那个硬度证明或近似算法,但它们可能存在。
-
相关:Gray codes,也可作为 n 元变体。
-
其实我错了;这不是hampath,是TSP不回源,这就是TSP路径问题(文献中可能称为TSPP)。我还可以补充一点,对于非二进制坐标,您的问题正是欧几里得 TSPP;另见this。
-
我不得不说,严格来说,这个“问题”可能不适合 Stack Overflow 格式。我的意思是,它有多个子问题(不鼓励),这些组成问题可以说不是 programming 问题(所以离题),或者太宽泛(正确回答问题需要写太多)。尽管如此,这是一个有趣的问题,看到这个电子表格真是太棒了!
标签: python excel algorithm sorting similarity