前言:
这次的回溯算法实在是太有意思了,不过刚刚接触的时候确实不容理解,极小极大策略,αβ枝减看了好几遍才明白整个过程。实现的时候又发现还有细节不明白,想明白之后对于整体的认识又加深了一步。
编码的过程反而没有太大的问题,只有再判断平局的时候,写错了判断的条件,导致没有平局存在,花了点时间调试就解决了。
我的github:
我实现的代码全部贴在我的github中,欢迎大家去参观。
https://github.com/YinWenAtBIT
介绍:
收费公路重建:
一、数学模型:
在X轴上给定N个点,那么N个点之间的每两个点之间的距离为一个距离对,一共有N(N-1)/2对距离。
那么现在给出所有的距离对,求出在X点上的各个点的位置。
二、算法步骤:
1. 根据距离对算出一共有N个点。
2. 先确定一个基准,x1位于原点,最大距离为M,最大点xN在M处。第二距离为m,x(N-1)位于m。
3. 然后在x1到x(N-1)之间,填入还剩的最大的距离,先放在x(N-2)位置,如果满足剩下的距离条件,则删除已经满足的距离,继续往前测试。
4. 如果3中的测试不通过,退回至放下x(N-2)点之前。将该点放在x2位置,再重复整个测试过程,直到得到解,或者得出无解。
三、 图解模拟
根据该书中给出的例子,我们先给定15个距离对,即有6个点。