人工智能学习笔记


1.目标树:

在发现问题解决问题过程中,我们可以建立一棵目标树,目标树表示的是解决问题的具体步骤,分支和循环。

2.深度优先和广度优先:

深度优先:在一支到达终点后,可以选择回溯到之前的分支然后对第二支进行运算直到重点,以此类推,直到找到问题的解答。(列式查找)

广度优先:一层一层的查找数据,直到找到解答或达到最后一层。(层式查找)

注意:1.深度优先相对于广度优先来说,查找的次数更少,故深度优先更加高效。

2.可以通过过滤层来过滤掉不可能的或重复的分支,以提升效率。

3.广度优先空间复杂度大(占用内存多),时间复杂度小,但可以找到最优解(花费较多时间)

深度优先时间复杂度大,空间复杂度小,一般只能找到一个满意解(但可以快速靠近目标)

3.爬山算法和束搜索

爬山算法是深度优先算法的改良

爬山算法:始终关注的是当前位置离目标位置的距离远近在选择分支时,选择离目标更近的那一支,而不是从左到右进入分支。(需要回溯)

束搜索是广度优先的改良

束搜素:在广度优先的基础上,加入束宽(束宽是限制束搜索的参数,即每一层只能取最优的束宽个分支)

4.极大极小值算法和剪枝算法

剪枝算法(α-β算法)是对极大极小值算法的改进,透过反向评估,筛选掉一部分不可能或无用的分支,极大的提高了运算效率。

参考:https://www.zhihu.com/question/27221568

极小极大和剪枝算法曾在IBM开发的国际象棋超级电脑,深蓝(Deep Blue)中被应用,并且两次打败当时的世界国际象棋冠军。

 

下面我用ProcessOn画了一个图用于说明

这是一棵选择树,

在象棋(极大极小值法)中,极大值者总是选择分值最大的选项,极小值者总是选择分值最小的选项,每一层代表一次选择那么:

在计算机运算过程中

假设D=2 ,E=6,F=1,G=9

1.计算机从左到右,当遍历到D时

因为D是由MIN来选择的,因为B是由MAX选择得到的,所以 B<=2,

A是由MAX来选择的所以 A>=2

2.当遍历到F时

因为F=1,所以 C<=1,

因为B<=2 C<=1 且 此时由MAX作出选择,他一定会选择 B这一支,

此时就可以使用剪枝算法,切掉A-C这一支,大大提高效率。

注意:

极大值极小值算法,剪枝算法是针对2者进行博弈的算法,可能拿不到真正的极大值(例如上题中的9),但是通过这个算法可以尽量提高自己分数,降低敌人分数。

 

在运算中,能计算出更深层次(步数)的结果,就能以更高的胜率赢下对手

猜你喜欢

转载自blog.csdn.net/qq_37446649/article/details/80210912