Python数据结构与算法_概论

目录

          • 《未来简史》 尤瓦尔·赫拉利
          • 问题
          • 问题的分类
          • 数学:解决问题的终极工具
          • 希尔伯特命题
          • 关于计算的数学模型
          • 哥德巴赫猜想
          • 计算机是数学家一次失败思考的产物
          • 图灵机
          • 世界上最早的算法
          • 欧几里得算法 《几何原本》
          • 计算复杂性
          • 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 抽象数据类型、
      • 对数据实现逻辑层次和物理层次的分离,可以定义复杂的数据模型来解决问题,而不需要立即考虑此模型如何实现。

你可能感兴趣的:(python)