计算模型

性能测试

不同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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Part 1 1. Spark计算模型 1.1 Spark程序模型 首先通过一个简单的实例了解Spark的程序模型...
    ZyZhu阅读 2,334评论 0 1
  • Spark大数据处理:技术、应用与性能优化 第3章 Spark计算模型 创新都是站在巨人的肩膀上产生的,在大数据领...
    Albert陈凯阅读 653评论 0 0
  • 一、实验目的 学习使用 weka 中的常用分类器,完成数据分类任务。 二、实验内容 了解 weka 中 explo...
    yigoh阅读 8,638评论 5 4
  • 我从乡村走到都市 脚下 带着家乡的泥土 历经贫瘠也历经繁华 离家时 春来花未开 离别 母亲 满头华发 渐弯的身躯 ...
    六氣堂阅读 217评论 0 0