转自网上搜的一篇PPT《AI-Ch02.ppt》,PPT是繁体的,用Google翻译转成简体。这里对这个算法说的最详细简明。
(一).
这个搜寻法只是根据最佳化的评估函数来选择下一个搜寻的节点。当评估函数的准确度愈高,则愈可能找到最佳的节点反之,评估函数可能无作用,甚至可能导至错误的搜寻。它使用一些估计解答成本的测量方式,并设法朝最低成本的方向进行搜寻。
为了使搜寻更精确,因此估计解答成本的测量必须加上到达结束状态的路径成本估计。
以下为使用通用搜寻演算法来描述「最佳解优先搜寻法」的方式:
function BEST-FIRST-SEARCH (问题描述, 评估函数) 传回解答或宣告失败
顺序函数← 依评估函数决定的节点展开顺序
传回GENERAL-SEARCH (问题描述, 顺序函数)
(二)
以井字游戏为例,若电脑是“o”,对手是“x”,且评估函数定义为:
F(x)=同一行及对角线的其他空白个数´1
同一行及对角线的“o”个数´2 Y(X)
Y(X)= 0 若该一行及对角线的“x”个数为0
= –1 若该一行及对角线的“x”个数为1
= 2 若该一行及对角线的“x”个数为4
假设目前的盘面状况如下:
一开始全部都是空格
A1 | A2 | A3 |
A4 | A5 | A6 |
A7 | A8 | A9 |
若由电脑先下,则(´为乘号,以下皆同,这里显示不清楚)
F(A1)=(2+2+2) ´1 + (0+0+0) ´ 2 + (0+0+0) = 6
F(A2)=(2+2) ´1 + (0+0) ´ 2 + (0+0) = 4
F(A3)=(2+2+2) ´1 + (0+0+0) ´ 2 + (0+0+0) = 6
F(A4)=(2+2) ´1 + (0+0) ´ 2 + (0+0) ´ 2 = 4
F(A5)=(2+2+2+2) ´1 + (0+0+0) ´ 2 + (0+0+0) = 8
F(A6)=(2+2) ´1 + (0+0) ´ 2 + (0+0) = 4
F(A7)=(2+2+2) ´1 + (0+0+0) ´ 2 + (0+0+0) = 6
F(A8)=(2+2) ´1 + (0+0) ´ 2 + (0+0) ´ 2 = 4
F(A9)=(2+2+2) ´1 + (0+0+0) ´ 2 + (0+0+0) ´ 2 = 6
因此电脑选择A5;若对手选择A1,则盘面状况如下:
X | A2 | A3 |
A4 | O | A6 |
A7 | A8 | A9 |
依同样的评估函数,可算出
F(A2)=(1+1) ´1 + (1+0) ´ 2 + (-1+0) = 3
F(A3)=(1+1+2) ´1 + (0+1+0) ´ 2 + (-1+0+0) = 5
F(A4)=(1+1) ´1 + (1+0) ´ 2 + (0-1) = 3
F(A6)=(1+2) ´1 + (1+0) ´ 2 + (0+0) = 5
F(A7)=(1+1+2) ´1 + (0+1+0) ´ 2 + (-1+0+0) = 5
F(A8)=(1+2) ´1 + (1+0) ´ 2 + (0+0) = 5
F(A9)=(0+2+2) ´1 + (0+1+0) ´ 2 + (0-1+0) = 5
由此可知,A3、A6、A7、A8 及A9都是不错的选择,假设电脑选择A3;若对手选择A7,则盘面状况如下:
X | A2 | O |
A4 | O | A6 |
X | A8 | A9 |
依同样的评估函数,可算出
F(A2)=(0+1) ´1 + (1+1) ´ 2 + (-1+0) = 4
F(A4)=(0+1) ´1 + (0+1) ´ 2 + (4+0) = 7
F(A6)=(1+1) ´1 + (1+1) ´ 2 + (0+0) = 6
F(A8)=(1+1) ´1 + (0+1) ´ 2 + (-1+0) = 3
F(A9)=(1+0+1) ´1 + (0+1+1) ´ 2 + (-1+0+0) = 5
因此电脑选择A4;若对手选择A6,则盘面状况如下:
X | A2 | O |
O | O | X |
X | A8 | A9 |
依同样的评估函数,可算出
F(A2)=(0+1) ´1 + (1+1) ´ 2 + (-1+0) = 4
F(A8)=(1+1) ´1 + (0+1) ´ 2 + (-1+0) = 3
F(A9)=(1+0+0) ´1 + (0+1+1) ´ 2 + (-1+0-1) = 3
因此电脑选择A2;若对手选择A8,则盘面状况如下:
X | O | O |
O | O | X |
X | X | A9 |
最后电脑选择A9,双方以合局结束。