• 剪枝


    剪枝:

    最优性剪枝

    可行性剪枝

    迭代搜索:最优性剪枝的变种

    如果我们不确定答案,只知道答案比较小,我们可以从深度为1开始,不停地增加深度到2, 3, ...,直到能到达终点为止.事实上这个方法时间效率上是不如BFS的,但它的好处在于它是深搜,深搜的空间比较小,也不需要储存和判重所有的状态

    对bfs的限制

    用dfs的方法实现

    特征就是可以在原矩阵的基础上改变,节省空间,时间换空间

    剪枝优化原则:

    1.直觉

    2.正确性

    实际应用时要多考虑搜索顺序

    例题:斗地主

    像这种牌肯定是出的越多越好.

    首先考虑的是最暴力的方法,依次枚举上述的各种情况,肯定是稳T.(可以用来做暴力对拍)

    尝试着改变枚举顺序,因为顺子的牌是最多的,每次一旦枚举到顺子就可以大量减少牌的数量,然后按照牌量减的大小 依次枚举四三二一就行了.

    在数据随机下基本上就是能过了的

    然后我们考虑切换枚举顺序,如果先枚举四,三呢?

    因为四和三每种牌都只能有一个,而且特别少,所以肯定是能够枚举的.

    我们注意到至多有7对三/四个,然后每个地方都需要3种情况的枚举,至多有128种情况.

    接下来枚举顺子,顺子最多有4组,而且越多枚举到的可用顺子很少.

    最后枚举单双,事实上单双根本就不用枚举了,直接就能双双,能单单就行了.

    而这里存在的优化空间是在这个四和三带上的,我们不需要确定它们带了哪张牌,那我们就直接记录有多少单和对需要被带就行了,如果最后不可行,就直接退出即可.

    靶形数独

    A*

  • 相关阅读:
    创建类type (底层代码)
    getitem, setitem, delitem (把类实例化成字典的类型)
    类的三种方法(静态方法,类方法,属性方法)
    class(类的使用说明)
    Java泛型
    Java时间操作常用api
    JVM加载class文件的原理机制
    int和Integer区别
    final
    Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
  • 原文地址:https://www.cnblogs.com/lcezych/p/12912503.html
Copyright © 2020-2023  润新知