00概述
ps:无处不在的数据
数据化的科学、技术、工程、商业...
- 问题求解的计算知道
# 什么是问题?
人们在生活、生产、学习、探索、创造过程中会遇到各种未知的事物
# 问题的解决之道
如何从未知到已知===》感觉、经验===》占卜、求神===》数学、实验===》计算、仿真===》哲学
# 为什么是数学?
数学具备清晰明确的符号表述体系
严密的推理系统
但正如科学一样,数学也不是万能的
# 基于有穷观点的能行方法===》抽象计算的模型===》图灵机
由'有限数量'的明确有限指令构成;
指令执行在'有限步骤'后终止;
指令每次执行都总能得到'唯一'结果;
原则上可以由人'单独'采用纸笔完成,而不依靠其他的辅助;
每条指令可以'机械'地被精确执行,而不需要智慧和灵感。
- 图灵机计算模型

# 基本思想
用机器模拟人们用纸笔进行数学运算的过程,但比数值计算更为简单
# 基本概念
在纸上'写上'或'擦除'某个符号;
把'注意力'从纸的一个位置转移向另一个位置;
把每个阶段,要决定下一步动作依赖于:
(a)此人当前所关注的纸上某个位置的符号和
(b)此人当前思维的状态
# 图灵机基本定义
一条无限长的分格纸带,每格可以记录1个符号
一个读写头,可在纸带上左右移动,能读出和擦写格子的字符
一个状态寄存器,记录有限状态中的1个状态
一系列有限的控制规则:
• 某个状态,读入某个字符时:
• 要改写成什么字符
• 要如何移动读写头
• 要改变为什么状态
- 算法和计算复杂性
# 问题的分类
What:是什么?面向判断与分类的问题;
Why:为什么?面向求因与证明的问题;
How:怎么做?面向过程与构建的问题。
'''
用任何一个“有限能行方法”下的计算模型可以解决的问题,都算是“可计算”的
'''
# 解决问题
What===》通过树状的判定分支解决
Why===》可以通过有限的公式序列来解决
How===》可以通过算法流程来解决
# 算法
公元前3世纪,《几何原本》辗转相除法求最大公约数
# 计算复杂度
“基于有穷观点的能行方法” 的“可计算” 概念
仅仅涉及到问题的解决是否能在有限资源内(时间/空间)完成
并不关心具体要花费多少计算步骤或多少存储空间
由于资源(时间/空间)相当有限,对于问题的解决需要考虑其可行性如何
人们发现各种不同的可计算问题,其难易程度是不一样的
有些问题非常容易解决,如基本数值计算;
有些问题的解决程度尚能令人满意,如表达式求值、排序等;
有些问题的解决会爆炸性地吞噬资源,虽有解法,但没什么可行性,如哈密顿回路、货郎担问题等
定义一些衡量指标,对问题的难易程度(所需的执行步骤数/存储空间大小)进行分类,是计算复杂性理论的研究范围
- 突破计算极限
seti@home项目 搜寻外星人
新型计算机技术
电子计算
光子计算
DNA计算
量子计算
突破算法的约束
分布式智慧---众包
人海战术
- 什么是抽象和实现
# 什么是抽象?
# 编程
编程是通过一种程序设计语言,将抽象的算法实现为计算机可以执行的代码的过程
没有算法,编程无从谈起===》算法+数据结构=程序
# 程序设计语言实现算法的基本机制
程序设计语言需要为算法的实现提供实现“过程” 和“数据” 的机制
===》具体表现为“ 控制结构” 和“ 数据类型”
控制结构:顺序处理、分支选择、循环迭代
数据类型:如整数、 字符等
···
- 为什么研究数据结构和算法
```python
为什么要研究和学习算法
首先,学习各种不同问题的解决方案
有助于我们在面对未知问题的时候,能够根据类似问题的解决方案来更好解决
其次,各种算法通常有较大差异
我们可以通过算法分析技术来评判算法本身特性而不仅仅根据实现算法的程序在特定机器和特定数据上运行的表现来评判它即使同一个程序,在不同的运行环境和输入数据的情况下,其表现的差异可能也会很大
在某些情况下,当我们碰到棘手的难题
某些问题解决需要一些折衷的处理方式

浙公网安备 33010602011771号