Pascal之父尼古拉斯·沃斯因提出著名公式“算法+数据结构=程序”而荣获1984年计算机领域的最高奖项-图灵奖。通过这个公式,可以发现算法对于程序设计的重要性。然而算法思想的学习异常抽象,而且往往虽然理解了算法的思想却难以应用其解决实际问题。
互联网算法文章现状
互联网的出现让我们获取知识变得比以往任何时候都要便捷,面对海量的信息,甚至经常会出现信息过载的情况。同样,互联网上也有非常多的文章来介绍各种算法。通过阅读互联网介绍算法的部分文章,发现存在以下问题:
(1) 算法文章的质量参差不齐。随着互联网技术的快速发展,进入2.0时代后,让每一位互联网用户都成为了内容的创造者。利用百度搜索引擎输入“算法”后,会出现来自几乎所有互联网用户撰写的文章,虽然搜索引擎本身已经为我们做了一定的筛选和排名,但是受限于算法文章撰写作者水平自身的水平,导致文章质量差异较大。
(2) 算法思想的描述晦涩难懂。算法思想本身是高度抽象,部分算法较为复杂,因此给学习者带来一定的困难。现有文章大多是照搬教材等不同来源的内容,些许的文章增加案例帮助学习者理解,文章的同质化现象较为严重。一个复杂的算法思想需要用简单的语言表达出来,并且能够让学习者理解。做到这一点的前提是文章作者对算法本身有较深的理解,熟悉一定的教学技巧,同时还要了解学习者在学习时的心理,经过各种转化,最后能够用简单的语言表达出来,这所有的一切都需要一定的沉淀和积累才能做到。
(3) 不同算法文章选取的问题背景均不同,读者需要花费较多的时间来了解背景知识。现有的个别文章虽然采用案例的方式帮助读者更好理解算法思想,但是不同算法选取的案例不同,部分案例较为复杂不便于理解,且无法形成算法体系。读者在学习的时候,需要不停切换各种算法问题场景,容易造成算法学习的分散,无法形成聚焦,导致算法学习效率较低。
算法文章撰写思路
为了有效应对上述挑战,提出以下两种方式进行算法学习文章的撰写。
本系列文章选取1到100求和问题,尝试从不同角度加以分析,介绍常见算法思想。1到100求和是一个非常简单的问题,同时也是程序设计语言初学者都会遇到的一个问题,因此该案例的选取具有较强的通用性,读者不必花费太多的时间和精力去了解案例的背景知识,而专注于算法思想本身。一个问题通常有N种解法,针对1到100求和这个问题,从不同角度加以分析,应用不同的算法思想解决这个问题,最终实现“一个问题、多种算法”的学习。
本系列文章由主线和辅线两个部分组成。主线围绕1到100求和问题开展多种算法思想的阐述。辅线将对主线涉及到的一些关键知识点进行补充介绍,帮助读者了解更多的细节。之所以采用主线、辅线两种方式分开的原因在于,该方式能够帮助读者更好的聚焦算法本身,如果读者已经了解并熟悉该部分内容,则可以跳过并继续后续阅读,反之可以阅读辅线文章以帮助其更好的了解细节。
特色和亮点
首次提出了“一个问题、多种算法”的算法学习路径。让读者将主要的时间和精力聚焦在不同算法思想的学习和理解上,最大程度上减少案例背景知识的学习。选取的问题简单、通俗易懂,能够帮助大家快速熟悉背景知识,尽早的投入到算法本身的学习。
从不同角度深入研究和探讨同一个问题,在学习算法的同时,掌握多种分析问题的方法。除了知识的传授之外,更加注重算法能力的培养,帮助读者在掌握算法思想后能够灵活应用其解决实际问题,而不仅仅是停留在知识学习的层面。
如果对本系列文章感兴趣,欢迎持续关注“算法与编程之美”。