原副标题:「书中Chhatarpur黄金……牌?」:详解关上面向对象体育竞技书刊的恰当采用坐姿
这首诗的意念来自于前段时间出版的两套画册: 《演算法体育竞技》,的确非常有趣,所以写诗跟我们谈谈这两本书和那个热门话题。
世界地图与字典
在我之前写的一首诗中曾经提过,国内现阶段很缺乏体育竞技类的进阶书刊:
要认知那个难题,首先就要了解,面向对象类体育竞技书刊究竟有什么类别。
■ 前段时间在研究的一些体育竞技书刊
我们平庸中类别的书,大概能起著「看异萼就能变成杰出竞赛球手」的作用,近似于「21天专业委员会……打赛事」的水平,就像一个通向体育竞技的「世界地图」。是不是这种的书呢?只能说很多书一开始的确是奔着那个目地去的,但实际呈现出的效果绝大部分都不好。即使这纪传体要求译者保有:
●对绝大部分基础演算法的有条理认知
●对演算法自学方向的有条理认知
● 很高的叙述潜能
●合理的方法论安排潜能
与此同时保有这以下几点的译者实在是寥寥无几。因此不少进阶书刊要不是复本-黏贴,要不是写的比较晦涩,众所周知范例应该是《算法艺术和分子生物体育竞技》……放在现在的话,在我看来这两本书是当年的必修课书刊,肯定无所谓人信,即使这两本书就再次出现了这种的难题:虽然目地是进阶(和提高),但内容过分晦涩,叙述上也泛善可陈,与此同时自学方向也基本上达不到可以照著走的境地。这也是为什么这两本书现阶段基本上不见踪影探讨(原本的是《演算法体育竞技进阶经典之作》——很明显 lrj 薄罗藓也知道究竟哪里出了难题。Nagaur一提,我手里的进阶经典之作还是第三版……)。这纪传体我的推荐自然是《挑战面向对象体育竞技》,需要再次强调的是,这两本书的再次出现是素漾人和的象征,能说现阶段圈子不可能再再次出现那个级别的译者和译者阵容,所以且看且珍惜……
那么,是不是这种的书刊就够了呢?也并不是。如同上面所说的,如果进阶纪传体刊太过晦涩,基本上上就失去了可读性,因此好的「世界地图」书刊肯定不会牵涉到很多困难的演算法。但随着体育竞技的发展(俗称:开卷!),不可能全是用基础演算法就能解决的题目,因此对于很大一部分的球手而言,当他们在问「适合的书刊」的时候,更多问的是「有什么能用来自学各种体育竞技知识点」的书刊。对于这部分球手而言,他们可能已经掌握了基本上的演算法和数据结构,也知道了一些体育竞技中常用、课程中学不到的基础知识,但对于一些较新的、较复杂的体育竞技知识点,则有些不知从何入手。
对于这部分的同学,「字典」类的书刊就比较适合了:这纪传体刊需要尽可能的保有「广度」,能够囊括体育竞技中常见的知识点,能让球手知道哪些东西他是不会、能提高的,哪些知识则可能有着不同的变种和玩法……
这纪传体刊其实同样不多见,即使如果牵涉到广度,一般要求译者保有较深的体育竞技背景,与此同时仍然要求有较好的叙述潜能——从现阶段的体育竞技命题情况来看,其实这两个要求大概是冲突的。
为什么说到那个事呢,是即使《演算法体育竞技》本质上是这种的两套书:通过整整两两本书近 700 页的篇幅尝试覆盖了体育竞技中可能涉及到的绝绝大部分知识点,罗老师作为圈子里较为知名的体育竞技教练,甚至往里面塞进了杜教筛、莫队演算法和 FHQ Treap 这种我以为永远不会在纸质书刊上看到的名词和内容,再看第 2 页还在讲链表,第 18 页就已经在讲单调栈了,恐怕也能看出这两本书更像是一个「体育竞技字典」。从某种意义上来说,这对于读者可能是更好的一种做法,毕竟即使是「字典」,国内仍然没有多少写的非常好的书刊。
与此同时这套书的内容的确相当老练,明确地说,这两本书肯定受到了不少体育竞技球手的帮助,无论是演算法叙述还是实现细节都能看出多年体育竞技经历的影子,不太是那种“只能看看是什么演算法”的书,而是真正能照著写一写的书。从这点来说,这两本书能很好完成「字典」的工作。
■ 不知道该说是内容丰富好还是该说现在的体育竞技球手要学的的确也太多了点好……
被动与主动
回到副标题,「世界地图」类的书刊,恰当的采用坐姿是按部就班的读下去,恐怕是不用专门写诗去讲什么废话的;但对于「字典」类的书刊,恐怕就未必了——绝大部分人对这纪传体刊,反馈的最多的其实是「太难了,看不懂」以及「不知从何下手」。我个人认为,这纪传体刊有两种采用方法:「主动」,以及「被动」。
主动式
主动式适合平时愿意投入较多空闲时间研究演算法的同学。方法非常简单,在书上找一个不会的知识点,开始看。
简单吧?
当然,看了一会儿还是看不明白的话,不能死磕——虽然不能轻言放弃,但效率也非常重要,都是新知识点的话,非常困难的知识点并不一定比简单的知识点的价值高出很多。
看完之后,能适当练习一两题,但不要多练,也不要去找什么「分类练习题」——没意义的。后面转入被动式来自学即可。
被动式
被动式就更简单了:当你遇到没听说过的演算法的时候,翻一翻书。
主动式也会转到那个上面来——一个演算法在没有被你彻底掌握之前,你一定会遇到不记得或者用不上的时候。那个时候就能结合题目仔细研究复习了。
在看完之后,还是找一两题再练习一下。正常来说,重复两至三次,一个小类别的演算法就应该能被掌握了(不行多试几次大概难题也不大)。
题目地话做套题就好,套题的话当然是从简单的开始。一开始放心看解题报告,但练习到一定程度的时候就别看了。更多的细节能看我的还坑着的系列该文:Re:从零开始的面向对象体育竞技:
沉迷与清醒
在《演算法体育竞技》的前言中,罗老师有一段话我觉得写的非常好,摘录如下:
「赛场上的体育竞技题目为了增加迷惑性和考验参赛者的建模潜能,一般不会出模板题,读者需要做大量的练习,才能把知识点和模板代码真正用起来。就像一个剑客,刚学剑的时候,剑是他的身外物;成为高手的时候,剑是他身体的一部分,人剑合一。」
这里需要纠正罗老师的是,出题人一般不会为了「增加迷惑性」而出题,出题的目地有且只有一个:考察球手某方面或某几方面的潜能。当出题人估计难度的时候,永远不会考虑某个知识点是否有可能被某个奖项水平的球手掌握,而是「这道题目那个奖项水平的球手是不是可能做出来」——除了比较基础的演算法之外,出题人默认球手不知道很多「冷门知识点」,但这不代表不要求球手能够给出接近的解法。与此同时出题人对于题目地要求更多是「新颖」,这里的「新颖」能是思路新,也能是解法新,也能是程序上新……
■ 这才是出题常态——之后的该文会讲讲那个故事
总而言之,就算你懂了书上的全部知识点,也不代表你真的能拿某个级别的奖项了。罗老师在书中给出了一个参考表格,我个人建议我们不必参考——就不用因此感到什么压力了:相反,其实如果按照书上的说法,如果表格中的「初级」知识点都真的掌握有条理的话,拿个铜牌感觉还是能的……这也能看出开头的这段话是真的非常重要,与其一味学新的知识点,不如把已有的知识点掌握有条理。不清楚是什么意思的,能试试以下几个题:
排序
(对于刚开始自学的同学来说,能只看前面的部分,即证明 Algorithm 1 的恰当性)
最小生成树
F题
最短路
最后祝我们都能好好利用书刊,真正成为一名杰出的体育竞技球手!