我下学期要考comp 2210(数据结构),我一直在做暑期作业,这是在网上公布的。到目前为止,我在做作业时没有遇到任何问题。看一下下面的作业4,看看你能不能给我一个提示,告诉我怎么做。请不要提供完整的算法,只提供一种方法。谢谢!
“成本排序”是一种算法,其中值序列必须按升序排列。那就是
一次交换两个值的位置,直到顺序正确为止。每个
交换产生一项费用,其计算方法为交换中涉及的两个值之和。总数
这类费用是互通式立交的费用之和。
例如,假设
序列为{3,2,1}。一种可能
互通式立交系列为
Interchange 1: {3, 1, 2} interchange cost = 0
Interchange 2: {1, 3, 2} interchange cost = 4
Interchange 3: {1, 2, 3} interchange cost = 5,
given a total cost of 9
你要写一个程序,确定安排一个特定的数字序列的最低成本。
编辑:教授不允许暴力。
最佳答案
如果你想给你的教授一个惊喜,你可以使用Simulated Annealing。再说一次,如果你能做到这一点,你可能会跳过一些课程:)。请注意,该算法只给出近似答案。
否则:尝试Backtracking算法,或Branch and Bound。两者都能找到最佳答案。