算法的计算复杂性

计算复杂度

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

  算法复杂度一般由执行算法所需要的计算时间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 $的线性多项式的函数,则称该算法为亚指数时间算法。

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

可忽略函数

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

 
posted @ 2021-09-08 16:15  PamShao  阅读(1548)  评论(0编辑  收藏  举报