这不是解题报告,也不是教程,只是我自己内心的一些小感悟罢了。
今天做了一道题。题目的大致意思是:有一个n*n的矩阵,每个元素都是整数。两个人轮流取一行或一列。规则如下:如果最后一行加起来为偶数,则可以取走最后一行,如果最后一列加起来为偶数,则可以取走最后一列,如果都不是偶数,则不能取。两个人轮流取,每次只能取一行或一列。如果谁不能取了或者整个矩阵都被取完了,那这个认输了。现在要求第一个人能否必胜。
怎么样才算必胜呢?= = 我在这方面被坑惨了,大概是学傻了。
想想:下棋的时候,我们是怎么样的呢?
大部分的人都是走一步看一步,稍微好一点的人会想着后面的三四步该怎么走。这样的人一般只想着自己怎么走,目光较为短浅,以获得小小的利益,比方说吃掉对方的一兵一卒为乐,我们称这种人为业余者。
而有的人,会想如果我走某一步,对方会怎么走,然后我又要采取什么样的策略,尽管棋盘上还是当前的这一小步,但是在心里已经想到了十万八千里外。这样的人心里不仅仅有自己怎么走,更多的想到了对方的想法,然后采取最佳的策略取应付,我们称他们为专业人员。
然而还有一些人,不仅有第二种人的想法。甚至他们可以从最后的结果,一步一步回退到当前的状态。最后的结果当然是赢棋,那么前一步对方是怎么走我又是怎么走才造成我赢了呢,对方又是怎么走才让我走这一步的呢?这样一步一步往回推,最后推到了目前棋盘上的情况,这样,他们知道该怎么走了,也就是获得了到成功的一条最佳路径,直接按着这个路径走就可以赢棋了。
这种人有没有????不好意思我现在还没有碰上。但是有一样东西做到了,那就是计算机。。。计算机又是怎么实现的呢?当然是凭借高效的算法和超高的运算速度。那用的是什么样的高效算法呢?这就要让我们了解一些博弈的巨大魅力了。
这道题的真谛所在,不是不管我怎么下,我都能赢,这样和瞎子下棋有什么区别呢?= =很抱歉我就把计算机当瞎子了。
这道题的真谛是:不管对方怎么下,我都能赢,这样才叫必胜。不管对方怎么走,我都有很好的策略去赢。
那怎么做到呢,从赢的那个状态推起,看每一个点的输赢情况以及是怎么走到这一个点的。然后推出能否必胜。具体请大家狠补博弈论,太水的我也要去好好啃博弈论了= =!。
解题报告之后补上。
原文地址:http://www.cnblogs.com/dzkang2011/p/boyi_1.html