看了一大堆文章实在看不懂,看视频也看不懂,但是看着看着突然顿悟了。这篇文章只讲大概的原理,不讲具体过程。
好了既然会搜这个算法,想必已经知道最大值最小值算法了(不知道就去搜吧)。这里直接讲例子。
如图,你可能会很好奇凭什么就剪那个2和G。是这样的,在搜索过程中,会先搜A,然后搜B,然后搜D,然后回到B再搜E。这其中搜完D后会告诉B,这里最大就是6了,要是之后有比6更大的就不用搜了,因为B要最小值。但是这时候B还不知道E是7,所以会搜E,E什么都没有,继续往下,搜到7。因为E要最大值,意思是再往后面搜不管怎么样E都会选个大于或等于7的,但是E选了大于或等于7的就已经比6大了,所以后面就都不用搜了,2那里就划掉了。实际上是放弃了整个E,但是搜索的时候还是会先搜一下那个7。
再来看那个被剪掉的G,搜索顺序是先从B回到A,然后搜C、E,再回到C再搜G。在B返回A的时候A还不知道C是多少,只知道要找的如果小于B(6)就不用搜了。因为C什么都没有,所以往下搜F,选最大,3,因为C要选最小的,而已经知道有个子节点是3了,所以C肯定小于或等于3,而这也就导致C肯定小于B,A要选最大的,那整个C都不用管了,所以后面也就没必要搜了,所以G以后的(包括G)都剪掉了。
大概就是这么个意思。但愿以后自己看还看得懂。。。