给出两个字谜S和P,当只有两个操作时,从S到P的最小编辑距离是多少:
如果这个问题简化为仅进行第一次操作(即交换两个相邻元素),那么这个问题是“类似于”经典算法问题“最小交换数量用于排序数字数组“(解决方案链接如下)
Sorting a sequence by swapping adjacent elements using minimum swaps
我的意思是“类似于”,因为当两个字谜具有所有不同的字符时:
S: A B C D
P : B C A D
然后我们可以像这样定义P中的排序
P: B C A D
1 2 3 4
然后根据这个顺序,字符串S变为
S: A B C D
3 1 2 4
然后我们可以使用链接中给出的解决方案来解决这个问题。
但是,我有两个问题:
在简化的问题中,我们只能交换两个相邻元素,如果字谜包含重复元素,我们如何获得最小交换次数。例如,
S:C D B C D A A
P:A A C D B C D
如何通过两次交换操作解决完整的问题?
答案 0 :(得分:1)
一种方法是使用http://en.wikipedia.org/wiki/A * _ search_algorithm进行搜索。您的成本函数是从每个元素到可能去那里的最近元素的最短距离之和的一半。一半的原因是绝对理想的互换将在所有点上移动两个元素更接近他们想去的地方。