计算机科学又叫计算的科学 目标是使计算高效
算法正确性: 可执行 有穷性(Hailstone函数) 健壮性(非法输入时保证程序不崩溃)
最重要:使程序运行时间短,占用空间小
算法分析
正确性:分析算法的不变性和单调性(采用数学证明,对数器)
复杂度:包括时间空间,不妨先主要考虑时间 这样我们就需要引入一把尺子作为度量(T(n)一般n越大成本越大,n相同实例不同成本也不尽相同(Hailstone函数))
算法分析原则 :最坏 平均 分摊
对于特定问题不同算法不同编译运行环境成本不同,引入理想的图灵机模型和RAM模型
图灵机模型 :读写头,纸带( 当前状态内容,需要修改的内容 下一个状态 最后复位(作为算法一部分 复位是算法的规范要求 ))
RAM :无限个寄存器,有赋值操作 goto跳转 stop
上述模型把需要计算的时间转化成了运行次数!!!
如果模型是尺子,那么渐进分析 big-O 记号好比尺子的刻度,比起局部小的变化趋势我们更关注大规模长远的变化
T (n)( fn) 存在c大于0,n>>2 ,T (n)<c·fn 因为n比较大,我们处理T (n)表达式是可简单放大化简,忽略系数和较小项得到O(fn)
通过c变化,可使T (n)为实