我的数据结构是路径由城市列表表示。如果,例如,城市如何比较两条路径
A, B, C, D
的可能配置可以是:A, B, D, C
或D, C, A, B
。
我需要两条比较两条路径才能找到这两条路径之间的差异,以这种方式输出此过程时将返回将第二条路径转换为第一条路径所需的交换操作集合。
例如,给定以下路径:
X = {A, B, D, C}
Y = {D, C, A, B}
indexes = {0, 1, 2, 3}
一种可能的方式将路径Y
转变成X
将是该组中的以下互换:{0-2, 1-3}
。
{D, C, A, B} --> [0-2] --> {A, C, D, B} --> [1-3] --> {A, B, D, C}
是否有任何已知(且快速)的算法可以计算这个集合?
路径有多长? BFS(或A *搜索算法)可以做到这一点,但它会花费指数的时间。 – amit
@amit的数量级为2,因此少于1000个元素。 – gliderkite
如果结果存在,可以使用自定义键功能的排序算法来解决(快速)。 – SashaMN