《数据结构与算法分析》回溯算法之博弈——三连棋(tic tac toe)人机对战AI设计(αβ枝减)

前言:

      这次的回溯算法实在是太有意思了,不过刚刚接触的时候确实不容理解,极小极大策略,αβ枝减看了好几遍才明白整个过程。实现的时候又发现还有细节不明白,想明白之后对于整体的认识又加深了一步。

编码的过程反而没有太大的问题,只有再判断平局的时候,写错了判断的条件,导致没有平局存在,花了点时间调试就解决了。

我的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个点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值