如何行动

来源:互联网 发布:the thick of it 编辑:程序博客网 时间:2024/05/17 05:11

这个行动其实贯穿着整个解题的过程,比如前一篇的推理.难道我们就是瞎胡的推理一通么?虽然有了推理的方向和最终的目的(量化),但仍在需要一定的行动来完成,或者说的更为通俗一点,就是顺序.但行动的重点放在了信息得到之后,也就是我们已经获得了已知/运算/目标,试图通过一系列的运算序列作用于已知上从而获得目标.那么这个运算序列,就是我们这里说的行动.


我的一个误区也在这里,当面对得到的信息,觉得无从下手,然后便开始了毫无逻辑的随机试探,最后可能能碰对,但大多数时候都是在某处绕圈子


举个题目作为例子,六只箭,三个头朝上,三个头朝下,我们一次只能翻转相邻的两只箭,求我们如何操作就可以把它弄成上下间隔的状态.


我拿到这个题目,一般就晕了.当然,我承认我比较挫的,我就得开始一个一个的实验,可能某次运气好,成功了,我就求解了.如果运气差,就解不出来.


但正确的方法应该是什么?


最完备的方法当然是枚举了.我们把所有可能的操作序列一一列出,按照从小到大的顺序排列,一旦找到满足条件的序列,我们就找到了最少的操作次数.但这样做有缺点,就是实验的次数过多.比如12翻转,我们需要实验几次呢?12,23翻转呢?12,23,34翻转呢?最后的结果很可能是我们实验了N次,但是就是没有答案.


其实最好的方法是先分类,再操作.分类的目的一是为了不会漏掉某些情况,更重要的是为了简化考察情况,当我们把一系列的操作划分为数个等价类,在等价类中的所有操作都是等价的,也就是说我们只需要考察等价类的一种操作即可,这样可以大大的简化我们的操作.


分类的四大标准:

1.行动等价.也就是说,这么若干种不同运算的结果都是一样的,比如我们拿若干木棍拼图,那么这几根木棍都是相同的,没有区别,因此我们可以把这几根木棍的操作等价为一根

2.交换等价.也就是说若干操作交换的结果是一样的.比如等式两边先加后减,和先减后加效果完全相同,那么加减的顺序就可以忽略不计了,两种操作序列可以等价为一种

3.可逆等价.操作有对应的逆操作,二者作用的结果是恢复原状,那么这样的操作我们也可以等价为两种,操作+逆操作对就等价为没有,直接诶忽略

4.状态等价.同样有可能出现这样情况,二者操作序列不同,但是得到相同的问题状态,那么这两种操作序列可以等价,也是简化条件的.


再回过头来看上面的题目.很明显,我们有五种基本操作,分别是12,23,34,45,56翻转,这些翻转明显的有交换等价,也就是先12后23和先23后12结果等价,所以我们在判断状态时就不用关心操作次序问题.再看,12翻转的逆操作还是12翻转,所以我们可以肯定必然不会出现两种同样的操作(他们为逆直接忽略),那么此刻我们的操作序列基本可以锁定在1-5长度的序列,我们就可以一一进行枚举,从小到大就可以判断出最后的结果.


上述的分类,其实也不一定非要你一眼就看出来(那样的话只是简单的题目),我们在分类的时候需要一定程度上的试探,比如我们假定这样的等价,然后举上一两个例子验证,再从数学上(形式上)进行推导证明.也就是说一开始就枚举不是不对,而是我们枚举的时候要想着分类的思路,这样才不至于陷入随意枚举的穷困境地.


当然,如果我们再仔细看,我们就知道了12和56翻转无法加入序列,因为1和6箭头位置已满足,如果做了12翻转,我们必须再12翻转一次,二者互逆,所以我们只用考虑中间的三种操作即可.


看,通过分类操作,我们把一个有无限可能的操作,转变为了5种单独操作,最后简化为了3种操作,基本我们就可以很容易的解决了.这就是分类讨论的优势.


其实上面的四种等价,前三种都比较容易,最难的就是第四种,第四种分为两大类情况,一种是严格意义上的等价,要求问题的状态必须完全相同,这个很好理解,另一种是广泛意义上的等价,就是问题状态对于目标的求解是等价的,就算问题状态不一样.比如有四条链子,虽然我们拆开第一条和第二条这两种问题状态不一样(被拆开的链子不一样),但是对于我们最后进行链子的整合,两种状态没有区别.再比如刚才那道箭头题,初始状态123向上456向下,同123向下456向上并没有本质区别.


我们一开始可能很难完整的得到全部分类情况,那么此时分类又有了一个新的含义,就是划分我们试探的范围.比如我们在已知分类下进行很枚举操作,但是得不到结果,那么我们就知道没必要再在这个等价类下进行操作,这就迫使我们不再重复的进行已经被判定为等价的操作,而是进行新的操作/分类的试探,这一点对于一些很难问题的解答非常有帮助.


比如我们试图用四条直线将平面上九个点连起来,当我们尝试了很多种时,我们就应该了解到继续在该类中进行试探/枚举是没有意义的,因此我们必须跳出啊该分类进行新的操作,于是我们很容易或者很困难的想到了伞形的跨出矩形边界的四条直线,从而求解问题


进行分类的一大优点就是让我们既可以沿着这样的分类不重不漏的解决问题,当无法解决问题时,又可以指导我们不要重复以前的错误,开辟新的分类,这就是我们通常说的跳出框框看问题.有的时候我们试图达到这样的目的,但是如果没有事先按照分类进行处理 的话,我们根本连框框都没有,更谈不上跳出框框了.


当然,如果真的做不出来的话,最后的建议就是休息一下了或者做一下其他题目,这样既可以松弛,又可以培养灵感.恩.解题有的时候也是看运气的,不是么?