zoukankan      html  css  js  c++  java
  • 数据结构与算法——0概述

    未来简史(人类简史的作者):人类文明进入数据主义时代。
    人们应该将生命活动理解为数据流的传输及处理算法,人类智慧和自由意识也无法例外。

    电影:超时空接触
    SETI@home:1999年开始,地外文明搜索一直在进行,有个众包的分布式平台利用多余的算力来地外探索,已进行了20多年。

    数学:解决问题的终极工具。

    但是科学不是万能的,数学也不例外。

    伽利略(1564-1642):mathmatics is the alphabet in which god written the universe.

    Donald in mathmagic land. 1959 数学应用的动画片

    问题解决的计算之道

    希尔伯特:能否找到一种基于有穷能行方法,判断任何一个命题的真假

    关于“计算”的数学模型

    1. 递归数学模型
    2. lambda演算模型
    3. 图灵机模型

    研究证明:希尔伯特提出的计划无法实现。但 能行可计算概念成了计算理论的基础,相当于是希尔伯特抽象出的计算的概念。

    计算机是数学家一次失败思考的产物。---无名氏

    算法(HOW)和计算复杂度

    计算复杂度:问本身的特性

    世界上最早的算法:辗转相除法,公元前3世纪,《几何原本》
    1844年,数学家加百利,证明辗转相除法步骤不超过较小的数的5倍。
    相当于开创了计算复杂性的理论。

    计算复杂性:通过研究发现问题的难易程度是不同的。

    • 非常容易:基本数值计算
    • 尚能满意:表达式求值,排序等
    • 无可行性:哈密顿回路等

    同一个问题不同的解决方案,复杂性也会差别很大。而且运行环境不同,编程语言不同,硬件设备不同(服务器,移动端?)都会影响结果。

    新型计算技术:

    • 分布式计算--机海战术
    • 光子计算:能耗低,不需要复杂散热装置
    • DNA分子计算:DNA和酶的相互作用作为映射,极高的并行性
    • 量子计算:利用量子力学态叠加原理,信息单元处于多种可能性的叠加状态(既可以是0,也可以是1,也可以同时是0和1),实现指数级别的并行计算,根本上解决最高复杂度计算问题。

    什么是抽象(abstract)实现(implement)?

    抽象:以汽车为例,汽车可以为反向盘,油门,刹车,档位等(接口),逻辑层次
    实现:如方向盘功能(接口)的内部结构,如油门的标定、喷油量等,物理层次

    抽象:功能级别,如司机看到的是上车,点火,换挡,刹车等,比物理层次更高
    如c语言中分为逻辑行和物理行,一个逻辑行可能包含多个物理行。

    抽象:从物理层次--->逻辑层次,从实现---->接口(interface). 物理层次对应实现,逻辑层次对应接口。

    抽象发生在不同的层次上:如封装后的只有API接口的函数调用形式---过程抽象

    抽象与实现:编程

    算法 + 数据结构 = 程序,图灵奖的获得者,pascal语言设计者---Niklaus wirth

    因此程序语言需要提供“过程”和“数据”的机制:

    • 过程---由语句对应控制结构,如顺序结构,分支判断结构,循环迭代结构
    • 数据类型---数值类型,非数值类型(字符串,布尔类型);基本数据类型及复杂数据类型

    抽象数据类型(ADT):实现了对数据的封装encapsulation
    用户user--->接口interface--->实现implement--->操作operation
    ADT:

    • 逻辑层次,接口设计
    • 物理层次,内部具体实现

    抽象的好,接口使用维护方便,即使内部实现变了,不影响user的使用。

    研究算法的目的

    • 学习解决常见问题的方法
    • 评判问题本身的特性
    • 区分问题是不是有算法的类型(有穷可计算)
    • 不同的解决方案(算法)复杂度不同,学会折中
    • 生活中的实际问题大都可以抽象为典型的数据结构及算法解决。如(最短路径,最小值等)排序查找,社交网络的人物属性计算等。
  • 相关阅读:
    Apache Solrj EmbeddedSolrServer使用
    Apache Solr实现竞价排名
    【Lucene词汇解释】positionIncrement用法
    Zoie:基于Lucene实时的搜索引擎系统
    Solr的创建者介绍Apache Solr : 基于Lucene的可扩展集群搜索服务器
    Solr的自动完成实现方式(第三部分:Suggester方式续)
    Solr的自动完成实现方式(第二部分:Suggester方式)
    【JAVA基础】HashSet、LinkedHashSet、TreeSet使用区别
    Katta:基于Lucene可伸缩分布式实时搜索方案
    老罗Android开发视频教程(Android入门介绍)九集集合
  • 原文地址:https://www.cnblogs.com/Henry-ZHAO/p/13251893.html
Copyright © 2011-2022 走看看