zoukankan      html  css  js  c++  java
  • 《软件可靠性方法》笔记(一)---第二章 预备知识

      时间:2016.11.12; 地点:南京江宁实验室; 状态:迷茫的研一; 

      为什么会读到这本书?导师推荐的。可以说第一开始听到这本书名时完全是一脸蒙蔽,就像选本科毕设题目时是一样的。。。就是在上半年当老师告诉我他是做形式化的,我一度以为我特么的难道联系到自动化学院了?我可是一门心思向计算机的。后来直到暑假在家闲的发慌翻翻本科时候的软件课本书时,居然看到了一章讲形式化的。。。蜜汁尴尬,毕竟当年这门课最后我得了优。咳咳,扯远了。这本书还是蛮适合刚接触形式化的人看的,但是得有一定的数学功底(所以说我一开始完全看不懂)。

      写这系列博客的目的,第一遍读完这本书后感觉还是有很多知识点没吃透,而且老师一再提到这本书的重要性,所以现在打算利用一周的时间再次回顾下这本书。老师例会时曾经要求我能脱离书去讲看到了什么,所以利用这系列博文让自己对这本书也是对形式化有一个基本的认识以便后期看相关的论文。

      这本书的第一章没什么好说的,就是介绍形式化方法,自己看看就可以了。第二章离散、数据结构的知识考研的时候都看过了,所以略讲。重点是第三章,这是整本书的基础。

    第二章 预备知识

      本章中的集合表示法(离散数学)、图(数据结构)、字符串(编译原理)的知识,都是本科时候学过的,包括计算复杂性在算法设计中也学过。所以基本就是复习以前的知识。这里我想介绍的只有可计算性和计算复杂性。

    1.可计算性

      我们如何知道一个问题是可以计算的?所有的问题都可以计算吗?存不存在通用的计算模型?这些都是理论计算机科学中的问题。在理论计算科学中利用一种只有四条语句的程序语言将其与可计算等价。如此可计算问题就可以等价为能否用这种语言写出来。理论计算机科学已经证明了可计算的问题的规模是等价于自然数集,可是全部的问题是实数集的,这就意味着存在不可以被计算机计算的问题。图灵提出的Turing机,可以与上面提到的程序等价,也就说明图灵机是解决所有的可计算问题的通用机。

      本章介绍了图灵机,但是在后面完全没用到啊,它只是问了后面的计算复杂度做引子,所以可以简单看下,如果想深入学习可以看《可计算性与计算复杂性导引》这本书。

    2.计算复杂度

      算法:求解一个问题需要遵循的、被清楚指定的简单指令集合。

      算法的复杂度:估计一个算法所需要消耗的时间或者空间的度量标准。

      算法的复杂性包括:时间复杂度和空间复杂度,确定或不确定的执行模型。利用图灵机可以讲时间复杂度等价为图灵机的执行步数(图灵机每次执行只消耗一个时间单位)。而空间复杂度则是图灵机纸条的长度。

      复杂度中的定义:

      ① O(f(N))如果存在两个正常数c,c0使得当 N>=c 时有T( n ) <= O(f(N)) 

      ②Ω(f(N))  如果存在两个正常数c,c0使得当 N>=c 时有T(n)<= Ω(f(N))

      ③theta(f(N))  T(N) = theta(f(N)) 当且仅当T(N) = O(f(N))  和 T(n)= Ω(f(N))

      ④o(f(N)) T( n ) 的增长率小于 o(f(N))

      

       其中O(f(N))表示最坏情况下的复杂度,注意O(f(N))不确定,例如N^2 = O(N^2) 而N^2 = O(N^3)也是正确的。因为O这是定义了T(n)的复杂度小于O(f(n));在复杂度中,最重要的是最高阶指数形式,并且一般舍去系数。

      

      主要的复杂度类:

      log --- 复杂度为O(logn)的问题

      polylog----复杂度为O(P(logn))的问题

      线性---复杂度为O(n)的问题

      多项式---复杂度为O(P(n))的问题

      指数---复杂度为O(2^P(n))的问题

      二重指数-----复杂度为O(2^2^P(n))的问题

     

      确定性与非确定性:确定性复杂度是指执行模型中每个状态只有一个后继选择。而非确定的模型运行在继续执行的路径中作出非确定选择,就是说在一个状态上可以有多个后继路径选择。

      好了接下来就是比较重要(好用来装逼)的定义了,考虑了上述三种元素的复杂度类:

      ①NL 非确定对数空间,很高效的算法;

      ②P 确定多项式时间,这是一种高效的算法,特别是多项式次数较低时;

      ③NP 非确定多项式时间,这类问题存在的问题是当将非确定转换为确定的时候会引起时间上的指数级爆炸,但是很多这类问题可以使用启发式的解决方法,其中机器学习中的很多技术就是解决NP问题的;

      ④PSPACE 多项式空间;

      ⑤EXPTIME 确定性指数时间,只能用到小规模问题上;

      ⑥NONELEMENTARY 这一类的问题被认为非常非常之难解。但是这还是可计算的问题,在可计算理论中存在不可解的问题。

      

      

  • 相关阅读:
    centos7物理机a start job is running for dev-mapper-centosx2dhome.device
    jenkins pipeline流水线
    nginx 加载慢 负载均衡不均衡
    山田预发环境发布脚本
    prometheus 监控容器
    maven私服安装使用
    日志清理
    ERROR 1046 (3D000) at line 1: No database selected
    网络工程学习经典书籍推荐
    每日一句
  • 原文地址:https://www.cnblogs.com/darkworker/p/6056573.html
Copyright © 2011-2022 走看看