计算模型

性能测试

不同DSA性能有好坏优劣之分

To measure is to know.
If you can not measure it,
you can not improve it.
—— Lord Kelvin

1.引入理想、统一、分层次的尺度
2.运用该尺度,以测量DSA的性能

算法分析

两个方面:

  • 正确性: 算法功能与问题要求一致? 数学证明?可不那么简单…
  • 成本: 运行时间 + 所需存储空间如何度量?如何比较?

特定算法 + 不同实例

  • 令TA(n) = 用算法A求解某一问题规模为n的实例,所需的计算成本讨论特定算法A(及其对应的问题)时,简记作T(n)
  • 然而,这已定义仍有问题…
  • 观察:同一问题等规模的不同实例,计算成本不尽相同,甚至有实质差别
  • 例如:在平面上的n个点中,找到所成三角形面积最小的三个点以蛮力计算为例,最坏情况下需枚举所有C(n,3)中组合,但运气好的话…

特定问题 + 不同算法

  • 同一问题通常有多种算法,如何评判其优劣?
  • 实验统计是最直接的方法,但足以准确反映算法的真正效率?
  • 不足够!
    不同的算法,可能更适应于不同 *规模 *的输入
    不同的算法,可能更适应于不同 类型的输入
    同一算法,可能由不同程序猿、用不同程序语言、经不同编译器实现
    同一算法,可能实现并运行于不同的体系结构、操作系统…
  • 为给出 客观的评判,需要抽象出一个理想的平台或模型不再依赖于上述种种具体的因素,从而直接而准确地描述,测量并评价算法

Turing Machine(图灵机模型)

  • **Tape **
    依次均匀地划分为单元格,各格有一字符,默认为 #
  • Alphabet字符的种类有限
  • Head
    总是对准某一单元格,并可读取和改写其中的字符,没经过一个节拍,可转向左侧或右侧的邻格
  • State
    TM总是处于有限种状态中某一种,每经过一个节拍,可(按照规则)转向另一种状态
  • Transition Function:(q, c; d, L/R, p)
    若当前状态为q且当前字符为c,则将当前字符改写为d;转向左侧/右侧的邻格;转入p状态一旦转入特定的状态’h’,则停机

TM : Increase

    原文作者:石头大大
    原文地址: https://www.jianshu.com/p/18720a103366
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞