读侦探小说,看侦探电影的一个乐趣就是自己找到凶手。我发现一个定律,不知道是否前人总结过:当小说进行到三分之二的时候,大致所有人物都已经登场;你要探索的问题的答案也必然出现了。这本书当然也符合这个定律。不过,因为重点不同,我竟然没有想去寻找答案。可能因为答案在这本小书中的确不重要吧。
毕竟是科学家写的小说,一定要读出点科学味儿。可书中介绍的计算机科学的概念与算法,真的是一点儿也不烧脑,一点儿也不抽象。向好里说,就是大道至简,藏锋于拙。如果直接讲出来,这些介绍只能算时启蒙读物,而且是比较基础的那种。书中提到的数据结构,从数组到链表,从二叉树到堆。的确是最基础的编程主题。可是在编程过程中,将真实的世界,用这些结构表示出来,不正是算法的要义吗?
书中对算法的定义很简单:目标就是要寻找的那条数据;搜索空间就是探测目标的所有可能性;搜索算法就是用于进行搜索的一组具体步骤或指令。所以无论是案件的分析和进行,都是为完成这个定义的目标而运行的。
“高效算法的关键在于有用的信息”。加入更多的信息,才会有更多更优的处理方法。而我们所面临的问题,就是找到目标,手段就是搜索,有了这种对生活的抽象,才会引出算法的主题。这本书的主题,其实是告诉我们如何抽象,如何去解决问题的。当你将生活的目标定义出来了,你的行动就成为搜索最佳路径了。于是各种算法,就可能帮助你去完成这个目标。无法是简单还是复杂,有了这个想法,你的行动思路可能会不一样吧。
另外,书中的人名也很有些特别,像runtime, socks, notation,loop,lambda... 在编程界可谓是大名顶顶。让人感觉像是来到了一个问题现场,别有一些滋味。这些命名似乎另有深意,不及细查。