计算思维通过广义的计算来描述各类自然过程和社会过程,从而解决各个学科的问题。本章主要从“复杂性、抽象、数学建模、仿真、可计算性”等计算思维概念,讨论各种问题的建模方法、基本算法思想以及人工智能等内容。
3.1计算思维
3.1.1计算思维的特征
理论科学、实验科学和计算科学作为科学发现的三大支柱,推动着人类文明进步和科技发展。与三大科学方法对应的是三大科学思维: 理论思维、实验思维和计算思维。
1. 计算工具与思维方式的相互影响
计算机科学家迪科斯彻(Edsger Wybe Dijkstra)说过: “我们使用的工具影响着我们的思维方式和思维习惯,从而也将深刻地影响着我们的思维能力。”计算的发展也影响着人类的思维方式,从最早的结绳计数,发展到目前的电子计算机,人类思维方式发生了相应的改变。如计算生物学改变着生物学家的思维方式; 计算机博弈论改变着经济学家的思维方式; 计算社会科学改变着社会学家的思维方式; 量子计算改变着物理学家的思维方式。计算思维已成为利用计算机求解问题的一个基本思维方法。
2. 计算思维的定义
“计算思维”是美国卡内基梅隆大学(CMU)周以真(Jeannette M. Wing)教授提出的一种理论。周以真教授认为: 计算思维是运用计算机科学的基础概念去求解问题、设计系统和理解人类行为,它涵盖了计算机科学的一系列思维活动。
国际教育技术协会(ISTE)和计算机科学教师协会(CSTA)2011年给计算思维做了一个具可操作性的定义,即计算思维是一个问题解决的过程,该过程包括以下特点:
(1) 拟定问题,并能够利用计算机和其他工具的帮助来解决问题;
(2) 要符合逻辑地组织和分析数据;
(3) 通过抽象,如模型、仿真等,再现数据;
(4) 通过算法思想(一系列有序的步骤),支持自动化的解决方案;
(5) 分析可能的解决方案,找到最有效的方案,并且有效地应用这些方案和资源;
(6) 将该问题的求解过程进行推广,并移植到更广泛的问题中。
3. 计算思维的特征
周以真教授在《计算思维》论文中,提出了以下计算思维的基本特征。
计算思维是人的,不是计算机的思维方式。计算思维是人类求解问题的思维方法,而不是要使人类像计算机那样思考。
计算思维是数学思维和工程思维的相互融合。计算机科学本质上来源于数学思维,但是受计算设备的限制,迫使计算机科学家必须进行工程思考,不能只是数学思考。
计算思维建立在计算过程的能力和限制之上。需要考虑哪些事情人类比计算机做得好?哪些事情计算机比人类做得好?最根本的问题是: 什么是可计算的?
为了有效地求解一个问题,我们可能要进一步问: 一个近似解是否就够了呢?是否允许漏报和误报?计算思维就是通过简化、转换和仿真等方法,把一个看起来困难的问题,重新阐释成一个我们知道怎样解决的问题。
计算思维采用抽象和分解的方法,将一个庞杂的任务分解成一个适合计算机处理的问题。计算思维是选择合适的方式对问题进行建模,使它易于处理。在我们不必理解系统每一个细节的情况下,就能够安全地使用或调整一个大型的复杂系统。
根据以上周以真教授的分析可以看到: 计算思维以设计和构造为特征。计算思维是运用计算机科学的基本概念,进行问题求解、系统设计的一系列思维活动。
3.1.2数学思维的概念
计算思维包含哪些最基本的概念?目前专家们尚无统一的意见。一般来说,计算思维包含数学思维和工程思维两个部分。数学思维的基本概念有复杂性、抽象、模型、算法、数据结构、可计算性、一致性和完备性等。
1. 复杂性
大问题的复杂性包括二义性(如语义理解等)、不确定性(如哲学家就餐问题、混沌问题等)、关联(如操作系统死锁问题、大学教师排课问题等)、指数爆炸(如汉诺塔问题、旅行商问题等)、悖论(如罗素理发师悖论、图灵停机问题等)等概念。计算机科学家迪科斯彻曾经指出“编程的艺术就是处理复杂性的艺术”。