目录

  • 《未来简史》 尤瓦尔·赫拉利
  • 问题
  • 问题的分类
  • 数学:解决问题的终极工具
  • 希尔伯特命题
  • 关于计算的数学模型
  • 哥德巴赫猜想
  • 计算机是数学家一次失败思考的产物
  • 图灵机
  • 世界上最早的算法
  • 欧几里得算法 《几何原本》
  • 计算复杂性
  • NPC问题
  • 研究本质
  • 突破计算的极限
  • 抽象 和 实现
  • 清晰高效的表达算法


《未来简史》 尤瓦尔·赫拉利
  • 生命活动是数据流的传输及处理算法,人类的智慧和自由意识也无法例外
问题

人们在生活、生产、学习、探索、创造过程中遇到的未知的事物

问题的分类
  • What 面向判断与分类——>通过树状的判定和分支解决
  • Why 面向求因和证明——>通过有限的公式序列来解决
  • How 面向过程和构建——>通过算法流程来解决
  • 问题解决之道
    感觉、经验——>占卜、求神——>逻辑、数学、实验——>工程、计算——>模型、模拟、仿真——>哲学
数学:解决问题的终极工具
  • 清晰明确的符号表述体系
  • 严密确定的推理系统
希尔伯特命题

为解决数学本身的可检验性问题,20世纪20年代,大数学家希尔伯特提出“能否找到一种基于有穷观点能行方法,来判定任何一个数学命题的真假”

关于计算的数学模型

20世纪30年代,关于计算的数学模型

  • 哥德尔克莱尼递归函数模型
  • 丘奇Lambda演算模型
  • 波斯特Post机模型
  • 图灵图灵机模型

最终证明,希尔伯特的计划是无法实现的,因为总有一些数学问题的真假是无法被证明。

哥德巴赫猜想

任一大于2的整数都可写成三个质数之和

哥德巴赫1742年给欧拉的信中提出,寻求欧拉的答案

  • 常见哥德巴赫猜想
  • 强哥德巴赫猜想(欧拉版哥德巴赫猜想):任一大于2的偶数都可写成两个质数之和

1966年陈景润证明了"1+2"成立,即"任一充分大的偶数都可以表示成二个素数的和,或是一个素数和一个半素数的和"。

  • 弱哥德巴赫猜想:任何一个大于7的奇数都能被表示成三个奇质数的和

2013年5月,巴黎高等师范学院研究员哈洛德·贺欧夫各特发表了两篇论文,宣布彻底证明了弱哥德巴赫猜想

计算机是数学家一次失败思考的产物
图灵机

1936年, Alan Turing提出一种抽象的计算模型图灵机Turing Machine , 基本思想是用机器模拟人们用纸笔进行数学运算的过程

Visual Turing 图灵机模拟软件

世界上最早的算法
欧几里得算法 《几何原本》
  • 辗转相除法
计算复杂性

一些问题的解决会爆炸性的吞噬我们的时间和空间,其可行性相当差,计算复杂性高,例如:哈密顿回路、货郎担问题

哥尼斯堡七桥问题(欧拉)——>图论和几何拓扑

在哥尼斯堡的一个公园里,有七座桥将河中两个岛及岛与河岸连接起来,问是否可能从这四块陆地中任一块出发,恰好通过每座桥一次,再回到起点。

哈密顿回路

由指定的起点前往指定的终点,途中经过所有其他节点且只经过一次。

货郎担问题

有n个城市,用1,2,…,n表示,城i,j之间的距离为dij,有一个货郎从城1出发到其他城市一次且仅一次,最后回到城市1,怎样选择行走路线使总路程最短?

NPC问题

NPC问题(Non-deterministic Polynomial Complete):多项式复杂程度的非确定性问题

研究本质
  • 计算复杂性理论研究本质:将各种问题按照其难易程度分类,研究各类问题的难度等级,并不关心解决问题的具体方案
  • 算法的研究本质:在不同的现实资源约束的情况下的不同解决方案,致力于找到效率最高的方案。
突破计算的极限
  • (闲置计算力+空闲智力)
  • 机海战术 SETI@home 利用全球联网计算机共同搜寻地外文明的科学实验计划

社会公众也能通过贡献计算力参与众包,进行科学计算,以形成超大规模的分布式计算。

  • 新型计算技术
  • **光子计算:**用超微透镜代替晶体管,以光信号代替电信号进行计算。
  • DNA计算:以DNA分子和酶的相互作用实现逻辑运算和数据存储,获取较高的计算并行度和存储能力。
  • 量子计算:量子力学态叠加原理,让信息单元处于多种可能性的叠加状态,从而实现指数级别的并行计算,根本上解决最高复杂度的计算问题。
  • 分布式智慧:众包
  • 空闲智力
抽象 和 实现
  • 含义
  • 抽象:为更好的处理机器相关性或独立性,以从逻辑或者物理的不同层次上看待问题和解决方案。
  • 实现:编程是一种实现,是通过一种程序设计语言,将抽象的算法实现为计算机可以执行的代码的过程。
  • 意义
  • 对抽象数据类型可以有多种实现方案
  • 独立于实现的数据模型
  • 让底层开发程序员专注于实现和优化数据处理,而不需要改变数据的使用接口。
  • 让用户专注于用数据接口来进行问题的解决,而无需考虑如何实现这些接口。
  • 通过层层抽象,降低问题解决过程中的复杂度
  • Niklaus Wirth (尼古拉斯·沃斯)
    图灵奖获得者,Pascal语言设计者
  • 算法+数据结构 =程序
  • 相当于物理学中E=mc ^2
清晰高效的表达算法
  • 过程抽象
  • 为了控制问题及问题表达过程中的复杂度,利用抽象来保持问题的“整体感”,而不会陷入到过多的细节中。
  • 要求:对现实问题进行建模时,对算法所要处理的数据要保持与问题本身的一致性,不要有太多与问题无关的细节。
  • 数据抽象
  • ADT 抽象数据类型、
  • 对数据实现逻辑层次和物理层次的分离,可以定义复杂的数据模型来解决问题,而不需要立即考虑此模型如何实现。