算法的计算复杂性

Posted Pam

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法的计算复杂性相关的知识,希望对你有一定的参考价值。

计算复杂度

  计算复杂度由算法决定,一个数学问题通常可同时有多个解决算法,而计算复杂度可表述算法的复杂程度,在密码设计和密码分析中具有重要作用。计算复杂性理论不仅反映密码破译的固有困难性,评测密码算法对抗密码破译的实际能力,还能为不同密码算法实现难度的分析与比较提供了方法。

  算法复杂度一般由执行算法所需要的计算时间T(时间复杂度)和计算空间S(空间复杂度)来度量,它们通常可以表示成输入规模$\\lambda $的函数。在分析算法的复杂度时,通常用${\\rm O},\\tilde {\\rm O},o,\\Theta $四种方式表示它们之间的渐近程度。

  算法的复杂度通常指时间复杂度,通常分为以下 3类:多项式时间算法复杂度亚指数时间算法复杂度指数时间算法复杂度,三个算法时间复杂度是递增的。若存在常数$a,{n_0}$,当$a > {n_0}$时,满足,则称算法的时间复杂度为$T(n) < af(\\lambda )$。

多项式时间算法

  假设$\\lambda $是输入规模,k 为常数,如果执行此算法的时间复杂度为${\\rm O}({\\lambda ^k})$,则称该算法是一个多项式时间算法

计算复杂度理论中,多项式时间算法被认为是简单的算法。对于一个问题,如果存在多项式时间的解决算法,那么该问题不是一个计算困难问题。

指数时间算法

  如果执行此算法的时间复杂度为${\\rm O}({t^{f(\\lambda )}})$,其中 t 为大于1的常数,此时,若 ${f(\\lambda )}$是关于$\\lambda $的一个多项式函数,则称该算法为指数时间算法。

若解决该问题的算法均是指数时间的算法,那么该问题是计算困难问题。

亚指数时间算法

  若${f(\\lambda )}$是一个大于常数小于$\\lambda $的线性多项式的函数,则称该算法为亚指数时间算法。

介于多项式时间算法和指数时间算法之间的是亚指数时间算法,本文所涉及到的近似最大公因子问题和错误学习问题,目前还不存在相应的亚指数时间算法用于求解上述两类问题。

可忽略函数

可忽略函数是一个极小量,在计算复杂度理论和全同态加密的安全性定义中应用广泛。

 

作者: Pam

出处: https://www.cnblogs.com/pam-sh/>

关于作者:网安在读

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 如有问题, 可邮件(mir_soh@163.com)咨询.

以上是关于算法的计算复杂性的主要内容,如果未能解决你的问题,请参考以下文章

计算(算法)的结构方向与复杂性

时间复杂度及其计算

如何计算时间复杂度

用啥软件来计算算法的复杂度??

算法复杂性分界函数—多项式

如何计算C++的复杂度?