算法技术手册
算法,神秘而晦涩的词汇。算法,是计算机科学中最重要同时也是最基础的一环。从开始学习计算机,我们就深知,算法是整个计算机科学的核心。然而直至我们工作数年后,能够真正学好算法的人,却依旧是凤毛麟角。这并不是计算机教育的错,也不是计算机从业人员的错,更不是算法的错。长久以来,算法就像古老的咒语,算法背后高深的数学知识更让人望而生畏。其实,我们始终没有找到一条从理论走向实践的路。
在这里,我们很高兴能向大家介绍本书。它正是能够带领你学好算法的一本不可多得的好书。
本书的三位作者是伍斯特理工学院的教授,其中George T.Heineman毕业于达特茅斯学院和哥伦比亚大学,曾经获得过GE、IBM和AT&T的研究奖金,在软件工程方面有独到的研究。而Gary Pollice曾经供职于Rational Software、Sun等多家巨头,有着丰富的工业界经验,知道如何将学术和工业结合起来。Stanley M.Selkow毕业于卡内基梅隆大学和宾夕法尼亚大学,擅长图论和算法设计。本书由这三位伍斯特理工学院计算机理论专家合著,向我们展示了工业界和学术界对算法的不同看法以及如何高效地将理论和实践相结合。本书搭建了一条真正属于开发者的路。
就像《黑客帝国》里面的Trinity所说的:
“Neo,是这个问题驱使着我们,是这个问题带你来到这儿。”
你知道这个问题,我也是。
作为本书的作者,我们将回答引领你到此的问题:
我能够使用某个算法解决我的问题吗?如果可以,那么怎么实现呢?
你也许并不需要理解一个算法为什么是正确的。如果你需要,那么请看看其他的资料,例如1180页的算法圣经——《算法导论》,作者是Thomas H.Cormen等(2001)。在那本书中你会了解到推论、定理以及证明;你也会从一些练习题和逐步递进的样例中看到算法是如何执行的。也许你会惊奇地发现,在算法导论中你找不到任何的实际代码,仅仅是一些伪代码的片段,伪代码是无数的算法教科书用来阐述算法的高级描述手段。在课堂上,这些教科书是非常重要的,但是在实际软件开发中,它们却起不到应有的作用,因为这些书假定伪代码都能够直接变成实际代码。
我们希望经验丰富的程序员在寻找问题的解决方案时,能够频繁参考本书。作为一名程序员,你每天要解决的问题都能在这里找到解决方案。在软件中,算法是决定成败的关键因素,在这里你能够了解到哪些决定能够改善关键算法的性能,也能够找到适合你的需求和解决方案的实际代码。
所有的算法都有实现,并且都使用测试工具经过仔细测试,以确保其正确性。而且,它们有足够的代码文档,能在这本书的代码库附录中找到它们。我们严格地遵照一系列的原则来设计算法、实现算法,以及编写这本书。如果这些原则对你很有意义,那么这本书也会同样有用。